Whamcloud - gitweb
Revert "b=19427 correct lmm_object_id and reserve fids for fid-on-OST."
[fs/lustre-release.git] / lustre / contrib / packet-lustre.c
1 /* packet-lustre.c 
2  * Lustre 1.6 dissection (http://www.lustre.org/)
3  * Author: Laurent George <george@ocre.cea.fr>
4  * based on packet-agentx.c and packet-afs.c
5  * partially generated by Pidl
6  * 20080903
7  * Wireshark - Network traffic analyzer
8  * By Gerald Combs <gerald@wireshark.org>
9  * Copyright 1999 Gerald Combs
10  *
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #ifdef HAVE_CONFIG_H
27 #include "config.h"
28 #endif
29
30
31 #include <glib.h>
32 #include <string.h>
33 #include <epan/packet.h>
34
35 #include <epan/dissectors/packet-windows-common.h>
36 #include <plugins/lnet/packet-lnet.h>
37
38
39 /* --------------------------------------------------------------------------------------- */
40 /* def and macro to know where we are the the lustre payload */
41 #define LUSTRE_MAGIC_OFFSET 8 
42 #define LUSTRE_MSG_MAGIC_V1 0x0BD00BD0
43 #define LUSTRE_MSG_MAGIC_V2 0x0BD00BD3
44
45 #define LUSTRE_BUFCOUNT_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 0 : 60)
46 #define LUSTRE_BUFCOUNT ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) \
47     ? (tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)) : ((tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF))) )
48 /* remark : BUFLENOFF don't have the same meaning if it's for v1 or v2
49  * v1 : LUSTRE_BUFLEN_OFF = offset buflen[0] - 4 bytes.
50  * v2 : LUSTRE_BUFLEN_OFF = offset buflen[0]
51  */
52 #define LUSTRE_BUFLEN_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 32 : 60)  
53
54 #define LUSTRE_REQ_REC_OFF                     1 /* normal request record offset */
55 #define LUSTRE_REPLY_REC_OFF                   1 /* normal reply record offset */
56
57 #define LUSTRE_DLM_INTENT_IT_OFF               2 /* intent lock it offset */
58 #define LUSTRE_DLM_INTENT_REC_OFF              3 /* intent lock record offset */
59 #define LUSTRE_DLM_LOCKREPLY_OFF               1 /* lockrep offset */
60 #define LUSTRE_DLM_REPLY_REC_OFF               2 /* reply record offset */
61 /* --------------------------------------------------------------------------------------- */
62
63
64 #define LUSTRE_PTLRPC_MSG_VERSION  0x00000003
65 #define LUSTRE_VERSION_MASK 0xffff0000
66 #define LUSTRE_OBD_VERSION  0x00010000
67 #define LUSTRE_MDS_VERSION  0x00020000
68 #define LUSTRE_OST_VERSION  0x00030000
69 #define LUSTRE_DLM_VERSION  0x00040000
70 #define LUSTRE_LOG_VERSION  0x00050000
71 #define LUSTRE_MGS_VERSION  0x00060000
72
73
74
75 #define LOV_MAGIC_V1      0x0BD10BD0
76 #define LOV_MAGIC         LOV_MAGIC_V1
77 #define LOV_MAGIC_JOIN_V1 0x0BD20BD0
78
79 typedef enum {
80   OST_REPLY      =  0,       /* reply ? */
81   OST_GETATTR    =  1,
82   OST_SETATTR    =  2,
83   OST_READ       =  3,
84   OST_WRITE      =  4,
85   OST_CREATE     =  5,
86   OST_DESTROY    =  6,
87   OST_GET_INFO   =  7,
88   OST_CONNECT    =  8,
89   OST_DISCONNECT =  9,
90   OST_PUNCH      = 10,
91   OST_OPEN       = 11,
92   OST_CLOSE      = 12,
93   OST_STATFS     = 13,
94   /*      OST_SAN_READ   = 14,    deprecated */
95   /*      OST_SAN_WRITE  = 15,    deprecated */
96   OST_SYNC       = 16,
97   OST_SET_INFO   = 17,
98   OST_QUOTACHECK = 18,
99   OST_QUOTACTL   = 19,
100   OST_QUOTA_ADJUST_QUNIT = 20,
101   OST_LAST_OPC
102 } ost_cmd_t ;
103
104
105 typedef enum {
106   OBD_PING = 400,
107   OBD_LOG_CANCEL,
108   OBD_QC_CALLBACK,
109   OBD_LAST_OPC
110 } obd_cmd_t;
111 #define OBD_FIRST_OPC OBD_PING
112
113 typedef enum {
114   MDS_GETATTR      = 33,
115   MDS_GETATTR_NAME = 34,
116   MDS_CLOSE        = 35,
117   MDS_REINT        = 36,
118   MDS_READPAGE     = 37,
119   MDS_CONNECT      = 38,
120   MDS_DISCONNECT   = 39,
121   MDS_GETSTATUS    = 40,
122   MDS_STATFS       = 41,
123   MDS_PIN          = 42,
124   MDS_UNPIN        = 43,
125   MDS_SYNC         = 44,
126   MDS_DONE_WRITING = 45,
127   MDS_SET_INFO     = 46,
128   MDS_QUOTACHECK   = 47,
129   MDS_QUOTACTL     = 48,
130   MDS_GETXATTR     = 49,
131   MDS_SETXATTR     = 50,
132   MDS_WRITEPAGE    = 51,
133   MDS_IS_SUBDIR    = 52,
134   MDS_GET_INFO     = 53,
135   MDS_LAST_OPC
136 } mds_cmd_t;
137
138 #define IT_OPEN     0x0001
139 #define IT_CREAT    0x0002
140 #define IT_READDIR  0x0004
141 #define IT_GETATTR  0x0008
142 #define IT_LOOKUP   0x0010
143 #define IT_UNLINK   0x0020
144 #define IT_GETXATTR 0x0040
145 #define IT_EXEC     0x0080
146 #define IT_PIN      0x0100
147
148
149
150 #define MDS_FIRST_OPC MDS_GETATTR  
151 #define LDLM_FIRST_OPC LDLM_ENQUEUE
152
153 typedef enum {
154   REINT_SETATTR  = 1,
155   REINT_CREATE   = 2,
156   REINT_LINK     = 3,
157   REINT_UNLINK   = 4,
158   REINT_RENAME   = 5,
159   REINT_OPEN     = 6,
160   //      REINT_CLOSE    = 7,
161   //      REINT_WRITE    = 8,
162   REINT_MAX
163 } mds_reint_t;
164
165 typedef enum {
166   LDLM_ENQUEUE     = 101,
167   LDLM_CONVERT     = 102,
168   LDLM_CANCEL      = 103,
169   LDLM_BL_CALLBACK = 104,
170   LDLM_CP_CALLBACK = 105,
171   LDLM_GL_CALLBACK = 106,
172   LDLM_LAST_OPC
173 } ldlm_cmd_t;
174 #define LDLM_FIRST_OPC LDLM_ENQUEUE
175
176 #define LDLM_FL_LOCK_CHANGED                      0x000001  
177 #define LDLM_FL_BLOCK_GRANTED                     0x000002  
178 #define LDLM_FL_BLOCK_CONV                        0x000004  
179 #define LDLM_FL_BLOCK_WAIT                        0x000008  
180 #define LDLM_FL_CBPENDING                         0x000010  
181 #define LDLM_FL_AST_SENT                          0x000020  
182 #define LDLM_FL_WAIT_NOREPROC                     0x000040  
183 #define LDLM_FL_CANCEL                            0x000080  
184 #define LDLM_FL_REPLAY                            0x000100  
185 #define LDLM_FL_INTENT_ONLY                       0x000200  
186 #define LDLM_FL_LOCAL_ONLY                        0x000400  
187 #define LDLM_FL_FAILED                            0x000800  
188 #define LDLM_FL_HAS_INTENT                        0x001000  
189 #define LDLM_FL_CANCELING                         0x002000  
190 #define LDLM_FL_LOCAL                             0x004000  
191 #define LDLM_FL_WARN                              0x008000  
192 #define LDLM_FL_DISCARD_DATA                      0x010000  
193 #define LDLM_FL_NO_TIMEOUT                        0x020000  
194 #define LDLM_FL_BLOCK_NOWAIT                      0x040000  
195 #define LDLM_FL_TEST_LOCK                         0x080000  
196 #define LDLM_FL_LVB_READY                         0x100000  
197 #define LDLM_FL_KMS_IGNORE                        0x200000  
198 #define LDLM_FL_NO_LRU                            0x400000  
199 #define LDLM_FL_CANCEL_ON_BLOCK                   0x800000  
200 #define LDLM_FL_CP_REQD                          0x1000000 
201 #define LDLM_FL_CLEANED                          0x2000000 
202 #define LDLM_FL_ATOMIC_CB                        0x4000000 
203 #define LDLM_FL_BL_AST                          0x10000000
204 #define LDLM_FL_BL_DONE                         0x20000000
205 #define LDLM_FL_DENY_ON_CONTENTION              0x40000000
206 #define LDLM_AST_DISCARD_DATA                   0x80000000
207
208
209
210 #define LDLM_ENQUEUE (101)
211 #define LDLM_CONVERT (102)
212 #define LDLM_CANCEL (103)
213 #define LDLM_BL_CALLBACK (104)
214 #define LDLM_CP_CALLBACK (105)
215 #define LDLM_GL_CALLBACK (106)
216 #define LCK_MINMODE (0)
217 #define LCK_EX (1)
218 #define LCK_PW (2)
219 #define LCK_PR (4)
220 #define LCK_CW (8)
221 #define LCK_CR (16)
222 #define LCK_NL (32)
223 #define LCK_GROUP (64)
224 #define LDLM_PLAIN (10)
225 #define LDLM_EXTENT (11)
226 #define LDLM_FLOCK (12)
227 #define LDLM_IBITS (13)
228 //#define MGS_CONNECT (250)
229 #define OBD_PING (400)
230
231 /*
232  * Opcodes for mountconf (mgs and mgc)
233  */
234 typedef enum {
235   MGS_CONNECT = 250,
236   MGS_DISCONNECT,
237   MGS_EXCEPTION,         /* node died, etc. */
238   MGS_TARGET_REG,        /* whenever target starts up */
239   MGS_TARGET_DEL,
240   MGS_SET_INFO,
241   MGS_LAST_OPC
242 } mgs_cmd_t;
243 #define MGS_FIRST_OPC MGS_CONNECT
244
245 /* llog protocol */
246 typedef enum {
247   LLOG_ORIGIN_HANDLE_CREATE       = 501,
248   LLOG_ORIGIN_HANDLE_NEXT_BLOCK   = 502,
249   LLOG_ORIGIN_HANDLE_READ_HEADER  = 503,
250   LLOG_ORIGIN_HANDLE_WRITE_REC    = 504,
251   LLOG_ORIGIN_HANDLE_CLOSE        = 505,
252   LLOG_ORIGIN_CONNECT             = 506,
253   LLOG_CATINFO                    = 507,  /* for lfs catinfo */
254   LLOG_ORIGIN_HANDLE_PREV_BLOCK   = 508,
255   LLOG_ORIGIN_HANDLE_DESTROY      = 509,  /* for destroy llog object*/
256   LLOG_LAST_OPC
257 } llog_cmd_t;
258
259 #define LLOG_FIRST_OPC LLOG_ORIGIN_HANDLE_CREATE
260 /*flag for the LLOG*/
261 #define LLOG_OP_MAGIC 0x10600000
262 #define LLOG_OP_MASK  0xfff00000
263
264 typedef enum {
265   LLOG_PAD_MAGIC   = LLOG_OP_MAGIC | 0x00000,
266   OST_SZ_REC       = LLOG_OP_MAGIC | 0x00f00,
267   OST_RAID1_REC    = LLOG_OP_MAGIC | 0x01000,
268   MDS_UNLINK_REC   = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_UNLINK,
269   MDS_SETATTR_REC  = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_SETATTR,
270   OBD_CFG_REC      = LLOG_OP_MAGIC | 0x20000,
271   PTL_CFG_REC      = LLOG_OP_MAGIC | 0x30000, /* obsolete */
272   LLOG_GEN_REC     = LLOG_OP_MAGIC | 0x40000,
273   LLOG_JOIN_REC    = LLOG_OP_MAGIC | 0x50000, /* obsolete */
274   LLOG_HDR_MAGIC   = LLOG_OP_MAGIC | 0x45539,
275   LLOG_LOGID_MAGIC = LLOG_OP_MAGIC | 0x4553b,
276 } llog_op_type;
277
278 /* LLOG flag */
279 /*defined in lustre/include/lustre/lustre_idl.h*/
280 #define LLOG_F_ZAP_WHEN_EMPTY   0x1
281 #define LLOG_F_IS_CAT           0x2
282 #define LLOG_F_IS_PLAIN         0x4
283
284 #define PTL_RPC_MSG_REQUEST 4711
285 #define PTL_RPC_MSG_ERR 4712
286 #define PTL_RPC_MSG_REPLY 4713
287
288
289 /* Ett declarations */
290 static gint ett_lustre_llog_log_llh_flags = -1 ;
291 static gint ett_lustre = -1;
292 static gint ett_lustre_lustre_handle_cookie = -1;
293 static gint ett_lustre_lustre_msg_v1 = -1;
294 static gint ett_lustre_lustre_handle_v1 = -1;
295 static gint ett_lustre_lustre_msg_v2 = -1;
296 static gint ett_lustre_ptlrpc_body = -1;
297 static gint ett_lustre_lustre_handle_v2 = -1;
298 static gint ett_lustre_obd_connect_data = -1;
299 static gint ett_lustre_lov_mds_md_v1 = -1;
300 static gint ett_lustre_lov_ost_data_v1 = -1;
301 static gint ett_lustre_obd_statfs = -1;
302 static gint ett_lustre_obd_ioobj = -1;
303 static gint ett_lustre_niobuf_remote = -1;
304 static gint ett_lustre_ost_lvb = -1;
305 static gint ett_lustre_ll_fid = -1;
306 static gint ett_lustre_mds_status_req = -1;
307 static gint ett_lustre_mds_body = -1;
308 static gint ett_lustre_obd_quotactl = -1;
309 static gint ett_lustre_obd_dqinfo = -1;
310 static gint ett_lustre_obd_dqblk = -1;
311 static gint ett_lustre_quota_adjust_qunit = -1;
312 static gint ett_lustre_mds_rec_setattr = -1;
313 static gint ett_lustre_mds_rec_create = -1;
314 static gint ett_lustre_mds_rec_link = -1;
315 static gint ett_lustre_mds_rec_unlink = -1;
316 static gint ett_lustre_mds_rec_rename = -1;
317 static gint ett_lustre_lov_desc = -1;
318 static gint ett_lustre_obd_uuid = -1;
319 static gint ett_lustre_ldlm_res_id = -1;
320 static gint ett_lustre_ldlm_extent = -1;
321 static gint ett_lustre_ldlm_inodebits = -1;
322 static gint ett_lustre_ldlm_flock = -1;
323 static gint ett_lustre_ldlm_intent_opc = -1;
324 static gint ett_lustre_ldlm_resource_desc = -1;
325 static gint ett_lustre_ldlm_lock_desc = -1;
326 static gint ett_lustre_ldlm_request = -1;
327 static gint ett_lustre_lustre_handle = -1;
328 static gint ett_lustre_ldlm_reply = -1;
329 static gint ett_lustre_mgs_send_param = -1;
330 static gint ett_lustre_mgs_target_info = -1;
331 static gint ett_lustre_cfg_marker = -1;
332 static gint ett_lustre_llog_catid = -1;
333 static gint ett_lustre_llog_rec_hdr = -1;
334 static gint ett_lustre_llog_logid_rec = -1;
335 static gint ett_lustre_llog_logid = -1;
336 static gint ett_lustre_llog_rec_tail = -1;
337 static gint ett_lustre_lov_mds_md = -1;
338 static gint ett_lustre_llog_create_rec = -1;
339 static gint ett_lustre_llog_orphan_rec = -1;
340 static gint ett_lustre_llog_unlink_rec = -1;
341 static gint ett_lustre_llog_setattr_rec = -1;
342 static gint ett_lustre_llog_size_change_rec = -1;
343 static gint ett_lustre_llog_gen_rec = -1;
344 static gint ett_lustre_llog_log_hdr = -1;
345 static gint ett_lustre_llog_cookie = -1;
346 static gint ett_lustre_llogd_body = -1;
347 static gint ett_lustre_llogd_conn_body = -1;
348 static gint ett_lustre_llog_gen = -1;
349 static gint ett_lustre_obdo = -1;
350 static gint ett_lustre_ost_body = -1;
351 static gint ett_lustre_qunit_data = -1;
352 static gint ett_lustre_qunit_data_old2 = -1;
353 static gint ett_lustre_qunit_data_old = -1;
354 static gint ett_lustre_ldlm_lock_flags = -1 ;
355
356 /* -----------------------------------------------*/
357 /* Header field declarations */
358 static int hf_lustre_ptlrpc_body_pb = -1 ; 
359 static int hf_lustre_mds_body = -1 ; 
360 static int hf_lustre_ost_body = -1 ;
361 static int hf_lustre_obd_statfs = -1 ; 
362 static int hf_lustre_obd_quotactl = -1 ;
363 static int hf_lustre_quota_adjust_qunit = -1 ;
364 static int hf_lustre_extra_padding = -1 ;
365 static int hf_lustre_ldlm_reply = -1 ;
366 static int hf_lustre_ldlm_request = -1 ;
367 static int hf_lustre_mds_rec_create = -1 ; 
368 static int hf_lustre_mds_rec_link = -1 ;
369 static int hf_lustre_mds_rec_unlink = -1 ;
370 static int hf_lustre_obd_uuid = -1 ;
371 static int hf_lustre_obd_connect_data = -1 ;
372 static int hf_lustre_ldlm_intent = -1;
373 static int hf_lustre_obd_ioobj = -1 ;
374 static int hf_lustre_niobuf_remote = -1 ;
375 static int hf_lustre_ost_key = -1 ;
376 static int hf_lustre_nio= -1 ;
377 static int hf_lustre_ost_val= -1;
378 static int hf_lustre_llogd_body = -1; 
379 static int hf_lustre_llogd_log_hdr= -1; 
380 static int hf_lustre_llog_logid_rec =-1 ;
381 static int hf_lustre_llogd_chunk= -1; 
382 static int hf_lustre_llogd_keyword= -1; 
383 static int hf_lustre_llogd_client= -1; 
384 static int hf_lustre_llogd_name= -1; 
385
386 static int hf_lustre_mds_xattr_name = -1; 
387 static int hf_lustre_lov_mds_md_v1= -1; 
388 static int hf_lustre_llog_cookie= -1; 
389 static int hf_lustre_mds_md_data= -1; 
390 static int hf_lustre_mds_reint_opcode= -1; 
391 static int hf_lustre_mds_xattr_eadata = -1;
392
393 static int hf_lustre_reint_name= -1; 
394 static int hf_lustre_reint_old_name= -1; 
395 static int hf_lustre_reint_new_name= -1; 
396
397 static int hf_lustre_mgs_target_info = -1 ; 
398 static int hf_lustre_mgs_send_param = -1;  
399
400 static int hf_lustre_ost_lvb = -1 ; 
401
402 static int hf_lustre_ldlm_fl_lock_changed        = -1;
403 static int hf_lustre_ldlm_fl_block_granted       = -1;
404 static int hf_lustre_ldlm_fl_block_conv          = -1;
405 static int hf_lustre_ldlm_fl_block_wait          = -1;
406 static int hf_lustre_ldlm_fl_cbpending           = -1;
407 static int hf_lustre_ldlm_fl_ast_sent            = -1;
408 static int hf_lustre_ldlm_fl_wait_noreproc       = -1;
409 static int hf_lustre_ldlm_fl_cancel              = -1;
410 static int hf_lustre_ldlm_fl_replay              = -1;
411 static int hf_lustre_ldlm_fl_intent_only         = -1;
412 static int hf_lustre_ldlm_fl_local_only          = -1;
413 static int hf_lustre_ldlm_fl_failed              = -1;
414 static int hf_lustre_ldlm_fl_has_intent          = -1;
415 static int hf_lustre_ldlm_fl_canceling           = -1;
416 static int hf_lustre_ldlm_fl_local               = -1;
417 static int hf_lustre_ldlm_fl_warn                = -1;
418 static int hf_lustre_ldlm_fl_discard_data        = -1;
419 static int hf_lustre_ldlm_fl_no_timeout          = -1;
420 static int hf_lustre_ldlm_fl_block_nowait        = -1;
421 static int hf_lustre_ldlm_fl_test_lock           = -1;
422 static int hf_lustre_ldlm_fl_lvb_ready           = -1;
423 static int hf_lustre_ldlm_fl_kms_ignore          = -1;
424 static int hf_lustre_ldlm_fl_no_lru              = -1;
425 static int hf_lustre_ldlm_fl_cancel_on_block     = -1;
426 static int hf_lustre_ldlm_fl_cp_reqd             = -1;
427 static int hf_lustre_ldlm_fl_cleaned             = -1;
428 static int hf_lustre_ldlm_fl_atomic_cb           = -1;
429 static int hf_lustre_ldlm_fl_bl_ast              = -1;
430 static int hf_lustre_ldlm_fl_bl_done             = -1;
431 static int hf_lustre_ldlm_fl_deny_on_contention  = -1;
432 static int hf_lustre_ldlm_ast_discard_data       = -1;
433
434 static int hf_lustre_mds_body_ctime = -1;
435 static int hf_lustre_mds_body_fid1 = -1;
436 static int hf_lustre_mds_body_nlink = -1;
437 static int hf_lustre_mds_body_flags = -1;
438 static int hf_lustre_mds_body_fsgid = -1;
439 static int hf_lustre_mds_body_mtime = -1;
440 static int hf_lustre_mds_body_uid = -1;
441 static int hf_lustre_mds_body_mode = -1;
442 static int hf_lustre_mds_body_max_cookiesize = -1;
443 static int hf_lustre_mds_body_io_epoch = -1;
444 static int hf_lustre_mds_body_ino = -1;
445 static int hf_lustre_mds_body_fid2 = -1;
446 static int hf_lustre_mds_body_padding_4 = -1;
447 static int hf_lustre_mds_body_aclsize = -1;
448 static int hf_lustre_mds_body_valid = -1;
449 static int hf_lustre_mds_body_generation = -1;
450 static int hf_lustre_mds_body_atime = -1;
451 static int hf_lustre_mds_body_handle = -1;
452 static int hf_lustre_mds_body_max_mdsize = -1;
453 static int hf_lustre_mds_body_rdev = -1;
454 static int hf_lustre_mds_body_blocks = -1;
455 static int hf_lustre_mds_body_fsuid = -1;
456 static int hf_lustre_mds_body_gid = -1;
457 static int hf_lustre_lustre_handle_cookie = -1;
458 static int hf_lustre_mds_body_suppgid = -1;
459 static int hf_lustre_mds_body_size = -1;
460 static int hf_lustre_mds_body_eadatasize = -1;
461 static int hf_lustre_mds_body_capability = -1;
462
463 static int hf_lustre_ptlrpc_body_pb_last_committed = -1;
464 static int hf_lustre_ptlrpc_body_pb_version = -1;
465 static int hf_lustre_lustre_msg_v1_lm_bufcount = -1;
466 static int hf_lustre_obd_ioobj_ioo_id = -1;
467 static int hf_lustre_ptlrpc_body_pb_slv = -1;
468 static int hf_lustre_lustre_msg_v1_lm_handle = -1;
469 static int hf_lustre_ost_lvb_lvb_atime = -1;
470 static int hf_lustre_ptlrpc_body_pb_timeout = -1;
471 static int hf_lustre_obd_statfs_os_bavail = -1;
472 static int hf_lustre_obd_statfs_os_bsize = -1;
473 static int hf_lustre_lustre_msg_v2_lm_repsize = -1;
474 static int hf_lustre_lov_mds_md_v1_lmm_stripe_size = -1;
475 static int hf_lustre_lustre_msg_v1_lm_last_xid = -1;
476 static int hf_lustre_ll_fid_f_type = -1;
477 static int hf_lustre_lustre_msg_v2_lm_cksum = -1;
478 static int hf_lustre_lustre_msg_v2_lm_buflens = -1;
479 static int hf_lustre_lustre_msg_v1_lm_status = -1;
480 static int hf_lustre_lustre_msg_v1_lm_type = -1;
481 static int hf_lustre_niobuf_remote_len = -1;
482 static int hf_lustre_lov_mds_md_v1_lmm_magic = -1;
483 static int hf_lustre_ptlrpc_body_pb_op_flags = -1;
484 static int hf_lustre_ost_lvb_lvb_ctime = -1;
485 static int hf_lustre_ptlrpc_body_pb_type = -1;
486 static int hf_lustre_obd_connect_data_ocd_nllg = -1;
487 static int hf_lustre_obd_connect_data_ocd_nllu = -1;
488 static int hf_lustre_ll_fid_generation = -1;
489 static int hf_lustre_ost_lvb_lvb_mtime = -1;
490 static int hf_lustre_obd_connect_data_ocd_ibits_known = -1;
491 static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1;
492 static int hf_lustre_ptlrpc_body_pb_flags = -1;
493 static int hf_lustre_obd_statfs_os_spare4 = -1;
494 static int hf_lustre_obd_connect_data_ocd_group = -1;
495 static int hf_lustre_lov_ost_data_v1_l_object_gr = -1;
496 static int hf_lustre_lov_mds_md_v1_lmm_object_gr = -1;
497 static int hf_lustre_obd_connect_data_ocd_brw_size = -1;
498 static int hf_lustre_ptlrpc_body_pb_limit = -1;
499 static int hf_lustre_obd_statfs_os_maxbytes = -1;
500 static int hf_lustre_obd_statfs_os_spare5 = -1;
501 static int hf_lustre_lustre_msg_v2_lm_flags = -1;
502 static int hf_lustre_obd_statfs_os_ffree = -1;
503 static int hf_lustre_obd_statfs_os_files = -1;
504 static int hf_lustre_lov_mds_md_v1_lmm_stripe_count = -1;
505 static int hf_lustre_lustre_msg_v1_lm_flags = -1;
506 static int hf_lustre_lustre_msg_v1_lm_last_committed = -1;
507 static int hf_lustre_obd_statfs_os_spare9 = -1;
508 static int hf_lustre_obd_connect_data_ocd_index = -1;
509 static int hf_lustre_opnum = -1;
510 static int hf_lustre_lustre_msg_v1_lm_buflens = -1;
511 static int hf_lustre_obd_statfs_os_spare1 = -1;
512 static int hf_lustre_obd_statfs_os_spare8 = -1;
513 static int hf_lustre_lustre_msg_v1_lm_conn_cnt = -1;
514 static int hf_lustre_ptlrpc_body_pb_transno = -1;
515 static int hf_lustre_ptlrpc_body_pb_service_time = -1;
516 static int hf_lustre_ptlrpc_body_pb_conn_cnt = -1;
517 static int hf_lustre_ptlrpc_body_pb_opc = -1;
518 static int hf_lustre_obd_connect_data_ocd_connect_flags = -1;
519 static int hf_lustre_lov_ost_data_v1_l_object_id = -1;
520 static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1;
521 static int hf_lustre_obd_statfs_os_bfree = -1;
522 static int hf_lustre_obd_connect_data_ocd_version = -1;
523 static int hf_lustre_lov_mds_md_v1_lmm_objects = -1;
524 static int hf_lustre_mds_status_req_flags = -1;
525 static int hf_lustre_obd_statfs_os_namelen = -1;
526 static int hf_lustre_obd_statfs_os_blocks = -1;
527 static int hf_lustre_lustre_msg_v2_lm_secflvr = -1;
528 static int hf_lustre_lustre_msg_v1_lm_transno = -1;
529 static int hf_lustre_lov_mds_md_v1_lmm_pattern = -1;
530 static int hf_lustre_lustre_msg_v1_lm_opc = -1;
531 static int hf_lustre_obd_connect_data_ocd_grant = -1;
532 static int hf_lustre_obd_ioobj_ioo_bufcnt = -1;
533 static int hf_lustre_lustre_msg_v1_lm_version = -1;
534 static int hf_lustre_obd_statfs_os_spare7 = -1;
535 static int hf_lustre_obd_statfs_os_fsid = -1;
536 static int hf_lustre_obd_connect_data_ocd_cksum_types = -1;
537 static int hf_lustre_ost_lvb_lvb_size = -1;
538 static int hf_lustre_obd_statfs_os_type = -1;
539 static int hf_lustre_obd_statfs_os_spare6 = -1;
540 static int hf_lustre_obd_statfs_os_state = -1;
541 static int hf_lustre_obd_statfs_os_spare3 = -1;
542 static int hf_lustre_lustre_msg_v2_lm_magic = -1;
543 static int hf_lustre_lov_mds_md_v1_lmm_object_id = -1;
544 static int hf_lustre_ptlrpc_body_pb_last_seen = -1;
545 static int hf_lustre_obd_ioobj_ioo_type = -1;
546 static int hf_lustre_ptlrpc_body_pb_last_xid = -1;
547 static int hf_lustre_ptlrpc_body_pb_status = -1;
548 static int hf_lustre_niobuf_remote_flags = -1;
549 static int hf_lustre_ll_fid_id = -1;
550 static int hf_lustre_ost_lvb_lvb_blocks = -1;
551 static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1;
552 static int hf_lustre_obd_connect_data_padding1 = -1;
553 static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1;
554 static int hf_lustre_obd_connect_data_padding2 = -1;
555 static int hf_lustre_obd_ioobj_ioo_gr = -1;
556 static int hf_lustre_niobuf_remote_offset=-1;
557 static int hf_lustre_mds_status_req_repbuf = -1;
558 static int hf_lustre_obd_statfs_os_spare2 = -1;
559 static int hf_lustre_lustre_msg_v2_lm_bufcount = -1;
560 static int hf_lustre_ptlrpc_body_pb_handle = -1;
561 static int hf_lustre_obd_connect_data_ocd_transno = -1;
562 static int hf_lustre_lustre_msg_v1_lm_magic = -1;
563 static int hf_lustre_llog_unlink_rec_lur_tail = -1;
564 static int hf_lustre_llog_size_change_rec_lsc_io_epoch = -1;
565 static int hf_lustre_mgs_target_info_mti_flags = -1;
566 static int hf_lustre_ldlm_reply_lock_policy_res1 = -1;
567 static int hf_lustre_mds_rec_link_lk_fsuid = -1;
568 static int hf_lustre_llogd_body_lgd_len = -1;
569 static int hf_lustre_qunit_data_old_qd_id = -1;
570 static int hf_lustre_llog_logid_rec_padding1 = -1;
571 static int hf_lustre_quota_adjust_qunit_padding1 = -1;
572 static int hf_lustre_llog_size_change_rec_lsc_fid = -1;
573 static int hf_lustre_llog_rec_hdr_padding = -1;
574 static int hf_lustre_mds_rec_create_cr_time = -1;
575 static int hf_lustre_mds_rec_create_cr_padding_1 = -1;
576 static int hf_lustre_obdo_o_nlink = -1;
577 static int hf_lustre_mds_rec_rename_rn_suppgid2 = -1;
578 static int hf_lustre_mds_rec_link_lk_padding_4 = -1;
579 static int hf_lustre_mds_rec_link_lk_cap = -1;
580 static int hf_lustre_ldlm_extent_gid = -1;
581 static int hf_lustre_obdo_o_uid = -1;
582 static int hf_lustre_mds_rec_create_cr_padding_5 = -1;
583 static int hf_lustre_obdo_o_valid = -1;
584 static int hf_lustre_ldlm_reply_lock_flags = -1;
585 static int hf_lustre_mds_rec_link_lk_padding_3 = -1;
586 static int hf_lustre_obdo_o_misc = -1;
587 static int hf_lustre_mds_rec_setattr_sa_suppgid = -1;
588 static int hf_lustre_mds_rec_setattr_sa_attr_flags = -1;
589 static int hf_lustre_mds_rec_rename_rn_padding_2 = -1;
590 static int hf_lustre_ldlm_request_lock_handle = -1;
591 static int hf_lustre_llog_logid_lgl_oid = -1;
592 static int hf_lustre_ldlm_inodebits_bits = -1;
593 static int hf_lustre_llog_log_hdr_llh_count = -1;
594 static int hf_lustre_mds_rec_unlink_ul_padding_4 = -1;
595 static int hf_lustre_llog_gen_rec_lgr_tail = -1;
596 static int hf_lustre_llog_catid_lci_padding3 = -1;
597 static int hf_lustre_qunit_data_qd_qunit = -1;
598 static int hf_lustre_mds_rec_unlink_ul_fid1 = -1;
599 static int hf_lustre_llog_setattr_rec_padding = -1;
600 static int hf_lustre_mds_rec_rename_rn_opcode = -1;
601 static int hf_lustre_mds_rec_create_cr_flags = -1;
602 static int hf_lustre_mds_rec_rename_rn_fid1 = -1;
603 static int hf_lustre_llog_cookie_lgc_lgl = -1;
604 static int hf_lustre_obd_quotactl_qc_dqinfo = -1;
605 static int hf_lustre_llog_log_hdr_llh_bitmap = -1;
606 static int hf_lustre_mds_rec_setattr_sa_size = -1;
607 static int hf_lustre_mds_rec_rename_rn_suppgid1 = -1;
608 static int hf_lustre_obd_quotactl_qc_stat = -1;
609 static int hf_lustre_qunit_data_old2_qd_id = -1;
610 static int hf_lustre_llog_logid_rec_padding2 = -1;
611 static int hf_lustre_mds_rec_unlink_ul_mode = -1;
612 static int hf_lustre_llog_orphan_rec_lor_tail = -1;
613 static int hf_lustre_llog_logid_rec_padding5 = -1;
614 static int hf_lustre_mds_rec_create_cr_fsgid = -1;
615 static int hf_lustre_ldlm_intent_opc = -1;
616 static int hf_lustre_llog_rec_hdr_lrh_type = -1;
617 static int hf_lustre_mds_rec_link_lk_fsgid = -1;
618 static int hf_lustre_llog_rec_hdr_lrh_len = -1;
619 static int hf_lustre_llog_setattr_rec_lsr_uid = -1;
620 static int hf_lustre_lov_desc_ld_padding_1 = -1;
621 static int hf_lustre_obdo_o_padding_4 = -1;
622 static int hf_lustre_mgs_target_info_padding = -1;
623 static int hf_lustre_obd_quotactl_qc_dqblk = -1;
624 static int hf_lustre_llogd_conn_body_lgdc_gen = -1;
625 static int hf_lustre_mds_rec_create_cr_padding_2 = -1;
626 static int hf_lustre_mds_rec_setattr_sa_ctime = -1;
627 static int hf_lustre_llog_log_hdr_llh_tail = -1;
628 static int hf_lustre_obdo_o_size = -1;
629 static int hf_lustre_mds_rec_setattr_sa_cap = -1;
630 static int hf_lustre_ldlm_extent_start = -1;
631 static int hf_lustre_mds_rec_unlink_ul_opcode = -1;
632 static int hf_lustre_llog_size_change_rec_lsc_hdr = -1;
633 static int hf_lustre_mds_rec_unlink_ul_time = -1;
634 static int hf_lustre_llog_create_rec_lcr_tail = -1;
635 static int hf_lustre_mds_rec_setattr_sa_mode = -1;
636 static int hf_lustre_llog_logid_lgl_ogr = -1;
637 static int hf_lustre_llog_create_rec_lcr_hdr = -1;
638 static int hf_lustre_llog_cookie_lgc_padding = -1;
639 static int hf_lustre_mds_rec_create_cr_cap = -1;
640 static int hf_lustre_qunit_data_old_qd_type = -1;
641 static int hf_lustre_ldlm_flock_blocking_export = -1;
642 static int hf_lustre_mds_rec_setattr_sa_gid = -1;
643 static int hf_lustre_lov_desc_ld_pattern = -1;
644 static int hf_lustre_qunit_data_qd_id = -1;
645 static int hf_lustre_mgs_target_info_mti_fsname = -1;
646 static int hf_lustre_ldlm_request_lock_flags = -1;
647 static int hf_lustre_obdo_o_mode = -1;
648 static int hf_lustre_mgs_target_info_mti_svname = -1;
649 static int hf_lustre_llogd_body_lgd_logid = -1;
650 static int hf_lustre_mds_rec_create_cr_opcode = -1;
651 static int hf_lustre_llog_log_hdr_llh_size = -1;
652 static int hf_lustre_llog_create_rec_padding = -1;
653 static int hf_lustre_obdo_o_handle = -1;
654 static int hf_lustre_obdo_o_atime = -1;
655 static int hf_lustre_quota_adjust_qunit_qaq_id = -1;
656 static int hf_lustre_mds_rec_rename_rn_fid2 = -1;
657 static int hf_lustre_mds_rec_create_cr_replayfid = -1;
658 static int hf_lustre_ldlm_lock_desc_l_policy_data = -1;
659 static int hf_lustre_mds_rec_link_lk_suppgid1 = -1;
660 static int hf_lustre_obd_quotactl_qc_cmd = -1;
661 static int hf_lustre_mds_rec_rename_rn_padding_3 = -1;
662 static int hf_lustre_qunit_data_padding = -1;
663 static int hf_lustre_quota_adjust_qunit_qaq_flags = -1;
664 static int hf_lustre_ldlm_lock_desc_l_granted_mode = -1;
665 static int hf_lustre_obdo_o_gr = -1;
666 static int hf_lustre_mds_rec_unlink_ul_padding_2 = -1;
667 static int hf_lustre_obdo_o_gid = -1;
668 static int hf_lustre_llog_catid_lci_logid = -1;
669 static int hf_lustre_llog_rec_tail_lrt_index = -1;
670 static int hf_lustre_lov_desc_ld_default_stripe_count = -1;
671 static int hf_lustre_ldlm_resource_desc_lr_padding = -1;
672 static int hf_lustre_cfg_marker_cm_vers = -1;
673 static int hf_lustre_mds_rec_create_cr_fid = -1;
674 static int hf_lustre_llog_unlink_rec_lur_hdr = -1;
675 static int hf_lustre_llogd_body_lgd_index = -1;
676 static int hf_lustre_cfg_marker_cm_tgtname = -1;
677 static int hf_lustre_mds_rec_unlink_ul_padding_1 = -1;
678 static int hf_lustre_mds_rec_unlink_ul_cap = -1;
679 static int hf_lustre_llog_setattr_rec_lsr_ogen = -1;
680 static int hf_lustre_mds_rec_create_cr_padding_3 = -1;
681 static int hf_lustre_llog_logid_rec_lid_hdr = -1;
682 static int hf_lustre_obdo_o_ioepoch = -1;
683 static int hf_lustre_ost_body_oa = -1;
684 static int hf_lustre_llog_logid_rec_padding3 = -1;
685 static int hf_lustre_llog_log_hdr_llh_flags = -1;
686 static int hf_lustre_llog_setattr_rec_lsr_oid = -1;
687 static int hf_lustre_mds_rec_create_cr_mode = -1;
688 static int hf_lustre_llog_size_change_rec_padding = -1;
689 static int hf_lustre_mgs_target_info_mti_config_ver = -1;
690 static int hf_lustre_cfg_marker_cm_createtime = -1;
691 static int hf_lustre_qunit_data_old_qd_count = -1;
692 static int hf_lustre_mds_rec_setattr_sa_uid = -1;
693 static int hf_lustre_llog_catid_lci_padding1 = -1;
694 static int hf_lustre_mds_rec_setattr_sa_atime = -1;
695 static int hf_lustre_lov_desc_ld_active_tgt_count = -1;
696 static int hf_lustre_obdo_o_lcookie = -1;
697 static int hf_lustre_llog_gen_rec_lgr_gen = -1;
698 static int hf_lustre_obdo_o_id = -1;
699 static int hf_lustre_mgs_target_info_mti_uuid = -1;
700 static int hf_lustre_mds_rec_link_lk_padding_1 = -1;
701 static int hf_lustre_llog_rec_hdr_lrh_index = -1;
702 static int hf_lustre_llog_setattr_rec_lsr_hdr = -1;
703 static int hf_lustre_mgs_target_info_mti_stripe_index = -1;
704 static int hf_lustre_llog_gen_conn_cnt = -1;
705 static int hf_lustre_obdo_o_padding_6 = -1;
706 static int hf_lustre_mds_rec_create_cr_suppgid = -1;
707 static int hf_lustre_llog_cookie_lgc_index = -1;
708 static int hf_lustre_lov_desc_ld_uuid = -1;
709 static int hf_lustre_llog_create_rec_lcr_oid = -1;
710 static int hf_lustre_ldlm_reply_lock_desc = -1;
711 static int hf_lustre_lov_desc_ld_padding_0 = -1;
712 static int hf_lustre_llog_unlink_rec_lur_ogen = -1;
713 static int hf_lustre_llog_orphan_rec_lor_hdr = -1;
714 static int hf_lustre_mds_rec_rename_rn_fsuid = -1;
715 static int hf_lustre_cfg_marker_cm_flags = -1;
716 static int hf_lustre_obdo_o_padding_3 = -1;
717 static int hf_lustre_mds_rec_create_cr_fsuid = -1;
718 static int hf_lustre_mds_rec_unlink_ul_fsgid = -1;
719 static int hf_lustre_ldlm_request_lock_desc = -1;
720 static int hf_lustre_mds_rec_unlink_ul_fsuid = -1;
721 static int hf_lustre_mds_rec_link_lk_suppgid2 = -1;
722 static int hf_lustre_llog_orphan_rec_padding = -1;
723 static int hf_lustre_obdo_o_flags = -1;
724 static int hf_lustre_mgs_target_info_mti_params = -1;
725 static int hf_lustre_llog_logid_lgl_ogen = -1;
726 static int hf_lustre_mds_rec_setattr_sa_valid = -1;
727 static int hf_lustre_cfg_marker_cm_comment = -1;
728 static int hf_lustre_llog_unlink_rec_lur_oid = -1;
729 static int hf_lustre_qunit_data_qd_count = -1;
730 static int hf_lustre_mds_rec_rename_rn_padding_1 = -1;
731 static int hf_lustre_obdo_o_mtime = -1;
732 static int hf_lustre_mds_rec_rename_rn_fsgid = -1;
733 static int hf_lustre_mds_rec_rename_rn_cap = -1;
734 static int hf_lustre_obdo_o_blksize = -1;
735 static int hf_lustre_mds_rec_unlink_ul_suppgid = -1;
736 static int hf_lustre_ldlm_res_id_name = -1;
737 static int hf_lustre_mds_rec_link_lk_time = -1;
738 static int hf_lustre_ldlm_reply_lock_handle = -1;
739 static int hf_lustre_mds_rec_unlink_ul_padding_3 = -1;
740 static int hf_lustre_llogd_body_lgd_saved_index = -1;
741 static int hf_lustre_mds_rec_rename_rn_padding_4 = -1;
742 static int hf_lustre_qunit_data_old_qd_isblk = -1;
743 static int hf_lustre_obdo_o_blocks = -1;
744 static int hf_lustre_lov_desc_ld_padding_2 = -1;
745 static int hf_lustre_mds_rec_link_lk_fid2 = -1;
746 static int hf_lustre_llog_logid_rec_lid_tail = -1;
747 static int hf_lustre_obdo_o_grant = -1;
748 static int hf_lustre_obdo_o_padding_2 = -1;
749 static int hf_lustre_quota_adjust_qunit_qaq_iunit_sz = -1;
750 static int hf_lustre_llog_unlink_rec_padding = -1;
751 static int hf_lustre_ldlm_lock_desc_l_req_mode = -1;
752 static int hf_lustre_ldlm_extent_end = -1;
753 static int hf_lustre_llog_gen_rec_lgr_hdr = -1;
754 static int hf_lustre_llog_orphan_rec_lor_ogen = -1;
755 static int hf_lustre_llogd_body_lgd_llh_flags = -1;
756 static int hf_lustre_llog_log_hdr_llh_cat_idx = -1;
757 static int hf_lustre_llog_log_hdr_llh_bitmap_offset=-1;
758 static int hf_lustre_llog_orphan_rec_lor_oid = -1;
759 static int hf_lustre_ldlm_reply_lock_padding = -1;
760 static int hf_lustre_obd_quotactl_qc_id = -1;
761 static int hf_lustre_mds_rec_create_cr_padding_4 = -1;
762 static int hf_lustre_llog_logid_rec_padding4 = -1;
763 static int hf_lustre_mds_rec_link_lk_padding_2 = -1;
764 static int hf_lustre_llog_setattr_rec_lsr_gid = -1;
765 static int hf_lustre_obd_quotactl_qc_type = -1;
766 static int hf_lustre_cfg_marker_padding = -1;
767 static int hf_lustre_mgs_target_info_mti_nids = -1;
768 static int hf_lustre_obdo_o_stripe_idx = -1;
769 static int hf_lustre_llogd_conn_body_lgdc_logid = -1;
770 static int hf_lustre_mds_rec_setattr_sa_fsuid = -1;
771 static int hf_lustre_ldlm_flock_blocking_pid = -1;
772 static int hf_lustre_lov_desc_ld_tgt_count = -1;
773 static int hf_lustre_llogd_body_lgd_cur_offset=-1;
774 static int hf_lustre_llog_create_rec_lcr_ogen = -1;
775 static int hf_lustre_qunit_data_old2_qd_count = -1;
776 static int hf_lustre_qunit_data_old2_qd_flags = -1;
777 static int hf_lustre_ldlm_flock_start = -1;
778 static int hf_lustre_quota_adjust_qunit_qaq_bunit_sz = -1;
779 static int hf_lustre_ldlm_flock_pid = -1;
780 static int hf_lustre_lov_desc_ld_default_stripe_size = -1;
781 static int hf_lustre_mds_rec_setattr_sa_opcode = -1;
782 static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1;
783 static int hf_lustre_mds_rec_link_lk_fid1 = -1;
784 static int hf_lustre_cfg_marker_cm_step = -1;
785 static int hf_lustre_mgs_send_param_mgs_param = -1;
786 static int hf_lustre_llog_create_rec_lcr_fid = -1;
787 static int hf_lustre_lov_desc_ld_default_stripe_offset=-1;
788 static int hf_lustre_ldlm_resource_desc_lr_name = -1;
789 static int hf_lustre_llog_rec_tail_lrt_len = -1;
790 static int hf_lustre_mds_rec_setattr_sa_mtime = -1;
791 static int hf_lustre_llog_log_hdr_llh_timestamp = -1;
792 static int hf_lustre_llog_catid_lci_padding2 = -1;
793 static int hf_lustre_llogd_conn_body_lgdc_ctxt_idx = -1;
794 static int hf_lustre_cfg_marker_cm_canceltime = -1;
795 static int hf_lustre_mgs_target_info_mti_lustre_ver = -1;
796 static int hf_lustre_obdo_o_padding_1 = -1;
797 static int hf_lustre_qunit_data_qd_flags = -1;
798 static int hf_lustre_llog_logid_rec_lid_id = -1;
799 static int hf_lustre_obdo_o_generation = -1;
800 static int hf_lustre_llog_gen_mnt_cnt = -1;
801 static int hf_lustre_llog_size_change_rec_lsc_tail = -1;
802 static int hf_lustre_obdo_o_padding_5 = -1;
803 static int hf_lustre_ldlm_lock_desc_l_resource = -1;
804 static int hf_lustre_mds_rec_rename_rn_time = -1;
805 static int hf_lustre_mds_rec_create_cr_rdev = -1;
806 static int hf_lustre_obdo_o_fid = -1;
807 static int hf_lustre_mds_rec_setattr_sa_fid = -1;
808 static int hf_lustre_ldlm_request_lock_count = -1;
809 static int hf_lustre_ldlm_flock_end = -1;
810 static int hf_lustre_mds_rec_link_lk_opcode = -1;
811 static int hf_lustre_mgs_target_info_mti_nid_count = -1;
812 static int hf_lustre_obdo_o_ctime = -1;
813 static int hf_lustre_ldlm_reply_lock_policy_res2 = -1;
814 static int hf_lustre_llogd_body_lgd_ctxt_idx = -1;
815 static int hf_lustre_mds_rec_unlink_ul_fid2 = -1;
816 static int hf_lustre_lov_desc_ld_qos_maxage = -1;
817 static int hf_lustre_ldlm_resource_desc_lr_type = -1;
818 static int hf_lustre_llog_setattr_rec_lsr_tail = -1;
819 static int hf_lustre_llog_cookie_lgc_subsys = -1;
820 static int hf_lustre_llog_log_hdr_llh_hdr = -1;
821 static int hf_lustre_mds_rec_setattr_sa_fsgid = -1;
822 static int hf_lustre_mds_rec_setattr_sa_padding = -1;
823 static int hf_lustre_llog_log_hdr_llh_reserved = -1;
824
825 /* Header field declarations for field from lustre_user.h*/
826 static int hf_lustre_obd_dqinfo_dqi_valid = -1;
827 static int hf_lustre_obd_dqblk_dqb_isoftlimit = -1;
828 static int hf_lustre_obd_dqblk_dqb_bhardlimit = -1;
829 static int hf_lustre_obd_dqblk_dqb_curspace = -1;
830 static int hf_lustre_obd_dqblk_dqb_itime = -1;
831 static int hf_lustre_obd_dqblk_dqb_valid = -1;
832 static int hf_lustre_obd_dqinfo_dqi_igrace = -1;
833 static int hf_lustre_obd_dqinfo_dqi_bgrace = -1;
834 static int hf_lustre_obd_dqblk_padding = -1;
835 static int hf_lustre_obd_dqblk_dqb_curinodes = -1;
836 static int hf_lustre_obd_dqblk_dqb_bsoftlimit = -1;
837 static int hf_lustre_obd_dqinfo_dqi_flags = -1;
838 static int hf_lustre_obd_dqblk_dqb_btime = -1;
839 static int hf_lustre_obd_dqblk_dqb_ihardlimit = -1;
840 static int hf_lustre_ldlm_intent_opc_open     = -1 ;
841 static int hf_lustre_ldlm_intent_opc_creat    = -1;
842 static int hf_lustre_ldlm_intent_opc_readdir  = -1;
843 static int hf_lustre_ldlm_intent_opc_getattr  = -1;
844 static int hf_lustre_ldlm_intent_opc_lookup   = -1;
845 static int hf_lustre_ldlm_intent_opc_unlink   = -1;
846 static int hf_lustre_ldlm_intent_opc_getxattr = -1;
847 static int hf_lustre_ldlm_intent_opc_exec     = -1;
848 static int hf_lustre_ldlm_intent_opc_pin      = -1;
849 static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1;
850 static int hf_lustre_llog_hdr_llh_flag_is_cat = -1;
851 static int hf_lustre_llog_hdr_llh_flag_is_play = -1;
852 /* --------------------------------------------------------------------*/
853
854
855 /* proto declaration */
856 static gint proto_lustre = -1;
857
858
859
860
861 static int ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) ;
862 static int lustre_dissect_element_ldlm_lock_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_);
863 static int add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) ;
864
865
866 /* ======================================================================== */
867 /*the value_string*/
868 const value_string lustre_ldlm_opcode[] = {
869   { IT_OPEN    ,   "IT_OPEN    "},
870   { IT_CREAT   ,   "IT_CREAT   "},
871   { IT_READDIR ,   "IT_READDIR "},
872   { IT_GETATTR ,   "IT_GETATTR "},
873   { IT_LOOKUP  ,   "IT_LOOKUP  "},
874   { IT_UNLINK  ,   "IT_UNLINK  "},
875   { IT_GETXATTR,   "IT_GETXATTR"},
876   { IT_EXEC    ,   "IT_EXEC    "},
877   { IT_PIN     ,   "IT_PIN     "},
878   { 0, NULL }
879 };
880
881 const value_string lustre_lov_magic[] = {
882   { LOV_MAGIC_V1,   "LOV_MAGIC_V1" },
883   {0, NULL}
884 };
885
886 const value_string lustre_ldlm_flags_vals[] = {
887   {0x000001 , "LDLM_FL_LOCK_CHANGED"},
888   {0x000002 , "LDLM_FL_BLOCK_GRANTED"},
889   {0x000004 , "LDLM_FL_BLOCK_CONV"},
890   {0x000008 , "LDLM_FL_BLOCK_WAIT"},
891   {0x000010 , "LDLM_FL_CBPENDING"},
892   {0x000020 , "LDLM_FL_AST_SENT"},
893   {0x000040 , "LDLM_FL_WAIT_NOREPROC"},
894   {0x000080 , "LDLM_FL_CANCEL"},
895   {0x000100 , "LDLM_FL_REPLAY"},
896   {0x000200 , "LDLM_FL_INTENT_ONLY"},
897   {0x000400 , "LDLM_FL_LOCAL_ONLY"},
898   {0x000800 , "LDLM_FL_FAILED"},
899   {0x001000 , "LDLM_FL_HAS_INTENT"},
900   {0x002000 , "LDLM_FL_CANCELING"},
901   {0x004000 , "LDLM_FL_LOCAL"},
902   {0x008000 , "LDLM_FL_WARN"},
903   {0x010000 , "LDLM_FL_DISCARD_DATA"},
904   {0x020000 , "LDLM_FL_NO_TIMEOUT"},
905   {0x040000 , "LDLM_FL_BLOCK_NOWAIT"},
906   {0x080000 , "LDLM_FL_TEST_LOCK"},
907   {0x100000 , "LDLM_FL_LVB_READY"},
908   {0x200000 , "LDLM_FL_KMS_IGNORE"},
909   {0x400000 , "LDLM_FL_NO_LRU"},
910   {0x800000 , "LDLM_FL_CANCEL_ON_BLOCK"},
911   {0x1000000 , "LDLM_FL_CP_REQD"},
912   {0x2000000 , "LDLM_FL_CLEANED"},
913   {0x4000000 , "LDLM_FL_ATOMIC_CB"},
914   {0x10000000 , "LDLM_FL_BL_AST"},
915   {0x20000000 , "LDLM_FL_BL_DONE"},
916   {0x40000000 , "LDLM_FL_DENY_ON_CONTENTION"},
917   {0x80000000 , "LDLM_AST_DISCARD_DATA"},
918   { 0, NULL }
919 };
920
921 const value_string lustre_llog_op_type[] = {
922   {LLOG_PAD_MAGIC   ,"LLOG_PAD_MAGIC  "},
923   {OST_SZ_REC       ,"OST_SZ_REC      "},
924   {OST_RAID1_REC    ,"OST_RAID1_REC   "},
925   {MDS_UNLINK_REC   ,"MDS_UNLINK_REC  "},
926   {MDS_SETATTR_REC  ,"MDS_SETATTR_REC "},
927   {OBD_CFG_REC      ,"OBD_CFG_REC     "},
928   {PTL_CFG_REC      ,"PTL_CFG_REC     "},
929   {LLOG_GEN_REC     ,"LLOG_GEN_REC    "},
930   {LLOG_JOIN_REC    ,"LLOG_JOIN_REC   "},
931   {LLOG_HDR_MAGIC   ,"LLOG_HDR_MAGIC  "},
932   {LLOG_LOGID_MAGIC ,"LLOG_LOGID_MAGIC"},
933   { 0, NULL }
934 };
935
936 const value_string lustre_llog_hdr_llh_flags[]= {
937   {LLOG_F_ZAP_WHEN_EMPTY , "LLOhdr_llh_G_F_ZAP_WHEN_EMPTY"},
938   {LLOG_F_IS_CAT         , "LLOhdr_llh_G_F_IS_CAT"},
939   {LLOG_F_IS_PLAIN       , "LLOG_F_IS_PLAIN"},
940   { 0, NULL }
941 };
942
943 const value_string lustre_mds_flags_vals[] = {
944   {0x1,"MDS_BFLAG_UNCOMMITTED_WRITES"},  
945   {0x80000000, "MDS_BFLAG_EXT_FLAGS"},      /* == EXT3_RESERVED_FL */
946   {0x00000008, "MDS_SYNC_FL        "},      /* Synchronous updates */
947   {0x00000010, "MDS_IMMUTABLE_FL   "},      /* Immutable file */
948   {0x00000020, "MDS_APPEND_FL      "},      /* writes to file may only append */
949   {0x00000080, "MDS_NOATIME_FL     "},      /* do not update atime */
950   {0x00010000, "MDS_DIRSYNC_FL     "},       /* dirsync behaviour (dir only) */
951   { 0, NULL }
952 };
953
954 const value_string lustre_LMTypes[] = {
955   { PTL_RPC_MSG_REQUEST, "request"},
956   { PTL_RPC_MSG_ERR , "error"},
957   { PTL_RPC_MSG_REPLY , "reply"},
958   { 0, NULL }
959 };
960
961 const value_string lustre_mds_reint_t_vals[] = {
962   { REINT_SETATTR, "REINT_SETATTR" },
963   { REINT_CREATE, "REINT_CREATE" },
964   { REINT_LINK, "REINT_LINK" },
965   { REINT_UNLINK, "REINT_UNLINK" },
966   { REINT_RENAME, "REINT_RENAME" },
967   { REINT_OPEN, "REINT_OPEN" },
968   { 0, NULL }
969 };
970 const value_string lustre_op_codes[] = {
971   /*OST Opcodes*/
972   {0 , "OST_REPLY"},
973   {1 , "OST_GETATTR"},
974   {2 , "OST_SETATTR"},
975   {3 , "OST_READ"},
976   {4 , "OST_WRITE"},
977   {5 , "OST_CREATE"},
978   {6 , "OST_DESTROY"},
979   {7 , "OST_GET_INFO"},
980   {8 , "OST_CONNECT"},
981   {9 , "OST_DISCONNECT"},
982   {10 , "OST_PUNCH"},
983   {11 , "OST_OPEN"},
984   {12 , "OST_CLOSE"},
985   {13 , "OST_STATFS"},
986   {14 , "OST_SAN_READ(deprecated)"},
987   {15 , "OST_SAN_WRITE(deprecated)"},
988   {16 , "OST_SYNC"},
989   {17 , "OST_SET_INFO"},
990   {18 , "OST_QUOTACHECK"},
991   {19 , "OST_QUOTACTL"},
992   {20 , "OST_LAST_OPC"},
993   /*MDS Opcodes*/
994   {33 , "MDS_GETATTR"},
995   {34 , "MDS_GETATTR_NAME"},
996   {35 , "MDS_CLOSE"},
997   {36 , "MDS_REINT"},
998   {37 , "MDS_READPAGE"},
999   {38 , "MDS_CONNECT"},
1000   {39 , "MDS_DISCONNECT"},
1001   {40 , "MDS_GETSTATUS"},
1002   {41 , "MDS_STATFS"},
1003   {42 , "MDS_PIN"},
1004   {43 , "MDS_UNPIN"},
1005   {44 , "MDS_SYNC"},
1006   {45 , "MDS_DONE_WRITING"},
1007   {46 , "MDS_SET_INFO"},
1008   {47 , "MDS_QUOTACHECK"},
1009   {48 , "MDS_QUOTACTL"},
1010   {49 , "MDS_GETXATTR"},
1011   {50 , "MDS_SETXATTR"},
1012   {51 , "MDS_LAST_OPC"},
1013   /*LDLM Opcodes*/
1014   {101 , "LDLM_ENQUEUE"},
1015   {102 , "LDLM_CONVERT"},
1016   {103 , "LDLM_CANCEL"},
1017   {104 , "LDLM_BL_CALLBACK"},
1018   {105 , "LDLM_CP_CALLBACK"},
1019   {106 , "LDLM_GL_CALLBACK"},
1020   {107 , "LDLM_LAST_OPC"},
1021   /*MGS Opcodes*/
1022   {250 , "MGS_CONNECT"},
1023   {251 , "MGS_DISCONNECT"},
1024   {252 , "MGS_EXCEPTION"},
1025   {253 , "MGS_TARGET_REG"},
1026   {254 , "MGS_TARGET_DEL"},
1027   {255 , "MGS_SET_INFO"},
1028   {256 , "MGS_LAST_OPC"},
1029   /*OBD Opcodes*/
1030   {400 , "OBD_PING"},
1031   {401 , "OBD_LOG_CANCEL"},
1032   {402 , "OBD_QC_CALLBACK"},
1033   {403 , "OBD_LAST_OPC"},
1034   /* LLOG opcodes */
1035   { 501, "LLOG_ORIGIN_HANDLE_CREATE"},
1036   { 502, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK"},
1037   { 503, "LLOG_ORIGIN_HANDLE_READ_HEADER"},
1038   { 504, "LLOG_ORIGIN_HANDLE_WRITE_REC"},
1039   { 505, "LLOG_ORIGIN_HANDLE_CLOSE"},
1040   { 506, "LLOG_ORIGIN_CONNECT"},
1041   { 507, "LLOG_CATINFO"},
1042   { 508, "LLOG_ORIGIN_HANDLE_PREV_BLOCK"},
1043   { 509, "LLOG_ORIGIN_HANDLE_DESTROY"},
1044   { 0, NULL }
1045 };
1046 /*const value_string lustre_ldlm_mode_t_vals[] = {*/
1047 /*    { LCK_MINMODE, "MINMODE" },*/
1048 /*    { LCK_EX, "EX" },*/
1049 /*    { LCK_PW, "PW" },*/
1050 /*    { LCK_PR, "PR" },*/
1051 /*    { LCK_CW, "CW" },*/
1052 /*    { LCK_CR, "CR" },*/
1053 /*    { LCK_NL, "NL" },*/
1054 /*    { LCK_GROUP, "GROUP" },*/
1055 /*    { 0, NULL }*/
1056 /*};*/
1057
1058 /* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */
1059 const value_string lustre_ldlm_mode_t_vals[] = {
1060   { LCK_MINMODE, "MINMODE" },
1061   { LCK_EX, "Exclusive" },
1062   { LCK_PW, "Protected Write" },
1063   { LCK_PR, "Protected Read" },
1064   { LCK_CW, "Concurrent Write" },
1065   { LCK_CR, "Concurrent Read" },
1066   { LCK_NL, "Null" },
1067   { LCK_GROUP, "GROUP" },
1068   { 0, NULL }
1069 };
1070
1071 const value_string lustre_ldlm_type_t_vals[] = {
1072   { LDLM_PLAIN, "LDLM_PLAIN" },
1073   { LDLM_EXTENT,"LDLM_EXTENT" },
1074   { LDLM_FLOCK, "LDLM_FLOCK" },
1075   { LDLM_IBITS, "LDLM_IBITS" },
1076   { 0, NULL }
1077 };
1078
1079
1080 const value_string lustre_llog_cmd_t_vals[] = {
1081   { LLOG_ORIGIN_HANDLE_CREATE, "LLOG_ORIGIN_HANDLE_CREATE" },
1082   { LLOG_ORIGIN_HANDLE_NEXT_BLOCK, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK" },
1083   { LLOG_ORIGIN_HANDLE_READ_HEADER, "LLOG_ORIGIN_HANDLE_READ_HEADER" },
1084   { LLOG_ORIGIN_HANDLE_WRITE_REC, "LLOG_ORIGIN_HANDLE_WRITE_REC" },
1085   { LLOG_ORIGIN_HANDLE_CLOSE, "LLOG_ORIGIN_HANDLE_CLOSE" },
1086   { LLOG_ORIGIN_CONNECT, "LLOG_ORIGIN_CONNECT" },
1087   { LLOG_CATINFO, "LLOG_CATINFO" },
1088   { LLOG_ORIGIN_HANDLE_PREV_BLOCK, "LLOG_ORIGIN_HANDLE_PREV_BLOCK" },
1089   { LLOG_ORIGIN_HANDLE_DESTROY, "LLOG_ORIGIN_HANDLE_DESTROY" },
1090   { 0, NULL }
1091 };
1092
1093
1094 /* ------------------------------------------------------------------- */
1095 /*                display  functions                                   */
1096 /* ------------------------------------------------------------------- */
1097 /* display str in left corner and in COL */
1098 /* TODO : do we need to use inline here ?*/
1099 /* @gint col :  the col where we add the information */
1100 inline static void display_info_str(proto_item *pi, column_info *cinfo, gint col, const gchar* str)
1101 {
1102   if (NULL !=pi)
1103     proto_item_append_text(pi, str);
1104
1105   if (NULL !=cinfo)
1106     if (check_col(cinfo, col))
1107       col_append_str(cinfo, col, str);
1108 }
1109
1110 /* 
1111  * Need to be (re)written
1112  */
1113 static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, const char* format, const gchar * str){
1114
1115   if (NULL !=pi){
1116     //va_start(ap, format);
1117     proto_item_append_text(pi, format, str);
1118     //va_end(ap);
1119   }
1120
1121   if (NULL !=cinfo){
1122     if (check_col(cinfo, col)){
1123       //   va_list ap;
1124       //  va_start(ap, format);
1125       col_append_fstr(cinfo, col,  format, str);
1126       // va_end(ap);
1127     }
1128   }
1129 }
1130
1131
1132 /* ------------------------------ basic dissect functions ------------------------      */
1133 static int 
1134 dissect_uint64
1135 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1136 {
1137   proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE);
1138   return offset+8;
1139 }
1140
1141 static int 
1142 dissect_uint32
1143 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1144 {
1145   proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE);
1146   return offset+4;
1147 }
1148
1149 static int 
1150 dissect_uint8
1151 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1152 {
1153   proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE);
1154   return offset+1;
1155 }
1156 /* -------------------------------------------------------------------------    */
1157
1158
1159
1160
1161 /* IDL: struct lustre_handle { */
1162 /* IDL:         uint64 cookie; */
1163 /* IDL: } */
1164
1165 static int
1166 lustre_dissect_element_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1167 {
1168   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_handle_cookie);
1169
1170   return offset;
1171 }
1172
1173 int
1174 lustre_dissect_struct_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1175 {
1176   proto_item *item = NULL;
1177   proto_tree *tree = NULL;
1178   int old_offset;
1179
1180   old_offset=offset;
1181
1182   if (parent_tree) {
1183     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1184     tree = proto_item_add_subtree(item, ett_lustre_lustre_handle_cookie);
1185   }
1186
1187   offset=lustre_dissect_element_handle_cookie(tvb, offset, pinfo, tree);
1188
1189
1190   proto_item_set_len(item, offset-old_offset);
1191
1192   return offset;
1193 }
1194
1195 /* IDL: struct obd_connect_data { */
1196 /* IDL:         uint64 ocd_connect_flags; */
1197 /* IDL:         uint32 ocd_version; */
1198 /* IDL:         uint32 ocd_grant; */
1199 /* IDL:         uint32 ocd_index; */
1200 /* IDL:         uint32 ocd_brw_size; */
1201 /* IDL:         uint64 ocd_ibits_known; */
1202 /* IDL:         uint32 ocd_nllu; */
1203 /* IDL:         uint32 ocd_nllg; */
1204 /* IDL:         uint64 ocd_transno; */
1205 /* IDL:         uint32 ocd_group; */
1206 /* IDL:         uint32 ocd_cksum_types; */
1207 /* IDL:         uint64 padding1; */
1208 /* IDL:         uint64 padding2; */
1209 /* IDL: } */
1210
1211 static int
1212 lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1213 {
1214   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags);
1215
1216   return offset;
1217 }
1218
1219 static int
1220 lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1221 {
1222   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_version);
1223
1224   return offset;
1225 }
1226
1227 static int
1228 lustre_dissect_element_obd_connect_data_ocd_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1229 {
1230   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_grant);
1231
1232   return offset;
1233 }
1234
1235 static int
1236 lustre_dissect_element_obd_connect_data_ocd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1237 {
1238   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_index);
1239
1240   return offset;
1241 }
1242
1243 static int
1244 lustre_dissect_element_obd_connect_data_ocd_brw_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1245 {
1246   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_brw_size);
1247
1248   return offset;
1249 }
1250
1251 static int
1252 lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1253 {
1254   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_ibits_known);
1255
1256   return offset;
1257 }
1258
1259 static int
1260 lustre_dissect_element_obd_connect_data_ocd_nllu(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1261 {
1262   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllu);
1263
1264   return offset;
1265 }
1266
1267 static int
1268 lustre_dissect_element_obd_connect_data_ocd_nllg(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1269 {
1270   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg);
1271
1272   return offset;
1273 }
1274
1275 static int
1276 lustre_dissect_element_obd_connect_data_ocd_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1277 {
1278   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno);
1279
1280   return offset;
1281 }
1282
1283 static int
1284 lustre_dissect_element_obd_connect_data_ocd_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1285 {
1286   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group);
1287
1288   return offset;
1289 }
1290
1291 static int
1292 lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1293 {
1294   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types);
1295
1296   return offset;
1297 }
1298
1299 static int
1300 lustre_dissect_element_obd_connect_data_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1301 {
1302   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding1);
1303
1304   return offset;
1305 }
1306
1307 static int
1308 lustre_dissect_element_obd_connect_data_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1309 {
1310   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding2);
1311
1312   return offset;
1313 }
1314
1315 static int
1316 lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1317 {
1318   proto_item *item = NULL;
1319   proto_tree *tree = NULL;
1320   int old_offset;
1321
1322
1323
1324   old_offset=offset;
1325
1326   if (parent_tree) {
1327     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1328     tree = proto_item_add_subtree(item, ett_lustre_obd_connect_data);
1329   }
1330
1331   offset=lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, offset, pinfo, tree);
1332
1333   offset=lustre_dissect_element_obd_connect_data_ocd_version(tvb, offset, pinfo, tree);
1334
1335   offset=lustre_dissect_element_obd_connect_data_ocd_grant(tvb, offset, pinfo, tree);
1336
1337   offset=lustre_dissect_element_obd_connect_data_ocd_index(tvb, offset, pinfo, tree);
1338
1339   offset=lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, offset, pinfo, tree);
1340
1341   offset=lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, offset, pinfo, tree);
1342
1343   offset=lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree);
1344
1345   offset=lustre_dissect_element_obd_connect_data_ocd_nllg(tvb, offset, pinfo, tree);
1346
1347   offset=lustre_dissect_element_obd_connect_data_ocd_transno(tvb, offset, pinfo, tree);
1348
1349   offset=lustre_dissect_element_obd_connect_data_ocd_group(tvb, offset, pinfo, tree);
1350
1351   offset=lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree);
1352
1353   offset=lustre_dissect_element_obd_connect_data_padding1(tvb, offset, pinfo, tree);
1354
1355   offset=lustre_dissect_element_obd_connect_data_padding2(tvb, offset, pinfo, tree);
1356
1357
1358   proto_item_set_len(item, offset-old_offset);
1359
1360   return offset;
1361 }
1362
1363
1364 /* IDL: struct lov_ost_data_v1 { */
1365 /* IDL:         uint64 l_object_id; */
1366 /* IDL:         uint64 l_object_gr; */
1367 /* IDL:         uint32 l_ost_gen; */
1368 /* IDL:         uint32 l_ost_idx; */
1369 /* IDL: } */
1370
1371 static int
1372 lustre_dissect_element_lov_ost_data_v1_l_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1373 {
1374   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_id);
1375
1376   return offset;
1377 }
1378
1379 static int
1380 lustre_dissect_element_lov_ost_data_v1_l_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1381 {
1382   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_gr);
1383
1384   return offset;
1385 }
1386
1387 static int
1388 lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1389 {
1390   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_gen);
1391
1392   return offset;
1393 }
1394
1395 static int
1396 lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1397 {
1398   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_idx);
1399
1400   return offset;
1401 }
1402
1403 int
1404 lustre_dissect_struct_lov_ost_data_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1405 {
1406   proto_item *item = NULL;
1407   proto_tree *tree = NULL;
1408   int old_offset;
1409
1410
1411
1412   old_offset=offset;
1413
1414   if (parent_tree) {
1415     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1416     tree = proto_item_add_subtree(item, ett_lustre_lov_ost_data_v1);
1417   }
1418
1419   offset=lustre_dissect_element_lov_ost_data_v1_l_object_id(tvb, offset, pinfo, tree);
1420
1421   offset=lustre_dissect_element_lov_ost_data_v1_l_object_gr(tvb, offset, pinfo, tree);
1422
1423   offset=lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvb, offset, pinfo, tree);
1424
1425   offset=lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvb, offset, pinfo, tree);
1426
1427
1428   proto_item_set_len(item, offset-old_offset);
1429
1430   return offset;
1431 }
1432
1433 /* IDL: struct lov_mds_md_v1 { */
1434 /* IDL:         uint32 lmm_magic; */
1435 /* IDL:         uint32 lmm_pattern; */
1436 /* IDL:         uint64 lmm_object_id; */
1437 /* IDL:         uint64 lmm_object_gr; */
1438 /* IDL:         uint32 lmm_stripe_size; */
1439 /* IDL:         uint32 lmm_stripe_count; */
1440 /* IDL:         struct lov_ost_data_v1 { */
1441 /* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */
1442 /* IDL: } */
1443
1444 static int
1445 lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1446 {
1447   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_magic);
1448
1449   return offset;
1450 }
1451
1452 static int
1453 lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1454 {
1455   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_pattern);
1456
1457   return offset;
1458 }
1459
1460 static int
1461 lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1462 {
1463   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_id);
1464
1465   return offset;
1466 }
1467
1468 static int
1469 lustre_dissect_element_lov_mds_md_v1_lmm_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1470 {
1471   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_gr);
1472
1473   return offset;
1474 }
1475
1476 static int
1477 lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1478 {
1479   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_size);
1480
1481   return offset;
1482 }
1483
1484 static int
1485 lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1486 {
1487   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_count);
1488
1489   return offset;
1490 }
1491
1492 static int
1493 lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1494 {
1495   offset=lustre_dissect_struct_lov_ost_data_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1_lmm_objects);
1496   return offset;
1497 }
1498
1499 static int
1500 lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int num)
1501 {
1502   int i;
1503   /*g_print("num = %d", num);*/
1504   for (i = 0; i < num; i++){
1505     offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvb, offset, pinfo, tree);
1506   }
1507
1508   return offset;
1509 }
1510
1511
1512
1513 int
1514 lustre_dissect_struct_lov_mds_md_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1515 {
1516   proto_item *item = NULL;
1517   proto_tree *tree = NULL;
1518   int old_offset;
1519
1520   guint32 stripe_count ;
1521
1522
1523   old_offset=offset;
1524
1525   if (parent_tree) {
1526     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1527     tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1);
1528   }
1529
1530   offset=lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvb, offset, pinfo, tree);
1531
1532   offset=lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvb, offset, pinfo, tree);
1533
1534   offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvb, offset, pinfo, tree);
1535
1536   offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_gr(tvb, offset, pinfo, tree);
1537
1538   offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvb, offset, pinfo, tree);
1539
1540   stripe_count = tvb_get_letohl(tvb,offset);
1541   offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvb, offset, pinfo, tree);
1542
1543   offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvb, offset, pinfo, tree, stripe_count);
1544
1545
1546   proto_item_set_len(item, offset-old_offset);
1547
1548   return offset;
1549 }
1550
1551
1552
1553 /* IDL: struct obd_statfs { */
1554 /* IDL:         uint64 os_type; */
1555 /* IDL:         uint64 os_blocks; */
1556 /* IDL:         uint64 os_bfree; */
1557 /* IDL:         uint64 os_bavail; */
1558 /* IDL:         uint64 os_files; */
1559 /* IDL:         uint64 os_ffree; */
1560 /* IDL:         uint8 os_fsid[40]; */
1561 /* IDL:         uint32 os_bsize; */
1562 /* IDL:         uint32 os_namelen; */
1563 /* IDL:         uint64 os_maxbytes; */
1564 /* IDL:         uint32 os_state; */
1565 /* IDL:         uint32 os_spare1; */
1566 /* IDL:         uint32 os_spare2; */
1567 /* IDL:         uint32 os_spare3; */
1568 /* IDL:         uint32 os_spare4; */
1569 /* IDL:         uint32 os_spare5; */
1570 /* IDL:         uint32 os_spare6; */
1571 /* IDL:         uint32 os_spare7; */
1572 /* IDL:         uint32 os_spare8; */
1573 /* IDL:         uint32 os_spare9; */
1574 /* IDL: } */
1575
1576 static int
1577 lustre_dissect_element_obd_statfs_os_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1578 {
1579   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_type);
1580
1581   return offset;
1582 }
1583
1584 static int
1585 lustre_dissect_element_obd_statfs_os_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1586 {
1587   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_blocks);
1588
1589   return offset;
1590 }
1591
1592 static int
1593 lustre_dissect_element_obd_statfs_os_bfree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1594 {
1595   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bfree);
1596
1597   return offset;
1598 }
1599
1600 static int
1601 lustre_dissect_element_obd_statfs_os_bavail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1602 {
1603   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bavail);
1604
1605   return offset;
1606 }
1607
1608 static int
1609 lustre_dissect_element_obd_statfs_os_files(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1610 {
1611   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_files);
1612
1613   return offset;
1614 }
1615
1616 static int
1617 lustre_dissect_element_obd_statfs_os_ffree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1618 {
1619   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_ffree);
1620
1621   return offset;
1622 }
1623
1624 static int
1625 lustre_dissect_element_obd_statfs_os_fsid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1626 {
1627   offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_fsid);
1628
1629   return offset;
1630 }
1631
1632 static int
1633 lustre_dissect_element_obd_statfs_os_fsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1634 {
1635   int i;
1636   for (i = 0; i < 40; i++)
1637     offset=lustre_dissect_element_obd_statfs_os_fsid_(tvb, offset, pinfo, tree);
1638
1639   return offset;
1640 }
1641
1642
1643
1644 static int
1645 lustre_dissect_element_obd_statfs_os_bsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1646 {
1647   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bsize);
1648
1649   return offset;
1650 }
1651
1652 static int
1653 lustre_dissect_element_obd_statfs_os_namelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1654 {
1655   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_namelen);
1656
1657   return offset;
1658 }
1659
1660 static int
1661 lustre_dissect_element_obd_statfs_os_maxbytes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1662 {
1663   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_maxbytes);
1664
1665   return offset;
1666 }
1667
1668 static int
1669 lustre_dissect_element_obd_statfs_os_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1670 {
1671   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_state);
1672
1673   return offset;
1674 }
1675
1676 static int
1677 lustre_dissect_element_obd_statfs_os_spare1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1678 {
1679   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare1);
1680
1681   return offset;
1682 }
1683
1684 static int
1685 lustre_dissect_element_obd_statfs_os_spare2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1686 {
1687   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare2);
1688
1689   return offset;
1690 }
1691
1692 static int
1693 lustre_dissect_element_obd_statfs_os_spare3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1694 {
1695   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare3);
1696
1697   return offset;
1698 }
1699
1700 static int
1701 lustre_dissect_element_obd_statfs_os_spare4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1702 {
1703   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare4);
1704
1705   return offset;
1706 }
1707
1708 static int
1709 lustre_dissect_element_obd_statfs_os_spare5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1710 {
1711   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare5);
1712
1713   return offset;
1714 }
1715
1716 static int
1717 lustre_dissect_element_obd_statfs_os_spare6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1718 {
1719   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare6);
1720
1721   return offset;
1722 }
1723
1724 static int
1725 lustre_dissect_element_obd_statfs_os_spare7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1726 {
1727   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare7);
1728
1729   return offset;
1730 }
1731
1732 static int
1733 lustre_dissect_element_obd_statfs_os_spare8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1734 {
1735   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare8);
1736
1737   return offset;
1738 }
1739
1740 static int
1741 lustre_dissect_element_obd_statfs_os_spare9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1742 {
1743   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare9);
1744
1745   return offset;
1746 }
1747
1748 int
1749 lustre_dissect_struct_obd_statfs(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1750 {
1751   proto_item *item = NULL;
1752   proto_tree *tree = NULL;
1753   int old_offset;
1754
1755
1756
1757   old_offset=offset;
1758
1759   if (parent_tree) {
1760     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1761     tree = proto_item_add_subtree(item, ett_lustre_obd_statfs);
1762   }
1763
1764   offset=lustre_dissect_element_obd_statfs_os_type(tvb, offset, pinfo, tree);
1765
1766   offset=lustre_dissect_element_obd_statfs_os_blocks(tvb, offset, pinfo, tree);
1767
1768   offset=lustre_dissect_element_obd_statfs_os_bfree(tvb, offset, pinfo, tree);
1769
1770   offset=lustre_dissect_element_obd_statfs_os_bavail(tvb, offset, pinfo, tree);
1771
1772   offset=lustre_dissect_element_obd_statfs_os_files(tvb, offset, pinfo, tree);
1773
1774   offset=lustre_dissect_element_obd_statfs_os_ffree(tvb, offset, pinfo, tree);
1775
1776   offset=lustre_dissect_element_obd_statfs_os_fsid(tvb, offset, pinfo, tree);
1777
1778   offset=lustre_dissect_element_obd_statfs_os_bsize(tvb, offset, pinfo, tree);
1779
1780   offset=lustre_dissect_element_obd_statfs_os_namelen(tvb, offset, pinfo, tree);
1781
1782   offset=lustre_dissect_element_obd_statfs_os_maxbytes(tvb, offset, pinfo, tree);
1783
1784   offset=lustre_dissect_element_obd_statfs_os_state(tvb, offset, pinfo, tree);
1785
1786   offset=lustre_dissect_element_obd_statfs_os_spare1(tvb, offset, pinfo, tree);
1787
1788   offset=lustre_dissect_element_obd_statfs_os_spare2(tvb, offset, pinfo, tree);
1789
1790   offset=lustre_dissect_element_obd_statfs_os_spare3(tvb, offset, pinfo, tree);
1791
1792   offset=lustre_dissect_element_obd_statfs_os_spare4(tvb, offset, pinfo, tree);
1793
1794   offset=lustre_dissect_element_obd_statfs_os_spare5(tvb, offset, pinfo, tree);
1795
1796   offset=lustre_dissect_element_obd_statfs_os_spare6(tvb, offset, pinfo, tree);
1797
1798   offset=lustre_dissect_element_obd_statfs_os_spare7(tvb, offset, pinfo, tree);
1799
1800   offset=lustre_dissect_element_obd_statfs_os_spare8(tvb, offset, pinfo, tree);
1801
1802   offset=lustre_dissect_element_obd_statfs_os_spare9(tvb, offset, pinfo, tree);
1803
1804
1805   proto_item_set_len(item, offset-old_offset);
1806
1807   return offset;
1808 }
1809
1810 /* IDL: struct obd_ioobj { */
1811 /* IDL:         uint64 ioo_id; */
1812 /* IDL:         uint64 ioo_gr; */
1813 /* IDL:         uint32 ioo_type; */
1814 /* IDL:         uint32 ioo_bufcnt; */
1815 /* IDL: } */
1816
1817 static int
1818 lustre_dissect_element_obd_ioobj_ioo_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1819 {
1820   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_id);
1821
1822   return offset;
1823 }
1824
1825 static int
1826 lustre_dissect_element_obd_ioobj_ioo_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1827 {
1828   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_gr);
1829
1830   return offset;
1831 }
1832
1833 static int
1834 lustre_dissect_element_obd_ioobj_ioo_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1835 {
1836   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_type);
1837
1838   return offset;
1839 }
1840
1841 static int
1842 lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1843 {
1844   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_bufcnt);
1845
1846   return offset;
1847 }
1848
1849 int
1850 lustre_dissect_struct_obd_ioobj(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1851 {
1852   proto_item *item = NULL;
1853   proto_tree *tree = NULL;
1854   int old_offset;
1855
1856
1857
1858   old_offset=offset;
1859
1860   if (parent_tree) {
1861     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1862     tree = proto_item_add_subtree(item, ett_lustre_obd_ioobj);
1863   }
1864
1865   offset=lustre_dissect_element_obd_ioobj_ioo_id(tvb, offset, pinfo, tree);
1866
1867   offset=lustre_dissect_element_obd_ioobj_ioo_gr(tvb, offset, pinfo, tree);
1868
1869   offset=lustre_dissect_element_obd_ioobj_ioo_type(tvb, offset, pinfo, tree);
1870
1871   offset=lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvb, offset, pinfo, tree);
1872
1873
1874   proto_item_set_len(item, offset-old_offset);
1875
1876   return offset;
1877 }
1878
1879 /* IDL: struct niobuf_remote { */
1880 /* IDL:         uint64 offset; */
1881 /* IDL:         uint32 len; */
1882 /* IDL:         uint32 flags; */
1883 /* IDL: } */
1884
1885 static int
1886 lustre_dissect_element_niobuf_remote_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1887 {
1888   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_offset);
1889
1890   return offset;
1891 }
1892
1893 static int
1894 lustre_dissect_element_niobuf_remote_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1895 {
1896   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_len);
1897
1898   return offset;
1899 }
1900
1901 static int
1902 lustre_dissect_element_niobuf_remote_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1903 {
1904   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_flags);
1905
1906   return offset;
1907 }
1908
1909 int
1910 lustre_dissect_struct_niobuf_remote(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
1911 {
1912   proto_item *item = NULL;
1913   proto_tree *tree = NULL;
1914   int old_offset;
1915
1916
1917
1918   old_offset=offset;
1919
1920   if (parent_tree) {
1921     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1922     tree = proto_item_add_subtree(item, ett_lustre_niobuf_remote);
1923   }
1924
1925   offset=lustre_dissect_element_niobuf_remote_offset(tvb, offset, pinfo, tree);
1926
1927   offset=lustre_dissect_element_niobuf_remote_len(tvb, offset, pinfo, tree);
1928
1929   offset=lustre_dissect_element_niobuf_remote_flags(tvb, offset, pinfo, tree);
1930
1931
1932   proto_item_set_len(item, offset-old_offset);
1933
1934   return offset;
1935 }
1936
1937 /* IDL: struct ost_lvb { */
1938 /* IDL:         uint64 lvb_size; */
1939 /* IDL:         uint64 lvb_mtime; */
1940 /* IDL:         uint64 lvb_atime; */
1941 /* IDL:         uint64 lvb_ctime; */
1942 /* IDL:         uint64 lvb_blocks; */
1943 /* IDL: } */
1944
1945 static int
1946 lustre_dissect_element_ost_lvb_lvb_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1947 {
1948   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size);
1949
1950   return offset;
1951 }
1952
1953 static int
1954 lustre_dissect_element_ost_lvb_lvb_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1955 {
1956   nstime_t ns;
1957   /* timestamp */
1958   ns.secs = tvb_get_letohl(tvb,offset);
1959   ns.nsecs=0;
1960   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_mtime, tvb, offset, 8, &ns );
1961   offset+=8;
1962   return offset;
1963 }
1964
1965 static int
1966 lustre_dissect_element_ost_lvb_lvb_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1967 {
1968   nstime_t ns;
1969   /* timestamp */
1970   ns.secs = tvb_get_letohl(tvb,offset);
1971   ns.nsecs=0;
1972   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_atime, tvb, offset, 8, &ns );
1973   offset+=8;
1974   return offset;
1975
1976   return offset;
1977 }
1978
1979 static int
1980 lustre_dissect_element_ost_lvb_lvb_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1981 {
1982   nstime_t ns;
1983   /* timestamp */
1984   ns.secs = tvb_get_letohl(tvb,offset);
1985   ns.nsecs=0;
1986   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_ctime, tvb, offset, 8, &ns );
1987   offset+=8;
1988   return offset;
1989
1990   return offset;
1991 }
1992
1993 static int
1994 lustre_dissect_element_ost_lvb_lvb_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1995 {
1996   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks);
1997
1998   return offset;
1999 }
2000
2001 int
2002 lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2003 {
2004   proto_item *item = NULL;
2005   proto_tree *tree = NULL;
2006   int old_offset;
2007
2008
2009
2010   old_offset=offset;
2011
2012   if (parent_tree) {
2013     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2014     tree = proto_item_add_subtree(item, ett_lustre_ost_lvb);
2015   }
2016
2017   offset=lustre_dissect_element_ost_lvb_lvb_size(tvb, offset, pinfo, tree);
2018
2019   offset=lustre_dissect_element_ost_lvb_lvb_mtime(tvb, offset, pinfo, tree);
2020
2021   offset=lustre_dissect_element_ost_lvb_lvb_atime(tvb, offset, pinfo, tree);
2022
2023   offset=lustre_dissect_element_ost_lvb_lvb_ctime(tvb, offset, pinfo, tree);
2024
2025   offset=lustre_dissect_element_ost_lvb_lvb_blocks(tvb, offset, pinfo, tree);
2026
2027
2028   proto_item_set_len(item, offset-old_offset);
2029
2030   return offset;
2031 }
2032
2033
2034 /* IDL: struct ll_fid { */
2035 /* IDL:         uint64 id; */
2036 /* IDL:         uint32 generation; */
2037 /* IDL:         uint32 f_type; */
2038 /* IDL: } */
2039
2040 static int
2041 lustre_dissect_element_ll_fid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2042 {
2043   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ll_fid_id);
2044
2045   return offset;
2046 }
2047
2048 static int
2049 lustre_dissect_element_ll_fid_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2050 {
2051   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_generation);
2052
2053   return offset;
2054 }
2055
2056 static int
2057 lustre_dissect_element_ll_fid_f_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2058 {
2059   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_f_type);
2060
2061   return offset;
2062 }
2063
2064 int
2065 lustre_dissect_struct_ll_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2066 {
2067   proto_item *item = NULL;
2068   proto_tree *tree = NULL;
2069   int old_offset;
2070
2071
2072
2073   old_offset=offset;
2074
2075   if (parent_tree) {
2076     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2077     tree = proto_item_add_subtree(item, ett_lustre_ll_fid);
2078   }
2079
2080   offset=lustre_dissect_element_ll_fid_id(tvb, offset, pinfo, tree);
2081
2082   offset=lustre_dissect_element_ll_fid_generation(tvb, offset, pinfo, tree);
2083
2084   offset=lustre_dissect_element_ll_fid_f_type(tvb, offset, pinfo, tree);
2085
2086
2087   proto_item_set_len(item, offset-old_offset);
2088
2089   return offset;
2090 }
2091
2092 /* IDL: struct mds_status_req { */
2093 /* IDL:         uint32 flags; */
2094 /* IDL:         uint32 repbuf; */
2095 /* IDL: } */
2096
2097 static int
2098 lustre_dissect_element_mds_status_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2099 {
2100   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mds_status_req_flags);
2101
2102   return offset;
2103 }
2104
2105 static int
2106 lustre_dissect_element_mds_status_req_repbuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2107 {
2108   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mds_status_req_repbuf);
2109
2110   return offset;
2111 }
2112
2113 int
2114 lustre_dissect_struct_mds_status_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2115 {
2116   proto_item *item = NULL;
2117   proto_tree *tree = NULL;
2118   int old_offset;
2119
2120
2121   old_offset=offset;
2122
2123   if (parent_tree) {
2124     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2125     tree = proto_item_add_subtree(item, ett_lustre_mds_status_req);
2126   }
2127
2128   offset=lustre_dissect_element_mds_status_req_flags(tvb, offset, pinfo, tree);
2129
2130   offset=lustre_dissect_element_mds_status_req_repbuf(tvb, offset, pinfo, tree);
2131
2132
2133   proto_item_set_len(item, offset-old_offset);
2134
2135   return offset;
2136 }
2137
2138 /* IDL: struct mds_body { */
2139 /* IDL:         struct ll_fid { */
2140 /* IDL: } fid1; */
2141 /* IDL:         struct ll_fid { */
2142 /* IDL: } fid2; */
2143 /* IDL:         struct lustre_handle { */
2144 /* IDL: } handle; */
2145 /* IDL:         uint64 valid; */
2146 /* IDL:         uint64 size; */
2147 /* IDL:         uint64 mtime; */
2148 /* IDL:         uint64 atime; */
2149 /* IDL:         uint64 ctime; */
2150 /* IDL:         uint64 blocks; */
2151 /* IDL:         uint64 io_epoch; */
2152 /* IDL:         uint64 ino; */
2153 /* IDL:         uint32 fsuid; */
2154 /* IDL:         uint32 fsgid; */
2155 /* IDL:         uint32 capability; */
2156 /* IDL:         uint32 mode; */
2157 /* IDL:         uint32 uid; */
2158 /* IDL:         uint32 gid; */
2159 /* IDL:         uint32 flags; */
2160 /* IDL:         uint32 rdev; */
2161 /* IDL:         uint32 nlink; */
2162 /* IDL:         uint32 generation; */
2163 /* IDL:         uint32 suppgid; */
2164 /* IDL:         uint32 eadatasize; */
2165 /* IDL:         uint32 aclsize; */
2166 /* IDL:         uint32 max_mdsize; */
2167 /* IDL:         uint32 max_cookiesize; */
2168 /* IDL:         uint32 padding_4; */
2169 /* IDL: } */
2170
2171 static int
2172 lustre_dissect_element_mds_body_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2173 {
2174   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_body_fid1);
2175   return offset;
2176 }
2177
2178 static int
2179 lustre_dissect_element_mds_body_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2180 {
2181   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_body_fid2);
2182   return offset;
2183 }
2184
2185 static int
2186 lustre_dissect_element_mds_body_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2187 {
2188   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mds_body_handle);
2189
2190   return offset;
2191 }
2192
2193 static int
2194 lustre_dissect_element_mds_body_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2195 {
2196   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_valid);
2197
2198   return offset;
2199 }
2200
2201 static int
2202 lustre_dissect_element_mds_body_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2203 {
2204   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_size);
2205
2206   return offset;
2207 }
2208
2209 static int
2210 lustre_dissect_element_mds_body_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2211 {
2212   nstime_t ns;
2213   /* timestamp */
2214   ns.secs = tvb_get_letohl(tvb,offset);
2215   ns.nsecs=0;
2216   proto_tree_add_time(tree, hf_lustre_mds_body_mtime, tvb, offset, 8, &ns );
2217   offset+=8;
2218   return offset;
2219 }
2220
2221 static int
2222 lustre_dissect_element_mds_body_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2223 {
2224   nstime_t ns;
2225   /* timestamp */
2226   ns.secs = tvb_get_letohl(tvb,offset);
2227   ns.nsecs=0;
2228   proto_tree_add_time(tree, hf_lustre_mds_body_atime, tvb, offset, 8, &ns );
2229   offset+=8;
2230
2231   return offset;
2232 }
2233
2234 static int
2235 lustre_dissect_element_mds_body_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2236 {
2237   nstime_t ns;
2238   /* timestamp */
2239   ns.secs = tvb_get_letohl(tvb,offset);
2240   ns.nsecs=0;
2241   proto_tree_add_time(tree, hf_lustre_mds_body_ctime, tvb, offset, 8, &ns );
2242   offset+=8;
2243   return offset;
2244 }
2245
2246 static int
2247 lustre_dissect_element_mds_body_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2248 {
2249   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_blocks);
2250
2251   return offset;
2252 }
2253
2254 static int
2255 lustre_dissect_element_mds_body_io_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2256 {
2257   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_io_epoch);
2258
2259   return offset;
2260 }
2261
2262 static int
2263 lustre_dissect_element_mds_body_ino(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2264 {
2265   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_ino);
2266
2267   return offset;
2268 }
2269
2270 static int
2271 lustre_dissect_element_mds_body_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2272 {
2273   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_fsuid);
2274
2275   return offset;
2276 }
2277
2278 static int
2279 lustre_dissect_element_mds_body_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2280 {
2281   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_fsgid);
2282
2283   return offset;
2284 }
2285
2286 static int
2287 lustre_dissect_element_mds_body_capability(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2288 {
2289   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_capability);
2290
2291   return offset;
2292 }
2293
2294 static int
2295 lustre_dissect_element_mds_body_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2296 {
2297   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_mode);
2298
2299   return offset;
2300 }
2301
2302 static int
2303 lustre_dissect_element_mds_body_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2304 {
2305   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_uid);
2306
2307   return offset;
2308 }
2309
2310 static int
2311 lustre_dissect_element_mds_body_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2312 {
2313   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_gid);
2314
2315   return offset;
2316 }
2317
2318 static int
2319 lustre_dissect_element_mds_body_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2320 {
2321   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_flags);
2322
2323   return offset;
2324 }
2325
2326 static int
2327 lustre_dissect_element_mds_body_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2328 {
2329   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_rdev);
2330
2331   return offset;
2332 }
2333
2334 static int
2335 lustre_dissect_element_mds_body_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2336 {
2337   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_nlink);
2338
2339   return offset;
2340 }
2341
2342 static int
2343 lustre_dissect_element_mds_body_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2344 {
2345   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_generation);
2346
2347   return offset;
2348 }
2349
2350 static int
2351 lustre_dissect_element_mds_body_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2352 {
2353   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_suppgid);
2354
2355   return offset;
2356 }
2357
2358 static int
2359 lustre_dissect_element_mds_body_eadatasize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2360 {
2361   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_eadatasize);
2362
2363   return offset;
2364 }
2365
2366 static int
2367 lustre_dissect_element_mds_body_aclsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2368 {
2369   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_aclsize);
2370
2371   return offset;
2372 }
2373
2374 static int
2375 lustre_dissect_element_mds_body_max_mdsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2376 {
2377   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_max_mdsize);
2378
2379   return offset;
2380 }
2381
2382 static int
2383 lustre_dissect_element_mds_body_max_cookiesize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2384 {
2385   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_max_cookiesize);
2386
2387   return offset;
2388 }
2389
2390 static int
2391 lustre_dissect_element_mds_body_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2392 {
2393   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_padding_4);
2394
2395   return offset;
2396 }
2397
2398 int
2399 lustre_dissect_struct_mds_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2400 {
2401   proto_item *item = NULL;
2402   proto_tree *tree = NULL;
2403   int old_offset;
2404
2405
2406   old_offset=offset;
2407
2408   if (parent_tree) {
2409     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2410     tree = proto_item_add_subtree(item, ett_lustre_mds_body);
2411   }
2412
2413   offset=lustre_dissect_element_mds_body_fid1(tvb, offset, pinfo, tree);
2414
2415   offset=lustre_dissect_element_mds_body_fid2(tvb, offset, pinfo, tree);
2416
2417   offset=lustre_dissect_element_mds_body_handle(tvb, offset, pinfo, tree);
2418
2419   offset=lustre_dissect_element_mds_body_valid(tvb, offset, pinfo, tree);
2420
2421   offset=lustre_dissect_element_mds_body_size(tvb, offset, pinfo, tree);
2422
2423   offset=lustre_dissect_element_mds_body_mtime(tvb, offset, pinfo, tree);
2424
2425   offset=lustre_dissect_element_mds_body_atime(tvb, offset, pinfo, tree);
2426
2427   offset=lustre_dissect_element_mds_body_ctime(tvb, offset, pinfo, tree);
2428
2429   offset=lustre_dissect_element_mds_body_blocks(tvb, offset, pinfo, tree);
2430
2431   offset=lustre_dissect_element_mds_body_io_epoch(tvb, offset, pinfo, tree);
2432
2433   offset=lustre_dissect_element_mds_body_ino(tvb, offset, pinfo, tree);
2434
2435   offset=lustre_dissect_element_mds_body_fsuid(tvb, offset, pinfo, tree);
2436
2437   offset=lustre_dissect_element_mds_body_fsgid(tvb, offset, pinfo, tree);
2438
2439   offset=lustre_dissect_element_mds_body_capability(tvb, offset, pinfo, tree);
2440
2441   offset=lustre_dissect_element_mds_body_mode(tvb, offset, pinfo, tree);
2442
2443   offset=lustre_dissect_element_mds_body_uid(tvb, offset, pinfo, tree);
2444
2445   offset=lustre_dissect_element_mds_body_gid(tvb, offset, pinfo, tree);
2446
2447   offset=lustre_dissect_element_mds_body_flags(tvb, offset, pinfo, tree);
2448
2449   offset=lustre_dissect_element_mds_body_rdev(tvb, offset, pinfo, tree);
2450
2451   offset=lustre_dissect_element_mds_body_nlink(tvb, offset, pinfo, tree);
2452
2453   offset=lustre_dissect_element_mds_body_generation(tvb, offset, pinfo, tree);
2454
2455   offset=lustre_dissect_element_mds_body_suppgid(tvb, offset, pinfo, tree);
2456
2457   offset=lustre_dissect_element_mds_body_eadatasize(tvb, offset, pinfo, tree);
2458
2459   offset=lustre_dissect_element_mds_body_aclsize(tvb, offset, pinfo, tree);
2460
2461   offset=lustre_dissect_element_mds_body_max_mdsize(tvb, offset, pinfo, tree);
2462
2463   offset=lustre_dissect_element_mds_body_max_cookiesize(tvb, offset, pinfo, tree);
2464
2465   offset=lustre_dissect_element_mds_body_padding_4(tvb, offset, pinfo, tree);
2466
2467
2468   proto_item_set_len(item, offset-old_offset);
2469
2470   return offset;
2471 }
2472
2473 /* IDL: struct obd_dqinfo { */
2474 /* IDL:   uint64 dqi_bgrace; */
2475 /* IDL:   uint64 dqi_igrace; */
2476 /* IDL:   uint32 dqi_flags; */
2477 /* IDL:   uint32 dqi_valid; */
2478 /* IDL: } */
2479
2480 static int
2481 lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2482 {
2483   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_bgrace);
2484
2485   return offset;
2486 }
2487
2488 static int
2489 lustre_dissect_element_obd_dqinfo_dqi_igrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2490 {
2491   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_igrace);
2492
2493   return offset;
2494 }
2495
2496 static int
2497 lustre_dissect_element_obd_dqinfo_dqi_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2498 {
2499   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_flags);
2500
2501   return offset;
2502 }
2503
2504 static int
2505 lustre_dissect_element_obd_dqinfo_dqi_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2506 {
2507   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_valid);
2508
2509   return offset;
2510 }
2511
2512 int
2513 lustre_dissect_struct_obd_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2514 {
2515   proto_item *item = NULL;
2516   proto_tree *tree = NULL;
2517   int old_offset;
2518
2519
2520
2521   old_offset = offset;
2522
2523   if (parent_tree) {
2524     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2525     tree = proto_item_add_subtree(item, ett_lustre_obd_dqinfo);
2526   }
2527
2528   offset = lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvb, offset, pinfo, tree);
2529
2530   offset = lustre_dissect_element_obd_dqinfo_dqi_igrace(tvb, offset, pinfo, tree);
2531
2532   offset = lustre_dissect_element_obd_dqinfo_dqi_flags(tvb, offset, pinfo, tree);
2533
2534   offset = lustre_dissect_element_obd_dqinfo_dqi_valid(tvb, offset, pinfo, tree);
2535
2536
2537   proto_item_set_len(item, offset-old_offset);
2538
2539   return offset;
2540 }
2541
2542 /* IDL: struct obd_dqblk { */
2543 /* IDL:         uint64 dqb_bhardlimit; */
2544 /* IDL:         uint64 dqb_bsoftlimit; */
2545 /* IDL:         uint64 dqb_curspace; */
2546 /* IDL:         uint64 dqb_ihardlimit; */
2547 /* IDL:         uint64 dqb_isoftlimit; */
2548 /* IDL:         uint64 dqb_curinodes; */
2549 /* IDL:         uint64 dqb_btime; */
2550 /* IDL:         uint64 dqb_itime; */
2551 /* IDL:         uint32 dqb_valid; */
2552 /* IDL:         uint32 padding; */
2553 /* IDL: } */
2554
2555 static int
2556 lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2557 {
2558   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bhardlimit);
2559
2560   return offset;
2561 }
2562
2563 static int
2564 lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2565 {
2566   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bsoftlimit);
2567
2568   return offset;
2569 }
2570
2571 static int
2572 lustre_dissect_element_obd_dqblk_dqb_curspace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2573 {
2574   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curspace);
2575
2576   return offset;
2577 }
2578
2579 static int
2580 lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2581 {
2582   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_ihardlimit);
2583
2584   return offset;
2585 }
2586
2587 static int
2588 lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2589 {
2590   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_isoftlimit);
2591
2592   return offset;
2593 }
2594
2595 static int
2596 lustre_dissect_element_obd_dqblk_dqb_curinodes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2597 {
2598   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curinodes);
2599
2600   return offset;
2601 }
2602
2603 static int
2604 lustre_dissect_element_obd_dqblk_dqb_btime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2605 {
2606
2607   nstime_t ns;
2608   /* timestamp */
2609   ns.secs = tvb_get_letohl(tvb,offset);
2610   ns.nsecs=0;
2611   proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_btime, tvb, offset, 8, &ns );
2612   offset+=8;
2613   return offset;
2614 }
2615
2616 static int
2617 lustre_dissect_element_obd_dqblk_dqb_itime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2618 {
2619   nstime_t ns;
2620   /* timestamp */
2621   ns.secs = tvb_get_letohl(tvb,offset);
2622   ns.nsecs=0;
2623   proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_itime, tvb, offset, 8, &ns );
2624   offset+=8;
2625
2626   return offset;
2627 }
2628
2629 static int
2630 lustre_dissect_element_obd_dqblk_dqb_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2631 {
2632   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_valid);
2633
2634   return offset;
2635 }
2636
2637 static int
2638 lustre_dissect_element_obd_dqblk_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2639 {
2640   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_padding);
2641
2642   return offset;
2643 }
2644
2645 int
2646 lustre_dissect_struct_obd_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2647 {
2648   proto_item *item = NULL;
2649   proto_tree *tree = NULL;
2650   int old_offset;
2651
2652
2653
2654   old_offset = offset;
2655
2656   if (parent_tree) {
2657     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2658     tree = proto_item_add_subtree(item, ett_lustre_obd_dqblk);
2659   }
2660
2661   offset = lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvb, offset, pinfo, tree);
2662
2663   offset = lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvb, offset, pinfo, tree);
2664
2665   offset = lustre_dissect_element_obd_dqblk_dqb_curspace(tvb, offset, pinfo, tree);
2666
2667   offset = lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvb, offset, pinfo, tree);
2668
2669   offset = lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvb, offset, pinfo, tree);
2670
2671   offset = lustre_dissect_element_obd_dqblk_dqb_curinodes(tvb, offset, pinfo, tree);
2672
2673   offset = lustre_dissect_element_obd_dqblk_dqb_btime(tvb, offset, pinfo, tree);
2674
2675   offset = lustre_dissect_element_obd_dqblk_dqb_itime(tvb, offset, pinfo, tree);
2676
2677   offset = lustre_dissect_element_obd_dqblk_dqb_valid(tvb, offset, pinfo, tree);
2678
2679   offset = lustre_dissect_element_obd_dqblk_padding(tvb, offset, pinfo, tree);
2680
2681
2682   proto_item_set_len(item, offset-old_offset);
2683
2684   return offset;
2685 }
2686
2687
2688 /* IDL: struct obd_quotactl { */
2689 /* IDL:         uint32 qc_cmd; */
2690 /* IDL:         uint32 qc_type; */
2691 /* IDL:         uint32 qc_id; */
2692 /* IDL:         uint32 qc_stat; */
2693 /* IDL:         struct obd_dqinfo { */
2694 /* IDL: } qc_dqinfo; */
2695 /* IDL:         struct obd_dqblk { */
2696 /* IDL: } qc_dqblk; */
2697 /* IDL: } */
2698
2699 static int
2700 lustre_dissect_element_obd_quotactl_qc_cmd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2701 {
2702   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_cmd);
2703
2704   return offset;
2705 }
2706
2707 static int
2708 lustre_dissect_element_obd_quotactl_qc_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2709 {
2710   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_type);
2711
2712   return offset;
2713 }
2714
2715 static int
2716 lustre_dissect_element_obd_quotactl_qc_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2717 {
2718   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_id);
2719
2720   return offset;
2721 }
2722
2723 static int
2724 lustre_dissect_element_obd_quotactl_qc_stat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2725 {
2726   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_stat);
2727
2728   return offset;
2729 }
2730
2731
2732
2733 static int
2734 lustre_dissect_element_obd_quotactl_qc_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2735 {
2736   offset=lustre_dissect_struct_obd_dqblk(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqblk);
2737   return offset;
2738 }
2739
2740 static int
2741 lustre_dissect_element_obd_quotactl_qc_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2742 {
2743   offset=lustre_dissect_struct_obd_dqinfo(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqinfo);
2744   return offset;
2745 }
2746
2747 int
2748 lustre_dissect_struct_obd_quotactl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2749 {
2750   proto_item *item = NULL;
2751   proto_tree *tree = NULL;
2752   int old_offset;
2753
2754   old_offset=offset;
2755
2756   if (parent_tree) {
2757     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2758     tree = proto_item_add_subtree(item, ett_lustre_obd_quotactl);
2759   }
2760
2761   offset=lustre_dissect_element_obd_quotactl_qc_cmd(tvb, offset, pinfo, tree);
2762
2763   offset=lustre_dissect_element_obd_quotactl_qc_type(tvb, offset, pinfo, tree);
2764
2765   offset=lustre_dissect_element_obd_quotactl_qc_id(tvb, offset, pinfo, tree);
2766
2767   offset=lustre_dissect_element_obd_quotactl_qc_stat(tvb, offset, pinfo, tree);
2768
2769   offset=lustre_dissect_element_obd_quotactl_qc_dqinfo(tvb, offset, pinfo, tree);
2770
2771   offset=lustre_dissect_element_obd_quotactl_qc_dqblk(tvb, offset, pinfo, tree);
2772
2773
2774   proto_item_set_len(item, offset-old_offset);
2775
2776   return offset;
2777 }
2778
2779
2780 /* IDL: struct quota_adjust_qunit { */
2781 /* IDL:         uint32 qaq_flags; */
2782 /* IDL:         uint32 qaq_id; */
2783 /* IDL:         uint64 qaq_bunit_sz; */
2784 /* IDL:         uint64 qaq_iunit_sz; */
2785 /* IDL:         uint64 padding1; */
2786 /* IDL: } */
2787
2788 static int
2789 lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2790 {
2791   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_flags);
2792
2793   return offset;
2794 }
2795
2796 static int
2797 lustre_dissect_element_quota_adjust_qunit_qaq_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2798 {
2799   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_id);
2800
2801   return offset;
2802 }
2803
2804 static int
2805 lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2806 {
2807   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_bunit_sz);
2808
2809   return offset;
2810 }
2811
2812 static int
2813 lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2814 {
2815   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_iunit_sz);
2816
2817   return offset;
2818 }
2819
2820 static int
2821 lustre_dissect_element_quota_adjust_qunit_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2822 {
2823   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_padding1);
2824
2825   return offset;
2826 }
2827
2828 int
2829 lustre_dissect_struct_quota_adjust_qunit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
2830 {
2831   proto_item *item = NULL;
2832   proto_tree *tree = NULL;
2833   int old_offset;
2834
2835
2836
2837   old_offset=offset;
2838
2839   if (parent_tree) {
2840     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2841     tree = proto_item_add_subtree(item, ett_lustre_quota_adjust_qunit);
2842   }
2843
2844   offset=lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvb, offset, pinfo, tree);
2845
2846   offset=lustre_dissect_element_quota_adjust_qunit_qaq_id(tvb, offset, pinfo, tree);
2847
2848   offset=lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvb, offset, pinfo, tree);
2849
2850   offset=lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvb, offset, pinfo, tree);
2851
2852   offset=lustre_dissect_element_quota_adjust_qunit_padding1(tvb, offset, pinfo, tree);
2853
2854
2855   proto_item_set_len(item, offset-old_offset);
2856
2857   return offset;
2858 }
2859
2860 /* I don't find where this struct appear on wire.. need to search mdc_setattr_pack() */
2861 /* IDL: struct mds_rec_setattr { */
2862 /* IDL:         uint32 sa_opcode; */
2863 /* IDL:         uint32 sa_fsuid; */
2864 /* IDL:         uint32 sa_fsgid; */
2865 /* IDL:         uint32 sa_cap; */
2866 /* IDL:         uint32 sa_suppgid; */
2867 /* IDL:         uint32 sa_mode; */
2868 /* IDL:         struct ll_fid { */
2869 /* IDL: } sa_fid; */
2870 /* IDL:         uint64 sa_valid; */
2871 /* IDL:         uint64 sa_size; */
2872 /* IDL:         uint64 sa_mtime; */
2873 /* IDL:         uint64 sa_atime; */
2874 /* IDL:         uint64 sa_ctime; */
2875 /* IDL:         uint32 sa_uid; */
2876 /* IDL:         uint32 sa_gid; */
2877 /* IDL:         uint32 sa_attr_flags; */
2878 /* IDL:         uint32 sa_padding; */
2879 /* IDL: } */
2880
2881 static int
2882 lustre_dissect_element_mds_rec_setattr_sa_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2883 {
2884   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_opcode);
2885
2886   return offset;
2887 }
2888
2889 static int
2890 lustre_dissect_element_mds_rec_setattr_sa_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2891 {
2892   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_fsuid);
2893
2894   return offset;
2895 }
2896
2897 static int
2898 lustre_dissect_element_mds_rec_setattr_sa_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2899 {
2900   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_fsgid);
2901
2902   return offset;
2903 }
2904
2905 static int
2906 lustre_dissect_element_mds_rec_setattr_sa_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2907 {
2908   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_cap);
2909
2910   return offset;
2911 }
2912
2913 static int
2914 lustre_dissect_element_mds_rec_setattr_sa_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2915 {
2916   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_suppgid);
2917
2918   return offset;
2919 }
2920
2921 static int
2922 lustre_dissect_element_mds_rec_setattr_sa_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2923 {
2924   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_mode);
2925
2926   return offset;
2927 }
2928
2929 static int
2930 lustre_dissect_element_mds_rec_setattr_sa_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2931 {
2932   //offset=lustre_dissect_struct_HASH(0x85af8d0)(tvb,offset,pinfo,tree,hf_lustre_mds_rec_setattr_sa_fid);
2933   
2934   return offset;
2935 }
2936
2937 static int
2938 lustre_dissect_element_mds_rec_setattr_sa_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2939 {
2940   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_valid);
2941
2942   return offset;
2943 }
2944
2945 static int
2946 lustre_dissect_element_mds_rec_setattr_sa_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2947 {
2948   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_size);
2949
2950   return offset;
2951 }
2952
2953 static int
2954 lustre_dissect_element_mds_rec_setattr_sa_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2955 {
2956   
2957   nstime_t ns;
2958   /* timestamp */
2959   ns.secs = tvb_get_letohl(tvb,offset);
2960   ns.nsecs=0;
2961   proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_mtime, tvb, offset, 8, &ns );
2962   offset+=8;
2963   return offset;
2964 }
2965
2966 static int
2967 lustre_dissect_element_mds_rec_setattr_sa_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2968 {
2969   nstime_t ns;
2970   /* timestamp */
2971   ns.secs = tvb_get_letohl(tvb,offset);
2972   ns.nsecs=0;
2973   proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_atime, tvb, offset, 8, &ns );
2974   offset+=8;
2975   return offset;
2976 }
2977
2978 static int
2979 lustre_dissect_element_mds_rec_setattr_sa_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2980 {
2981   nstime_t ns;
2982   /* timestamp */
2983   ns.secs = tvb_get_letohl(tvb,offset);
2984   ns.nsecs=0;
2985   proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_ctime, tvb, offset, 8, &ns );
2986   offset+=8;
2987   return offset;
2988 }
2989
2990 static int
2991 lustre_dissect_element_mds_rec_setattr_sa_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2992 {
2993   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_uid);
2994
2995   return offset;
2996 }
2997
2998 static int
2999 lustre_dissect_element_mds_rec_setattr_sa_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3000 {
3001   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_gid);
3002
3003   return offset;
3004 }
3005
3006 static int
3007 lustre_dissect_element_mds_rec_setattr_sa_attr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3008 {
3009   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_attr_flags);
3010
3011   return offset;
3012 }
3013
3014 static int
3015 lustre_dissect_element_mds_rec_setattr_sa_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3016 {
3017   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_padding);
3018
3019   return offset;
3020 }
3021
3022 int
3023 lustre_dissect_struct_mds_rec_setattr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3024 {
3025   proto_item *item = NULL;
3026   proto_tree *tree = NULL;
3027   int old_offset;
3028
3029   guint32 sa_opcode ; 
3030
3031
3032   old_offset=offset;
3033
3034   if (parent_tree) {
3035     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3036     tree = proto_item_add_subtree(item, ett_lustre_mds_rec_setattr);
3037   }
3038   sa_opcode=tvb_get_letohl(tvb,offset);
3039   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_t_vals, "Unknown sa_opc"));
3040
3041   offset=lustre_dissect_element_mds_rec_setattr_sa_opcode(tvb, offset, pinfo, tree);
3042
3043   offset=lustre_dissect_element_mds_rec_setattr_sa_fsuid(tvb, offset, pinfo, tree);
3044
3045   offset=lustre_dissect_element_mds_rec_setattr_sa_fsgid(tvb, offset, pinfo, tree);
3046
3047   offset=lustre_dissect_element_mds_rec_setattr_sa_cap(tvb, offset, pinfo, tree);
3048
3049   offset=lustre_dissect_element_mds_rec_setattr_sa_suppgid(tvb, offset, pinfo, tree);
3050
3051   offset=lustre_dissect_element_mds_rec_setattr_sa_mode(tvb, offset, pinfo, tree);
3052
3053   offset=lustre_dissect_element_mds_rec_setattr_sa_fid(tvb, offset, pinfo, tree);
3054
3055   offset=lustre_dissect_element_mds_rec_setattr_sa_valid(tvb, offset, pinfo, tree);
3056
3057   offset=lustre_dissect_element_mds_rec_setattr_sa_size(tvb, offset, pinfo, tree);
3058
3059   offset=lustre_dissect_element_mds_rec_setattr_sa_mtime(tvb, offset, pinfo, tree);
3060
3061   offset=lustre_dissect_element_mds_rec_setattr_sa_atime(tvb, offset, pinfo, tree);
3062
3063   offset=lustre_dissect_element_mds_rec_setattr_sa_ctime(tvb, offset, pinfo, tree);
3064
3065   offset=lustre_dissect_element_mds_rec_setattr_sa_uid(tvb, offset, pinfo, tree);
3066
3067   offset=lustre_dissect_element_mds_rec_setattr_sa_gid(tvb, offset, pinfo, tree);
3068
3069   offset=lustre_dissect_element_mds_rec_setattr_sa_attr_flags(tvb, offset, pinfo, tree);
3070
3071   offset=lustre_dissect_element_mds_rec_setattr_sa_padding(tvb, offset, pinfo, tree);
3072
3073
3074   proto_item_set_len(item, offset-old_offset);
3075
3076   return offset;
3077 }
3078
3079
3080 /* IDL: struct mds_rec_create { */
3081 /* IDL:         uint32 cr_opcode; */
3082 /* IDL:         uint32 cr_fsuid; */
3083 /* IDL:         uint32 cr_fsgid; */
3084 /* IDL:         uint32 cr_cap; */
3085 /* IDL:         uint32 cr_flags; */
3086 /* IDL:         uint32 cr_mode; */
3087 /* IDL:         struct ll_fid { */
3088 /* IDL: } cr_fid; */
3089 /* IDL:         struct ll_fid { */
3090 /* IDL: } cr_replayfid; */
3091 /* IDL:         uint64 cr_time; */
3092 /* IDL:         uint64 cr_rdev; */
3093 /* IDL:         uint32 cr_suppgid; */
3094 /* IDL:         uint32 cr_padding_1; */
3095 /* IDL:         uint32 cr_padding_2; */
3096 /* IDL:         uint32 cr_padding_3; */
3097 /* IDL:         uint32 cr_padding_4; */
3098 /* IDL:         uint32 cr_padding_5; */
3099 /* IDL: } */
3100
3101 static int
3102 lustre_dissect_element_mds_rec_create_cr_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3103 {
3104   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_opcode);
3105
3106   return offset;
3107 }
3108
3109 static int
3110 lustre_dissect_element_mds_rec_create_cr_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3111 {
3112   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_fsuid);
3113
3114   return offset;
3115 }
3116
3117 static int
3118 lustre_dissect_element_mds_rec_create_cr_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3119 {
3120   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_fsgid);
3121
3122   return offset;
3123 }
3124
3125 static int
3126 lustre_dissect_element_mds_rec_create_cr_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3127 {
3128   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_cap);
3129
3130   return offset;
3131 }
3132
3133 static int
3134 lustre_dissect_element_mds_rec_create_cr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3135 {
3136   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_flags);
3137
3138   return offset;
3139 }
3140
3141 static int
3142 lustre_dissect_element_mds_rec_create_cr_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3143 {
3144   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_mode);
3145
3146   return offset;
3147 }
3148
3149 static int
3150 lustre_dissect_element_mds_rec_create_cr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3151 {
3152   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_create_cr_fid);
3153   return offset;
3154 }
3155
3156 static int
3157 lustre_dissect_element_mds_rec_create_cr_replayfid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3158 {
3159   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_create_cr_replayfid);
3160   return offset;
3161 }
3162
3163 static int
3164 lustre_dissect_element_mds_rec_create_cr_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3165 {
3166   nstime_t ns;
3167   /* timestamp */
3168   ns.secs = tvb_get_letohl(tvb,offset);
3169   ns.nsecs=0;
3170   proto_tree_add_time(tree, hf_lustre_mds_rec_create_cr_time, tvb, offset, 8, &ns );
3171   offset+=8;
3172   return offset;
3173
3174 }
3175
3176 static int
3177 lustre_dissect_element_mds_rec_create_cr_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3178 {
3179   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_rdev);
3180
3181   return offset;
3182 }
3183
3184 static int
3185 lustre_dissect_element_mds_rec_create_cr_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3186 {
3187   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_suppgid);
3188
3189   return offset;
3190 }
3191
3192 static int
3193 lustre_dissect_element_mds_rec_create_cr_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3194 {
3195   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_1);
3196
3197   return offset;
3198 }
3199
3200 static int
3201 lustre_dissect_element_mds_rec_create_cr_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3202 {
3203   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_2);
3204
3205   return offset;
3206 }
3207
3208 static int
3209 lustre_dissect_element_mds_rec_create_cr_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3210 {
3211   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_3);
3212
3213   return offset;
3214 }
3215
3216 static int
3217 lustre_dissect_element_mds_rec_create_cr_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3218 {
3219   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_4);
3220
3221   return offset;
3222 }
3223
3224 static int
3225 lustre_dissect_element_mds_rec_create_cr_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3226 {
3227   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_5);
3228
3229   return offset;
3230 }
3231
3232 int
3233 lustre_dissect_struct_mds_rec_create(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3234 {
3235   proto_item *item = NULL;
3236   proto_tree *tree = NULL;
3237   int old_offset;
3238   guint32 cr_opcode ;
3239
3240
3241
3242   old_offset=offset;
3243
3244   if (parent_tree) {
3245     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3246     tree = proto_item_add_subtree(item, ett_lustre_mds_rec_create);
3247   }
3248   cr_opcode=tvb_get_letohl(tvb,offset);
3249   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_t_vals, "Unknown cr_opc"));
3250
3251   offset=lustre_dissect_element_mds_rec_create_cr_opcode(tvb, offset, pinfo, tree);
3252
3253   offset=lustre_dissect_element_mds_rec_create_cr_fsuid(tvb, offset, pinfo, tree);
3254
3255   offset=lustre_dissect_element_mds_rec_create_cr_fsgid(tvb, offset, pinfo, tree);
3256
3257   offset=lustre_dissect_element_mds_rec_create_cr_cap(tvb, offset, pinfo, tree);
3258
3259   offset=lustre_dissect_element_mds_rec_create_cr_flags(tvb, offset, pinfo, tree);
3260
3261   offset=lustre_dissect_element_mds_rec_create_cr_mode(tvb, offset, pinfo, tree);
3262
3263   offset=lustre_dissect_element_mds_rec_create_cr_fid(tvb, offset, pinfo, tree);
3264
3265   offset=lustre_dissect_element_mds_rec_create_cr_replayfid(tvb, offset, pinfo, tree);
3266
3267   offset=lustre_dissect_element_mds_rec_create_cr_time(tvb, offset, pinfo, tree);
3268
3269   offset=lustre_dissect_element_mds_rec_create_cr_rdev(tvb, offset, pinfo, tree);
3270
3271   offset=lustre_dissect_element_mds_rec_create_cr_suppgid(tvb, offset, pinfo, tree);
3272
3273   offset=lustre_dissect_element_mds_rec_create_cr_padding_1(tvb, offset, pinfo, tree);
3274
3275   offset=lustre_dissect_element_mds_rec_create_cr_padding_2(tvb, offset, pinfo, tree);
3276
3277   offset=lustre_dissect_element_mds_rec_create_cr_padding_3(tvb, offset, pinfo, tree);
3278
3279   offset=lustre_dissect_element_mds_rec_create_cr_padding_4(tvb, offset, pinfo, tree);
3280
3281   offset=lustre_dissect_element_mds_rec_create_cr_padding_5(tvb, offset, pinfo, tree);
3282
3283
3284   proto_item_set_len(item, offset-old_offset);
3285
3286
3287   return offset;
3288 }
3289
3290
3291
3292 /* TODO : find where this structure appear ! */
3293 /* IDL: struct mds_rec_link { */
3294 /* IDL:         uint32 lk_opcode; */
3295 /* IDL:         uint32 lk_fsuid; */
3296 /* IDL:         uint32 lk_fsgid; */
3297 /* IDL:         uint32 lk_cap; */
3298 /* IDL:         uint32 lk_suppgid1; */
3299 /* IDL:         uint32 lk_suppgid2; */
3300 /* IDL:         struct ll_fid { */
3301 /* IDL: } lk_fid1; */
3302 /* IDL:         struct ll_fid { */
3303 /* IDL: } lk_fid2; */
3304 /* IDL:         uint64 lk_time; */
3305 /* IDL:         uint32 lk_padding_1; */
3306 /* IDL:         uint32 lk_padding_2; */
3307 /* IDL:         uint32 lk_padding_3; */
3308 /* IDL:         uint32 lk_padding_4; */
3309 /* IDL: } */
3310
3311 static int
3312 lustre_dissect_element_mds_rec_link_lk_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3313 {
3314   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_opcode);
3315
3316   return offset;
3317 }
3318
3319 static int
3320 lustre_dissect_element_mds_rec_link_lk_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3321 {
3322   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_fsuid);
3323
3324   return offset;
3325 }
3326
3327 static int
3328 lustre_dissect_element_mds_rec_link_lk_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3329 {
3330   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_fsgid);
3331
3332   return offset;
3333 }
3334
3335 static int
3336 lustre_dissect_element_mds_rec_link_lk_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3337 {
3338   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_cap);
3339
3340   return offset;
3341 }
3342
3343 static int
3344 lustre_dissect_element_mds_rec_link_lk_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3345 {
3346   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_suppgid1);
3347
3348   return offset;
3349 }
3350
3351 static int
3352 lustre_dissect_element_mds_rec_link_lk_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3353 {
3354   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_suppgid2);
3355
3356   return offset;
3357 }
3358
3359 static int
3360 lustre_dissect_element_mds_rec_link_lk_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3361 {
3362   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_link_lk_fid1);
3363   return offset;
3364 }
3365
3366 static int
3367 lustre_dissect_element_mds_rec_link_lk_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3368 {
3369   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_link_lk_fid2);
3370   return offset;
3371 }
3372
3373 static int
3374 lustre_dissect_element_mds_rec_link_lk_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3375 {
3376   nstime_t ns;
3377   /* timestamp */
3378   ns.secs = tvb_get_letohl(tvb,offset);
3379   ns.nsecs=0;
3380   proto_tree_add_time(tree, hf_lustre_mds_rec_link_lk_time, tvb, offset, 8, &ns );
3381   offset+=8;
3382   return offset;
3383 }
3384
3385 static int
3386 lustre_dissect_element_mds_rec_link_lk_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3387 {
3388   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_1);
3389
3390   return offset;
3391 }
3392
3393 static int
3394 lustre_dissect_element_mds_rec_link_lk_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3395 {
3396   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_2);
3397
3398   return offset;
3399 }
3400
3401 static int
3402 lustre_dissect_element_mds_rec_link_lk_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3403 {
3404   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_3);
3405
3406   return offset;
3407 }
3408
3409 static int
3410 lustre_dissect_element_mds_rec_link_lk_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3411 {
3412   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_4);
3413
3414   return offset;
3415 }
3416
3417 int
3418 lustre_dissect_struct_mds_rec_link(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3419 {
3420   proto_item *item = NULL;
3421   proto_tree *tree = NULL;
3422   int old_offset;
3423
3424   guint32 lk_opcode ;
3425
3426
3427   old_offset=offset;
3428
3429   if (parent_tree) {
3430     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3431     tree = proto_item_add_subtree(item, ett_lustre_mds_rec_link);
3432   }
3433   lk_opcode=tvb_get_letohl(tvb,offset);
3434   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_t_vals, "Unknown lk_opc"));
3435
3436   offset=lustre_dissect_element_mds_rec_link_lk_opcode(tvb, offset, pinfo, tree);
3437
3438   offset=lustre_dissect_element_mds_rec_link_lk_fsuid(tvb, offset, pinfo, tree);
3439
3440   offset=lustre_dissect_element_mds_rec_link_lk_fsgid(tvb, offset, pinfo, tree);
3441
3442   offset=lustre_dissect_element_mds_rec_link_lk_cap(tvb, offset, pinfo, tree);
3443
3444   offset=lustre_dissect_element_mds_rec_link_lk_suppgid1(tvb, offset, pinfo, tree);
3445
3446   offset=lustre_dissect_element_mds_rec_link_lk_suppgid2(tvb, offset, pinfo, tree);
3447
3448   offset=lustre_dissect_element_mds_rec_link_lk_fid1(tvb, offset, pinfo, tree);
3449
3450   offset=lustre_dissect_element_mds_rec_link_lk_fid2(tvb, offset, pinfo, tree);
3451
3452   offset=lustre_dissect_element_mds_rec_link_lk_time(tvb, offset, pinfo, tree);
3453
3454   offset=lustre_dissect_element_mds_rec_link_lk_padding_1(tvb, offset, pinfo, tree);
3455
3456   offset=lustre_dissect_element_mds_rec_link_lk_padding_2(tvb, offset, pinfo, tree);
3457
3458   offset=lustre_dissect_element_mds_rec_link_lk_padding_3(tvb, offset, pinfo, tree);
3459
3460   offset=lustre_dissect_element_mds_rec_link_lk_padding_4(tvb, offset, pinfo, tree);
3461
3462
3463   proto_item_set_len(item, offset-old_offset);
3464
3465   return offset;
3466 }
3467
3468
3469
3470 /* IDL: struct mds_rec_unlink { */
3471 /* IDL:         uint32 ul_opcode; */
3472 /* IDL:         uint32 ul_fsuid; */
3473 /* IDL:         uint32 ul_fsgid; */
3474 /* IDL:         uint32 ul_cap; */
3475 /* IDL:         uint32 ul_suppgid; */
3476 /* IDL:         uint32 ul_mode; */
3477 /* IDL:         struct ll_fid { */
3478 /* IDL: } ul_fid1; */
3479 /* IDL:         struct ll_fid { */
3480 /* IDL: } ul_fid2; */
3481 /* IDL:         uint64 ul_time; */
3482 /* IDL:         uint32 ul_padding_1; */
3483 /* IDL:         uint32 ul_padding_2; */
3484 /* IDL:         uint32 ul_padding_3; */
3485 /* IDL:         uint32 ul_padding_4; */
3486 /* IDL: } */
3487
3488 static int
3489 lustre_dissect_element_mds_rec_unlink_ul_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3490 {
3491   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_opcode);
3492
3493   return offset;
3494 }
3495
3496 static int
3497 lustre_dissect_element_mds_rec_unlink_ul_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3498 {
3499   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_fsuid);
3500
3501   return offset;
3502 }
3503
3504 static int
3505 lustre_dissect_element_mds_rec_unlink_ul_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3506 {
3507   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_fsgid);
3508
3509   return offset;
3510 }
3511
3512 static int
3513 lustre_dissect_element_mds_rec_unlink_ul_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3514 {
3515   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_cap);
3516
3517   return offset;
3518 }
3519
3520 static int
3521 lustre_dissect_element_mds_rec_unlink_ul_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3522 {
3523   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_suppgid);
3524
3525   return offset;
3526 }
3527
3528 static int
3529 lustre_dissect_element_mds_rec_unlink_ul_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3530 {
3531   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_mode);
3532
3533   return offset;
3534 }
3535
3536 static int
3537 lustre_dissect_element_mds_rec_unlink_ul_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3538 {
3539   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_unlink_ul_fid1);
3540   return offset;
3541 }
3542
3543 static int
3544 lustre_dissect_element_mds_rec_unlink_ul_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3545 {
3546   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_unlink_ul_fid2);
3547   return offset;
3548 }
3549
3550 static int
3551 lustre_dissect_element_mds_rec_unlink_ul_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3552 {
3553   nstime_t ns;
3554   /* timestamp */
3555   ns.secs = tvb_get_letohl(tvb,offset);
3556   ns.nsecs=0;
3557   proto_tree_add_time(tree,hf_lustre_mds_rec_unlink_ul_time , tvb, offset, 8, &ns );
3558   offset+=8;
3559   return offset;
3560 }
3561
3562 static int
3563 lustre_dissect_element_mds_rec_unlink_ul_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3564 {
3565   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_1);
3566
3567   return offset;
3568 }
3569
3570 static int
3571 lustre_dissect_element_mds_rec_unlink_ul_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3572 {
3573   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_2);
3574
3575   return offset;
3576 }
3577
3578 static int
3579 lustre_dissect_element_mds_rec_unlink_ul_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3580 {
3581   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_3);
3582
3583   return offset;
3584 }
3585
3586 static int
3587 lustre_dissect_element_mds_rec_unlink_ul_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3588 {
3589   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_4);
3590
3591   return offset;
3592 }
3593
3594 int
3595 lustre_dissect_struct_mds_rec_unlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3596 {
3597   proto_item *item = NULL;
3598   proto_tree *tree = NULL;
3599   int old_offset;
3600
3601   guint32 ul_opcode ;
3602
3603
3604   old_offset=offset;
3605
3606   if (parent_tree) {
3607     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3608     tree = proto_item_add_subtree(item, ett_lustre_mds_rec_unlink);
3609   }
3610
3611   ul_opcode=tvb_get_letohl(tvb,offset);
3612   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_t_vals, "Unknown ul_opc"));
3613
3614   offset=lustre_dissect_element_mds_rec_unlink_ul_opcode(tvb, offset, pinfo, tree);
3615
3616   offset=lustre_dissect_element_mds_rec_unlink_ul_fsuid(tvb, offset, pinfo, tree);
3617
3618   offset=lustre_dissect_element_mds_rec_unlink_ul_fsgid(tvb, offset, pinfo, tree);
3619
3620   offset=lustre_dissect_element_mds_rec_unlink_ul_cap(tvb, offset, pinfo, tree);
3621
3622   offset=lustre_dissect_element_mds_rec_unlink_ul_suppgid(tvb, offset, pinfo, tree);
3623
3624   offset=lustre_dissect_element_mds_rec_unlink_ul_mode(tvb, offset, pinfo, tree);
3625
3626   offset=lustre_dissect_element_mds_rec_unlink_ul_fid1(tvb, offset, pinfo, tree);
3627
3628   offset=lustre_dissect_element_mds_rec_unlink_ul_fid2(tvb, offset, pinfo, tree);
3629
3630   offset=lustre_dissect_element_mds_rec_unlink_ul_time(tvb, offset, pinfo, tree);
3631
3632   offset=lustre_dissect_element_mds_rec_unlink_ul_padding_1(tvb, offset, pinfo, tree);
3633
3634   offset=lustre_dissect_element_mds_rec_unlink_ul_padding_2(tvb, offset, pinfo, tree);
3635
3636   offset=lustre_dissect_element_mds_rec_unlink_ul_padding_3(tvb, offset, pinfo, tree);
3637
3638   offset=lustre_dissect_element_mds_rec_unlink_ul_padding_4(tvb, offset, pinfo, tree);
3639
3640
3641   proto_item_set_len(item, offset-old_offset);
3642
3643   return offset;
3644 }
3645
3646
3647
3648 /* IDL: struct mds_rec_rename { */
3649 /* IDL:         uint32 rn_opcode; */
3650 /* IDL:         uint32 rn_fsuid; */
3651 /* IDL:         uint32 rn_fsgid; */
3652 /* IDL:         uint32 rn_cap; */
3653 /* IDL:         uint32 rn_suppgid1; */
3654 /* IDL:         uint32 rn_suppgid2; */
3655 /* IDL:         struct ll_fid { */
3656 /* IDL: } rn_fid1; */
3657 /* IDL:         struct ll_fid { */
3658 /* IDL: } rn_fid2; */
3659 /* IDL:         uint64 rn_time; */
3660 /* IDL:         uint32 rn_padding_1; */
3661 /* IDL:         uint32 rn_padding_2; */
3662 /* IDL:         uint32 rn_padding_3; */
3663 /* IDL:         uint32 rn_padding_4; */
3664 /* IDL: } */
3665
3666 static int
3667 lustre_dissect_element_mds_rec_rename_rn_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3668 {
3669   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_opcode);
3670
3671   return offset;
3672 }
3673
3674 static int
3675 lustre_dissect_element_mds_rec_rename_rn_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3676 {
3677   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_fsuid);
3678
3679   return offset;
3680 }
3681
3682 static int
3683 lustre_dissect_element_mds_rec_rename_rn_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3684 {
3685   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_fsgid);
3686
3687   return offset;
3688 }
3689
3690 static int
3691 lustre_dissect_element_mds_rec_rename_rn_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3692 {
3693   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_cap);
3694
3695   return offset;
3696 }
3697
3698 static int
3699 lustre_dissect_element_mds_rec_rename_rn_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3700 {
3701   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_suppgid1);
3702
3703   return offset;
3704 }
3705
3706 static int
3707 lustre_dissect_element_mds_rec_rename_rn_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3708 {
3709   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_suppgid2);
3710
3711   return offset;
3712 }
3713
3714 static int
3715 lustre_dissect_element_mds_rec_rename_rn_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3716 {
3717   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_rename_rn_fid1);
3718   return offset;
3719 }
3720
3721 static int
3722 lustre_dissect_element_mds_rec_rename_rn_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3723 {
3724   offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_rename_rn_fid2);
3725   return offset;
3726 }
3727
3728 static int
3729 lustre_dissect_element_mds_rec_rename_rn_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3730 {
3731   nstime_t ns;
3732   /* timestamp */
3733   ns.secs = tvb_get_letohl(tvb,offset);
3734   ns.nsecs=0;
3735   proto_tree_add_time(tree, hf_lustre_mds_rec_rename_rn_time, tvb, offset, 8, &ns );
3736   offset+=8;
3737   return offset;
3738 }
3739
3740 static int
3741 lustre_dissect_element_mds_rec_rename_rn_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3742 {
3743   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_1);
3744
3745   return offset;
3746 }
3747
3748 static int
3749 lustre_dissect_element_mds_rec_rename_rn_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3750 {
3751   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_2);
3752
3753   return offset;
3754 }
3755
3756 static int
3757 lustre_dissect_element_mds_rec_rename_rn_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3758 {
3759   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_3);
3760
3761   return offset;
3762 }
3763
3764 static int
3765 lustre_dissect_element_mds_rec_rename_rn_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3766 {
3767   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_4);
3768
3769   return offset;
3770 }
3771
3772 int
3773 lustre_dissect_struct_mds_rec_rename(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3774 {
3775   proto_item *item = NULL;
3776   proto_tree *tree = NULL;
3777   int old_offset;
3778
3779   guint32 rn_opcode ; 
3780
3781
3782   old_offset=offset;
3783
3784   if (parent_tree) {
3785     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3786     tree = proto_item_add_subtree(item, ett_lustre_mds_rec_rename);
3787   }
3788
3789   rn_opcode=tvb_get_letohl(tvb,offset);
3790   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_t_vals, "Unknown rn_opc"));
3791
3792   offset=lustre_dissect_element_mds_rec_rename_rn_opcode(tvb, offset, pinfo, tree);
3793
3794   offset=lustre_dissect_element_mds_rec_rename_rn_fsuid(tvb, offset, pinfo, tree);
3795
3796   offset=lustre_dissect_element_mds_rec_rename_rn_fsgid(tvb, offset, pinfo, tree);
3797
3798   offset=lustre_dissect_element_mds_rec_rename_rn_cap(tvb, offset, pinfo, tree);
3799
3800   offset=lustre_dissect_element_mds_rec_rename_rn_suppgid1(tvb, offset, pinfo, tree);
3801
3802   offset=lustre_dissect_element_mds_rec_rename_rn_suppgid2(tvb, offset, pinfo, tree);
3803
3804   offset=lustre_dissect_element_mds_rec_rename_rn_fid1(tvb, offset, pinfo, tree);
3805
3806   offset=lustre_dissect_element_mds_rec_rename_rn_fid2(tvb, offset, pinfo, tree);
3807
3808   offset=lustre_dissect_element_mds_rec_rename_rn_time(tvb, offset, pinfo, tree);
3809
3810   offset=lustre_dissect_element_mds_rec_rename_rn_padding_1(tvb, offset, pinfo, tree);
3811
3812   offset=lustre_dissect_element_mds_rec_rename_rn_padding_2(tvb, offset, pinfo, tree);
3813
3814   offset=lustre_dissect_element_mds_rec_rename_rn_padding_3(tvb, offset, pinfo, tree);
3815
3816   offset=lustre_dissect_element_mds_rec_rename_rn_padding_4(tvb, offset, pinfo, tree);
3817
3818
3819   proto_item_set_len(item, offset-old_offset);
3820
3821   return offset;
3822 }
3823
3824
3825 /* TODO : find where this structure appear */
3826
3827 /* IDL: struct lov_desc { */
3828 /* IDL:         uint32 ld_tgt_count; */
3829 /* IDL:         uint32 ld_active_tgt_count; */
3830 /* IDL:         uint32 ld_default_stripe_count; */
3831 /* IDL:         uint32 ld_pattern; */
3832 /* IDL:         uint64 ld_default_stripe_size; */
3833 /* IDL:         uint64 ld_default_stripe_offset; */
3834 /* IDL:         uint32 ld_padding_0; */
3835 /* IDL:         uint32 ld_qos_maxage; */
3836 /* IDL:         uint32 ld_padding_1; */
3837 /* IDL:         uint32 ld_padding_2; */
3838 /* IDL:         struct obd_uuid { */
3839 /* IDL: } ld_uuid; */
3840 /* IDL: } */
3841
3842 static int
3843 lustre_dissect_element_lov_desc_ld_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3844 {
3845   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_tgt_count);
3846
3847   return offset;
3848 }
3849
3850 static int
3851 lustre_dissect_element_lov_desc_ld_active_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3852 {
3853   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_active_tgt_count);
3854
3855   return offset;
3856 }
3857
3858 static int
3859 lustre_dissect_element_lov_desc_ld_default_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3860 {
3861   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_count);
3862
3863   return offset;
3864 }
3865
3866 static int
3867 lustre_dissect_element_lov_desc_ld_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3868 {
3869   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_pattern);
3870
3871   return offset;
3872 }
3873
3874 static int
3875 lustre_dissect_element_lov_desc_ld_default_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3876 {
3877   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_size);
3878
3879   return offset;
3880 }
3881
3882 static int
3883 lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3884 {
3885   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_offset);
3886
3887   return offset;
3888 }
3889
3890 static int
3891 lustre_dissect_element_lov_desc_ld_padding_0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3892 {
3893   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_0);
3894
3895   return offset;
3896 }
3897
3898 static int
3899 lustre_dissect_element_lov_desc_ld_qos_maxage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3900 {
3901   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_qos_maxage);
3902
3903   return offset;
3904 }
3905
3906 static int
3907 lustre_dissect_element_lov_desc_ld_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3908 {
3909   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_1);
3910
3911   return offset;
3912 }
3913
3914 static int
3915 lustre_dissect_element_lov_desc_ld_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3916 {
3917   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_2);
3918
3919   return offset;
3920 }
3921
3922 static int
3923 lustre_dissect_element_lov_desc_ld_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3924 {
3925   //offset=lustre_dissect_struct_HASH(0x85bade8)(tvb,offset,pinfo,tree,hf_lustre_lov_desc_ld_uuid);
3926   return offset;
3927 }
3928
3929 int
3930 lustre_dissect_struct_lov_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3931 {
3932   proto_item *item = NULL;
3933   proto_tree *tree = NULL;
3934   int old_offset;
3935
3936
3937
3938   old_offset=offset;
3939
3940   if (parent_tree) {
3941     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3942     tree = proto_item_add_subtree(item, ett_lustre_lov_desc);
3943   }
3944
3945   offset=lustre_dissect_element_lov_desc_ld_tgt_count(tvb, offset, pinfo, tree);
3946
3947   offset=lustre_dissect_element_lov_desc_ld_active_tgt_count(tvb, offset, pinfo, tree);
3948
3949   offset=lustre_dissect_element_lov_desc_ld_default_stripe_count(tvb, offset, pinfo, tree);
3950
3951   offset=lustre_dissect_element_lov_desc_ld_pattern(tvb, offset, pinfo, tree);
3952
3953   offset=lustre_dissect_element_lov_desc_ld_default_stripe_size(tvb, offset, pinfo, tree);
3954
3955   offset=lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvb, offset, pinfo, tree);
3956
3957   offset=lustre_dissect_element_lov_desc_ld_padding_0(tvb, offset, pinfo, tree);
3958
3959   offset=lustre_dissect_element_lov_desc_ld_qos_maxage(tvb, offset, pinfo, tree);
3960
3961   offset=lustre_dissect_element_lov_desc_ld_padding_1(tvb, offset, pinfo, tree);
3962
3963   offset=lustre_dissect_element_lov_desc_ld_padding_2(tvb, offset, pinfo, tree);
3964
3965   offset=lustre_dissect_element_lov_desc_ld_uuid(tvb, offset, pinfo, tree);
3966
3967
3968   proto_item_set_len(item, offset-old_offset);
3969
3970   return offset;
3971 }
3972
3973 /* IDL: struct obd_uuid { */
3974 /*        char uuid[40]; */
3975 /* IDL: } */
3976
3977 static int
3978 lustre_dissect_struct_obd_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
3979 {
3980
3981   /* the lenght of the string is 40 bytes max, with  \0 inside */
3982
3983   proto_tree_add_item(parent_tree, hf_index, tvb, offset, 40, TRUE);
3984
3985
3986   offset+=40;
3987   return offset;
3988 }
3989
3990
3991
3992 /* IDL: struct ldlm_res_id { */
3993 /* IDL:         uint64 name[4]; */
3994 /* IDL: } */
3995
3996 static int
3997 lustre_dissect_element_ldlm_res_id_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3998 {
3999   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_res_id_name);
4000
4001   return offset;
4002 }
4003
4004 static int
4005 lustre_dissect_element_ldlm_res_id_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4006 {
4007   int i;
4008   for (i = 0; i < 4; i++)
4009     offset=lustre_dissect_element_ldlm_res_id_name_(tvb, offset, pinfo, tree);
4010
4011   return offset;
4012 }
4013
4014
4015
4016 int
4017 lustre_dissect_struct_ldlm_res_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4018 {
4019   proto_item *item = NULL;
4020   proto_tree *tree = NULL;
4021   int old_offset;
4022
4023
4024
4025   old_offset=offset;
4026
4027   if (parent_tree) {
4028     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4029     tree = proto_item_add_subtree(item, ett_lustre_ldlm_res_id);
4030   }
4031
4032   offset=lustre_dissect_element_ldlm_res_id_name(tvb, offset, pinfo, tree);
4033
4034
4035   proto_item_set_len(item, offset-old_offset);
4036
4037   return offset;
4038 }
4039
4040
4041 /* IDL: enum { */
4042 /* IDL:         LCK_MINMODE=0, */
4043 /* IDL:         LCK_EX=1, */
4044 /* IDL:         LCK_PW=2, */
4045 /* IDL:         LCK_PR=4, */
4046 /* IDL:         LCK_CW=8, */
4047 /* IDL:         LCK_CR=16, */
4048 /* IDL:         LCK_NL=32, */
4049 /* IDL:         LCK_GROUP=64, */
4050 /* IDL:         LCK_MAXMODE, */
4051 /* IDL: } */
4052
4053 int
4054 lustre_dissect_enum_ldlm_mode_t(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
4055 {
4056   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index);
4057   return offset;
4058 }
4059
4060
4061 /* IDL: enum { */
4062 /* IDL:         LDLM_PLAIN=10, */
4063 /* IDL:         LDLM_EXTENT=11, */
4064 /* IDL:         LDLM_FLOCK=12, */
4065 /* IDL:         LDLM_IBITS=13, */
4066 /* IDL:         LDLM_MAX_TYPE, */
4067 /* IDL: } */
4068
4069 int
4070 lustre_dissect_enum_ldlm_type_t(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
4071 {
4072   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type );
4073   return offset;
4074 }
4075
4076 /* IDL: struct ldlm_extent { */
4077 /* IDL:         uint64 start; */
4078 /* IDL:         uint64 end; */
4079 /* IDL:         uint64 gid; */
4080 /* IDL: } */
4081
4082 static int
4083 lustre_dissect_element_ldlm_extent_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4084 {
4085   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_start);
4086
4087   return offset;
4088 }
4089
4090 static int
4091 lustre_dissect_element_ldlm_extent_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4092 {
4093   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_end);
4094
4095   return offset;
4096 }
4097
4098 static int
4099 lustre_dissect_element_ldlm_extent_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4100 {
4101   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_gid);
4102
4103   return offset;
4104 }
4105
4106 int
4107 lustre_dissect_struct_ldlm_extent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4108 {
4109   proto_item *item = NULL;
4110   proto_tree *tree = NULL;
4111   int old_offset;
4112
4113
4114
4115   old_offset=offset;
4116
4117   if (parent_tree) {
4118     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4119     tree = proto_item_add_subtree(item, ett_lustre_ldlm_extent);
4120   }
4121
4122   offset=lustre_dissect_element_ldlm_extent_start(tvb, offset, pinfo, tree);
4123
4124   offset=lustre_dissect_element_ldlm_extent_end(tvb, offset, pinfo, tree);
4125
4126   offset=lustre_dissect_element_ldlm_extent_gid(tvb, offset, pinfo, tree);
4127
4128
4129   proto_item_set_len(item, offset-old_offset);
4130
4131   return offset;
4132 }
4133
4134 /* IDL: struct ldlm_inodebits { */
4135 /* IDL:         uint64 bits; */
4136 /* IDL: } */
4137
4138 static int
4139 lustre_dissect_element_ldlm_inodebits_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4140 {
4141   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_inodebits_bits);
4142
4143   return offset;
4144 }
4145
4146 int
4147 lustre_dissect_struct_ldlm_inodebits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4148 {
4149   proto_item *item = NULL;
4150   proto_tree *tree = NULL;
4151   int old_offset;
4152
4153
4154
4155   old_offset=offset;
4156
4157   if (parent_tree) {
4158     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4159     tree = proto_item_add_subtree(item, ett_lustre_ldlm_inodebits);
4160   }
4161
4162   offset=lustre_dissect_element_ldlm_inodebits_bits(tvb, offset, pinfo, tree);
4163
4164
4165   proto_item_set_len(item, offset-old_offset);
4166
4167   return offset;
4168 }
4169
4170 /* IDL: struct ldlm_flock { */
4171 /* IDL:         uint64 start; */
4172 /* IDL:         uint64 end; */
4173 /* IDL:         uint64 blocking_export; */
4174 /* IDL:         uint32 blocking_pid; */
4175 /* IDL:         uint32 pid; */
4176 /* IDL: } */
4177
4178 static int
4179 lustre_dissect_element_ldlm_flock_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4180 {
4181   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_start);
4182
4183   return offset;
4184 }
4185
4186 static int
4187 lustre_dissect_element_ldlm_flock_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4188 {
4189   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_end);
4190
4191   return offset;
4192 }
4193
4194 static int
4195 lustre_dissect_element_ldlm_flock_blocking_export(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4196 {
4197   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_blocking_export);
4198
4199   return offset;
4200 }
4201
4202 static int
4203 lustre_dissect_element_ldlm_flock_blocking_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4204 {
4205   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_blocking_pid);
4206
4207   return offset;
4208 }
4209
4210 static int
4211 lustre_dissect_element_ldlm_flock_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4212 {
4213   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_pid);
4214
4215   return offset;
4216 }
4217
4218 int
4219 lustre_dissect_struct_ldlm_flock(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4220 {
4221   proto_item *item = NULL;
4222   proto_tree *tree = NULL;
4223   int old_offset;
4224
4225
4226
4227   old_offset=offset;
4228
4229   if (parent_tree) {
4230     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4231     tree = proto_item_add_subtree(item, ett_lustre_ldlm_flock);
4232   }
4233
4234   offset=lustre_dissect_element_ldlm_flock_start(tvb, offset, pinfo, tree);
4235
4236   offset=lustre_dissect_element_ldlm_flock_end(tvb, offset, pinfo, tree);
4237
4238   offset=lustre_dissect_element_ldlm_flock_blocking_export(tvb, offset, pinfo, tree);
4239
4240   offset=lustre_dissect_element_ldlm_flock_blocking_pid(tvb, offset, pinfo, tree);
4241
4242   offset=lustre_dissect_element_ldlm_flock_pid(tvb, offset, pinfo, tree);
4243
4244
4245   proto_item_set_len(item, offset-old_offset);
4246
4247   return offset;
4248 }
4249
4250 /* IDL: struct ldlm_intent { */
4251 /* IDL:         uint64 opc; */
4252 /* IDL: } */
4253
4254 static int
4255 lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4256 {
4257   guint32 opcode;
4258   /* this opcode is like a flag*/
4259   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_open    );   
4260   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_creat   );   
4261   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_readdir );   
4262   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getattr );   
4263   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_lookup  );             
4264   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_unlink  );   
4265   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getxattr);   
4266   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_exec    );   
4267   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_pin     );   
4268   opcode = tvb_get_letohl(tvb,offset);
4269
4270   display_info_str(tree->parent, pinfo->cinfo, COL_INFO, "[ intent :");
4271   if(opcode & IT_OPEN    ){
4272     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " open");
4273     proto_item_append_text(tree, " open" );
4274   }
4275   if(opcode & IT_CREAT   ){
4276     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " create");
4277     proto_item_append_text(tree, " create" );
4278   }
4279   if(opcode & IT_READDIR ){
4280     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " readdir");
4281     proto_item_append_text(tree, " readdir" );
4282   }
4283   if(opcode & IT_GETATTR ){
4284     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getattr");
4285     proto_item_append_text(tree, " getattr" );
4286   }
4287   if(opcode & IT_LOOKUP  ){
4288     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " lookup");
4289     proto_item_append_text(tree, " lookup" );
4290   }
4291   if(opcode & IT_UNLINK  ){
4292     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " unlink");
4293     proto_item_append_text(tree, " unlink" );
4294   }
4295   if(opcode & IT_GETXATTR){
4296     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getxattr");
4297     proto_item_append_text(tree, " getxattr" );
4298   }
4299   if(opcode & IT_EXEC    ){
4300     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " exec");
4301     proto_item_append_text(tree, " exec" );
4302   }
4303   if(opcode & IT_PIN     ){
4304     display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " pin");
4305     proto_item_append_text(tree, " pin" );
4306   }
4307
4308   display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " ]");
4309   offset+=8; 
4310   return offset;
4311 }
4312
4313 int
4314 lustre_dissect_struct_ldlm_intent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4315 {
4316   // proto_item *item = NULL;
4317   //proto_tree *tree = NULL;
4318   int old_offset;
4319   guint64 intent_opc;
4320   proto_item * opcode_item = NULL;
4321   proto_tree * opcode_tree = NULL;
4322
4323   old_offset=offset;
4324   // if (parent_tree) {
4325   //     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4326   //     tree = proto_item_add_subtree(item, ett_lustre_ldlm_intent);
4327   //     //tree = parent_tree; /* TODO : !!!!!!!!!!!!!!! ATTENTIon Ã  revoir,
4328   //     //fait rapidement pour ne pas avoir le subtree */
4329   // }
4330
4331
4332   intent_opc = tvb_get_letoh64(tvb,offset);
4333   if (parent_tree){
4334     opcode_item = proto_tree_add_item(parent_tree, hf_lustre_ldlm_intent_opc, tvb, offset, 8, TRUE);
4335     opcode_tree = proto_item_add_subtree(opcode_item, ett_lustre_ldlm_intent_opc);
4336   }
4337
4338   offset=lustre_dissect_element_ldlm_intent_opc(tvb, offset, pinfo, opcode_tree);
4339
4340   offset=ldlm_opcode_process(tvb, offset, pinfo, parent_tree, intent_opc);
4341
4342
4343
4344   return offset;
4345 }
4346
4347 /* IDL: struct ldlm_resource_desc { */
4348 /* IDL:         ldlm_type_t lr_type; */
4349 /* IDL:         uint32 lr_padding; */
4350 /* IDL:         struct ldlm_res_id { */
4351 /* IDL: } lr_name; */
4352 /* IDL: } */
4353
4354 static int
4355 lustre_dissect_element_ldlm_resource_desc_lr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4356 {
4357   /*    offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_type);*/
4358   offset=lustre_dissect_enum_ldlm_type_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_type);
4359   return offset;
4360 }
4361
4362 static int
4363 lustre_dissect_element_ldlm_resource_desc_lr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4364 {
4365   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_padding);
4366
4367   return offset;
4368 }
4369
4370 static int
4371 lustre_dissect_element_ldlm_resource_desc_lr_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4372 {
4373   offset=lustre_dissect_struct_ldlm_res_id(tvb,offset,pinfo,tree,hf_lustre_ldlm_resource_desc_lr_name);
4374   return offset;
4375 }
4376
4377 int
4378 lustre_dissect_struct_ldlm_resource_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4379 {
4380   proto_item *item = NULL;
4381   proto_tree *tree = NULL;
4382   int old_offset;
4383
4384
4385
4386   old_offset=offset;
4387
4388   if (parent_tree) {
4389     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4390     tree = proto_item_add_subtree(item, ett_lustre_ldlm_resource_desc);
4391   }
4392
4393   offset=lustre_dissect_element_ldlm_resource_desc_lr_type(tvb, offset, pinfo, tree);
4394
4395   offset=lustre_dissect_element_ldlm_resource_desc_lr_padding(tvb, offset, pinfo, tree);
4396
4397   offset=lustre_dissect_element_ldlm_resource_desc_lr_name(tvb, offset, pinfo, tree);
4398
4399
4400   proto_item_set_len(item, offset-old_offset);
4401
4402   return offset;
4403 }
4404
4405
4406 /* IDL: struct ldlm_lock_desc { */
4407 /* IDL:         struct ldlm_resource_desc { */
4408 /* IDL: } l_resource; */
4409 /* IDL:         ldlm_mode_t l_req_mode; */
4410 /* IDL:         ldlm_mode_t l_granted_mode; */
4411 /* IDL:         ldlm_policy_data_t l_policy_data; */
4412 /* IDL: } */
4413
4414 static int
4415 lustre_dissect_element_ldlm_lock_desc_l_resource(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4416 {
4417   offset=lustre_dissect_struct_ldlm_resource_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_resource);
4418   return offset;
4419 }
4420
4421 static int
4422 lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4423 {
4424   offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_lock_desc_l_req_mode);
4425
4426   return offset;
4427 }
4428
4429 static int
4430 lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4431 {
4432   offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_lock_desc_l_granted_mode);
4433
4434   return offset;
4435 }
4436
4437 static int
4438 lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4439 {
4440
4441   guint32 lr_type; /* type of the lock */
4442
4443   lr_type = tvb_get_letohl(tvb,offset - 48 ); /* TODO  : find another way that using -48 */
4444
4445   /* this section must be check with lustre code, possible mistake here */
4446   switch(lr_type){
4447     case LDLM_PLAIN: 
4448     case LDLM_FLOCK:
4449       offset=lustre_dissect_struct_ldlm_flock(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
4450       break;
4451     case LDLM_EXTENT :
4452       offset= lustre_dissect_struct_ldlm_extent(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
4453       /* add an extra padding 8 bytes */
4454       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4455       break;
4456     case LDLM_IBITS:
4457       offset=lustre_dissect_struct_ldlm_inodebits(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
4458       /* add an extra padding 24 bytes */
4459       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4460       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4461       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4462       break;
4463     default:
4464       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4465       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4466       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4467       offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
4468       break;
4469   }
4470   return offset;
4471 }
4472
4473 int
4474 lustre_dissect_struct_ldlm_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4475 {
4476   proto_item *item = NULL;
4477   proto_tree *tree = NULL;
4478   int old_offset;
4479
4480   guint32 lock_req_mode;
4481
4482
4483   old_offset=offset;
4484
4485   if (parent_tree) {
4486     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4487     tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_desc);
4488   }
4489
4490   offset=lustre_dissect_element_ldlm_lock_desc_l_resource(tvb, offset, pinfo, tree);
4491
4492   lock_req_mode = tvb_get_letohl(tvb,offset);
4493
4494   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lock_req_mode, lustre_ldlm_mode_t_vals, "Unknown lock"));
4495
4496   offset=lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvb, offset, pinfo, tree);
4497
4498   offset=lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvb, offset, pinfo, tree);
4499
4500   offset=lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvb, offset, pinfo, tree);
4501
4502
4503   proto_item_set_len(item, offset-old_offset);
4504
4505   return offset;
4506 }
4507
4508
4509 /* IDL: struct ldlm_request { */
4510 /* IDL:         uint32 lock_flags; */
4511 /* IDL:         uint32 lock_count; */
4512 /* IDL:         struct ldlm_lock_desc { */
4513 /* IDL: } lock_desc; */
4514 /* IDL:         struct lustre_handle { */
4515 /* IDL: } lock_handle[2]; */
4516 /* IDL: } */
4517
4518
4519
4520 static int
4521 lustre_dissect_element_ldlm_request_lock_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4522 {
4523   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_request_lock_count);
4524
4525   return offset;
4526 }
4527
4528 static int
4529 lustre_dissect_element_ldlm_request_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4530 {
4531   offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_desc);
4532   return offset;
4533 }
4534
4535
4536
4537 static int
4538 lustre_dissect_element_ldlm_request_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4539 {
4540   /*if (check_col(pinfo->cinfo, COL_INFO)) */
4541   /*    col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
4542
4543   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_handle);
4544   return offset;
4545 }
4546
4547 static int
4548 lustre_dissect_element_ldlm_request_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4549 {
4550   int i;
4551   for (i = 0; i < 2; i++)
4552     offset=lustre_dissect_element_ldlm_request_lock_handle_(tvb, offset, pinfo, tree);
4553
4554   return offset;
4555 }
4556
4557 int
4558 lustre_dissect_struct_ldlm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4559 {
4560   proto_item *item = NULL;
4561   proto_tree *tree = NULL;
4562   int old_offset;
4563   guint32 lock_flag ;
4564   guint32 ldlm_type; 
4565
4566   old_offset=offset;
4567
4568   if (parent_tree) {
4569     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4570     tree = proto_item_add_subtree(item, ett_lustre_ldlm_request);
4571   }
4572
4573   lock_flag = tvb_get_letohl(tvb,offset);
4574   offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, hf_lustre_ldlm_request_lock_flags);
4575
4576   offset=lustre_dissect_element_ldlm_request_lock_count(tvb, offset, pinfo, tree);
4577
4578   /* ldlm_type = (EXTENT, PLAIN, ou IBITS) */
4579   ldlm_type = tvb_get_letohl(tvb,offset); 
4580   offset=lustre_dissect_element_ldlm_request_lock_desc(tvb, offset, pinfo, tree);
4581   offset=lustre_dissect_element_ldlm_request_lock_handle(tvb, offset, pinfo, tree);
4582
4583   proto_item_set_len(item, offset-old_offset);
4584
4585   return offset;
4586 }
4587
4588
4589
4590
4591 /* IDL: struct ldlm_reply { */
4592 /* IDL:         uint32 lock_flags; */
4593 /* IDL:         uint32 lock_padding; */
4594 /* IDL:         struct ldlm_lock_desc { */
4595 /* IDL: } lock_desc; */
4596 /* IDL:         struct lustre_handle { */
4597 /* IDL: } lock_handle; */
4598 /* IDL:         uint64 lock_policy_res1; */
4599 /* IDL:         uint64 lock_policy_res2; */
4600 /* IDL: } */
4601
4602
4603 static int
4604 lustre_dissect_element_ldlm_lock_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4605 {
4606   proto_item *item = NULL;
4607   proto_tree *tree = NULL;
4608
4609   if (parent_tree) {
4610     item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
4611     tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_flags);
4612   }
4613   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_ast_discard_data);   
4614   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_deny_on_contention);   
4615   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_done           );   
4616   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_ast            );   
4617   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_atomic_cb         );   
4618   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cleaned           );   
4619   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cp_reqd           );   
4620   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel_on_block   );   
4621   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_lru            );   
4622   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_kms_ignore        );   
4623   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lvb_ready         );           
4624   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_test_lock         );   
4625   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_nowait      );   
4626   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_timeout        );   
4627   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_discard_data      );   
4628   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_warn              );   
4629   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local             );   
4630   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_canceling         );   
4631   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_has_intent        );   
4632   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_failed            );   
4633   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local_only        );   
4634   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_intent_only       );   
4635   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_replay            );   
4636   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel            );   
4637   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_wait_noreproc     );   
4638   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_ast_sent          );   
4639   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cbpending         );   
4640   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_wait        );   
4641   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_conv        );   
4642   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_granted     );   
4643   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lock_changed      );   
4644   return offset;
4645 }
4646
4647 static int
4648 lustre_dissect_element_ldlm_reply_lock_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4649 {
4650   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_padding);
4651
4652   return offset;
4653 }
4654
4655 static int
4656 lustre_dissect_element_ldlm_reply_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4657 {
4658   offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_desc);
4659   return offset;
4660 }
4661
4662 static int
4663 lustre_dissect_element_ldlm_reply_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4664 {
4665   /*if (check_col(pinfo->cinfo, COL_INFO)) */
4666   /*        col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
4667
4668   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_handle);
4669   return offset;
4670 }
4671
4672 static int
4673 lustre_dissect_element_ldlm_reply_lock_policy_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4674 {
4675   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_policy_res1);
4676
4677   return offset;
4678 }
4679
4680 static int
4681 lustre_dissect_element_ldlm_reply_lock_policy_res2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4682 {
4683   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_policy_res2);
4684
4685   return offset;
4686 }
4687
4688 int
4689 lustre_dissect_struct_ldlm_reply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 * ldlm_type _U_ )
4690 {
4691   proto_item *item = NULL;
4692   proto_tree *tree = NULL;
4693   int old_offset;
4694
4695   guint32 lock_flag ;
4696
4697   old_offset=offset;
4698
4699   if (parent_tree) {
4700     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4701     tree = proto_item_add_subtree(item, ett_lustre_ldlm_reply);
4702   }
4703
4704   lock_flag = tvb_get_letohl(tvb,offset);
4705   offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_flags);
4706
4707   offset=lustre_dissect_element_ldlm_reply_lock_padding(tvb, offset, pinfo, tree);
4708
4709   if (ldlm_type != NULL)
4710     *ldlm_type = tvb_get_letohl(tvb,offset); 
4711   offset=lustre_dissect_element_ldlm_reply_lock_desc(tvb, offset, pinfo, tree);
4712
4713   offset=lustre_dissect_element_ldlm_reply_lock_handle(tvb, offset, pinfo, tree);
4714
4715   offset=lustre_dissect_element_ldlm_reply_lock_policy_res1(tvb, offset, pinfo, tree);
4716
4717   offset=lustre_dissect_element_ldlm_reply_lock_policy_res2(tvb, offset, pinfo, tree);
4718
4719   proto_item_set_len(item, offset-old_offset);
4720
4721   return offset;
4722 }
4723
4724
4725
4726
4727 /* IDL: struct mgs_send_param { */
4728 /* IDL:         uint8 mgs_param[1024]; */
4729 /* IDL: } */
4730
4731
4732
4733 static int
4734 lustre_dissect_element_mgs_send_param_mgs_param_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4735 {
4736   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_send_param_mgs_param);
4737
4738   return offset;
4739 }
4740
4741 static int
4742 lustre_dissect_element_mgs_send_param_mgs_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4743 {
4744   int i;
4745   for (i = 0; i < 1024; i++)
4746     offset=lustre_dissect_element_mgs_send_param_mgs_param_(tvb, offset, pinfo, tree);
4747
4748   return offset;
4749 }
4750
4751 int
4752 lustre_dissect_struct_mgs_send_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4753 {
4754   proto_item *item = NULL;
4755   proto_tree *tree = NULL;
4756   int old_offset;
4757
4758
4759   old_offset=offset;
4760
4761   if (parent_tree) {
4762     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4763     tree = proto_item_add_subtree(item, ett_lustre_mgs_send_param);
4764   }
4765
4766   offset=lustre_dissect_element_mgs_send_param_mgs_param(tvb, offset, pinfo, tree);
4767
4768
4769   proto_item_set_len(item, offset-old_offset);
4770
4771   return offset;
4772 }
4773
4774 /* IDL: struct mgs_target_info { */
4775 /* IDL:         uint32 mti_lustre_ver; */
4776 /* IDL:         uint32 mti_stripe_index; */
4777 /* IDL:         uint32 mti_config_ver; */
4778 /* IDL:         uint32 mti_flags; */
4779 /* IDL:         uint32 mti_nid_count; */
4780 /* IDL:         uint32 padding; */
4781 /* IDL:         uint8 mti_fsname[64]; */
4782 /* IDL:         uint8 mti_svname[64]; */
4783 /* IDL:         uint8 mti_uuid[40]; */
4784 /* IDL:         uint64 mti_nids[32]; */
4785 /* IDL:         uint8 mti_params[4096]; */
4786 /* IDL: } */
4787
4788 static int
4789 lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4790 {
4791   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_lustre_ver);
4792
4793   return offset;
4794 }
4795
4796 static int
4797 lustre_dissect_element_mgs_target_info_mti_stripe_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4798 {
4799   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_stripe_index);
4800
4801   return offset;
4802 }
4803
4804 static int
4805 lustre_dissect_element_mgs_target_info_mti_config_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4806 {
4807   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_config_ver);
4808
4809   return offset;
4810 }
4811
4812 static int
4813 lustre_dissect_element_mgs_target_info_mti_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4814 {
4815   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_flags);
4816
4817   return offset;
4818 }
4819
4820 static int
4821 lustre_dissect_element_mgs_target_info_mti_nid_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4822 {
4823   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_nid_count);
4824
4825   return offset;
4826 }
4827
4828 static int
4829 lustre_dissect_element_mgs_target_info_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4830 {
4831   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_padding);
4832
4833   return offset;
4834 }
4835
4836 static int
4837 lustre_dissect_element_mgs_target_info_mti_fsname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4838 {
4839   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_fsname);
4840
4841   return offset;
4842 }
4843
4844 static int
4845 lustre_dissect_element_mgs_target_info_mti_fsname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4846 {
4847   int i;
4848   for (i = 0; i < 64; i++)
4849     offset=lustre_dissect_element_mgs_target_info_mti_fsname_(tvb, offset, pinfo, tree);
4850
4851   return offset;
4852 }
4853
4854
4855
4856
4857
4858 static int
4859 lustre_dissect_element_mgs_target_info_mti_svname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4860 {
4861   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_svname);
4862
4863   return offset;
4864 }
4865
4866 static int
4867 lustre_dissect_element_mgs_target_info_mti_svname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4868 {
4869   int i;
4870   for (i = 0; i < 64; i++)
4871     offset=lustre_dissect_element_mgs_target_info_mti_svname_(tvb, offset, pinfo, tree);
4872
4873   return offset;
4874 }
4875
4876 static int
4877 lustre_dissect_element_mgs_target_info_mti_uuid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4878 {
4879   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_uuid);
4880
4881   return offset;
4882 }
4883
4884 static int
4885 lustre_dissect_element_mgs_target_info_mti_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4886 {
4887   int i;
4888   for (i = 0; i < 40; i++)
4889     offset=lustre_dissect_element_mgs_target_info_mti_uuid_(tvb, offset, pinfo, tree);
4890
4891   return offset;
4892 }
4893
4894
4895
4896
4897
4898 static int
4899 lustre_dissect_element_mgs_target_info_mti_nids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4900 {
4901   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_nids);
4902
4903   return offset;
4904 }
4905
4906 static int
4907 lustre_dissect_element_mgs_target_info_mti_nids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4908 {
4909   int i;
4910   for (i = 0; i < 32; i++)
4911     offset=lustre_dissect_element_mgs_target_info_mti_nids_(tvb, offset, pinfo, tree);
4912
4913   return offset;
4914 }
4915
4916
4917
4918 static int
4919 lustre_dissect_element_mgs_target_info_mti_params_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4920 {
4921   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_params);
4922
4923   return offset;
4924 }
4925
4926 static int
4927 lustre_dissect_element_mgs_target_info_mti_params(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4928 {
4929   int i;
4930   for (i = 0; i < 4096; i++)
4931     offset=lustre_dissect_element_mgs_target_info_mti_params_(tvb, offset, pinfo, tree);
4932
4933   return offset;
4934 }
4935
4936 int
4937 lustre_dissect_struct_mgs_target_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
4938 {
4939   proto_item *item = NULL;
4940   proto_tree *tree = NULL;
4941   int old_offset;
4942
4943
4944
4945   old_offset=offset;
4946
4947   if (parent_tree) {
4948     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
4949     tree = proto_item_add_subtree(item, ett_lustre_mgs_target_info);
4950   }
4951
4952   offset=lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvb, offset, pinfo, tree);
4953
4954   offset=lustre_dissect_element_mgs_target_info_mti_stripe_index(tvb, offset, pinfo, tree);
4955
4956   offset=lustre_dissect_element_mgs_target_info_mti_config_ver(tvb, offset, pinfo, tree);
4957
4958   offset=lustre_dissect_element_mgs_target_info_mti_flags(tvb, offset, pinfo, tree);
4959
4960   offset=lustre_dissect_element_mgs_target_info_mti_nid_count(tvb, offset, pinfo, tree);
4961
4962   offset=lustre_dissect_element_mgs_target_info_padding(tvb, offset, pinfo, tree);
4963
4964   offset=lustre_dissect_element_mgs_target_info_mti_fsname(tvb, offset, pinfo, tree);
4965
4966   offset=lustre_dissect_element_mgs_target_info_mti_svname(tvb, offset, pinfo, tree);
4967
4968   offset=lustre_dissect_element_mgs_target_info_mti_uuid(tvb, offset, pinfo, tree);
4969
4970   offset=lustre_dissect_element_mgs_target_info_mti_nids(tvb, offset, pinfo, tree);
4971
4972   offset=lustre_dissect_element_mgs_target_info_mti_params(tvb, offset, pinfo, tree);
4973
4974
4975   proto_item_set_len(item, offset-old_offset);
4976
4977   return offset;
4978 }
4979
4980 /* IDL: struct cfg_marker { */
4981 /* IDL:         uint32 cm_step; */
4982 /* IDL:         uint32 cm_flags; */
4983 /* IDL:         uint32 cm_vers; */
4984 /* IDL:         uint32 padding; */
4985 /* IDL:         time_t cm_createtime; */
4986 /* IDL:         time_t cm_canceltime; */
4987 /* IDL:         uint8 cm_tgtname[64]; */
4988 /* IDL:         uint8 cm_comment[64]; */
4989 /* IDL: } */
4990
4991 static int
4992 lustre_dissect_element_cfg_marker_cm_step(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
4993 {
4994   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_step);
4995
4996   return offset;
4997 }
4998
4999 static int
5000 lustre_dissect_element_cfg_marker_cm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5001 {
5002   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_flags);
5003
5004   return offset;
5005 }
5006
5007 static int
5008 lustre_dissect_element_cfg_marker_cm_vers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5009 {
5010   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_vers);
5011
5012   return offset;
5013 }
5014
5015 static int
5016 lustre_dissect_element_cfg_marker_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5017 {
5018   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_padding);
5019
5020   return offset;
5021 }
5022
5023 static int
5024 lustre_dissect_element_cfg_marker_cm_createtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5025 {
5026   //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree,  hf_lustre_cfg_marker_cm_createtime );
5027   /*g_print("function lustre_dissect_element_cfg_marker_cm_createtime don't work\n");*/
5028   return offset;
5029 }
5030
5031 static int
5032 lustre_dissect_element_cfg_marker_cm_canceltime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5033 {
5034   //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree,  hf_lustre_cfg_marker_cm_canceltime);
5035
5036   /*g_print("element_cfg_marker_cm_canceltime\n");*/
5037   return offset;
5038 }
5039
5040
5041
5042 static int
5043 lustre_dissect_element_cfg_marker_cm_tgtname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5044 {
5045   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_tgtname);
5046
5047   return offset;
5048 }
5049
5050 static int
5051 lustre_dissect_element_cfg_marker_cm_tgtname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5052 {
5053   int i;
5054   for (i = 0; i < 64; i++)
5055     offset=lustre_dissect_element_cfg_marker_cm_tgtname_(tvb, offset, pinfo, tree);
5056
5057   return offset;
5058 }
5059
5060
5061
5062 static int
5063 lustre_dissect_element_cfg_marker_cm_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5064 {
5065   offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_comment);
5066
5067   return offset;
5068 }
5069
5070 static int
5071 lustre_dissect_element_cfg_marker_cm_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5072 {
5073   int i;
5074   for (i = 0; i < 64; i++)
5075     offset=lustre_dissect_element_cfg_marker_cm_comment_(tvb, offset, pinfo, tree);
5076
5077   return offset;
5078 }
5079
5080 int
5081 lustre_dissect_struct_cfg_marker(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5082 {
5083   proto_item *item = NULL;
5084   proto_tree *tree = NULL;
5085   int old_offset;
5086
5087
5088
5089   old_offset=offset;
5090
5091   if (parent_tree) {
5092     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5093     tree = proto_item_add_subtree(item, ett_lustre_cfg_marker);
5094   }
5095
5096   offset=lustre_dissect_element_cfg_marker_cm_step(tvb, offset, pinfo, tree);
5097
5098   offset=lustre_dissect_element_cfg_marker_cm_flags(tvb, offset, pinfo, tree);
5099
5100   offset=lustre_dissect_element_cfg_marker_cm_vers(tvb, offset, pinfo, tree);
5101
5102   offset=lustre_dissect_element_cfg_marker_padding(tvb, offset, pinfo, tree);
5103
5104   offset=lustre_dissect_element_cfg_marker_cm_createtime(tvb, offset, pinfo, tree);
5105
5106   offset=lustre_dissect_element_cfg_marker_cm_canceltime(tvb, offset, pinfo, tree);
5107
5108   offset=lustre_dissect_element_cfg_marker_cm_tgtname(tvb, offset, pinfo, tree);
5109
5110   offset=lustre_dissect_element_cfg_marker_cm_comment(tvb, offset, pinfo, tree);
5111
5112
5113   proto_item_set_len(item, offset-old_offset);
5114
5115   return offset;
5116 }
5117
5118
5119
5120 /* IDL: struct llog_logid { */
5121 /* IDL:         uint64 lgl_oid; */
5122 /* IDL:         uint64 lgl_ogr; */
5123 /* IDL:         uint32 lgl_ogen; */
5124 /* IDL: } */
5125
5126 static int
5127 lustre_dissect_element_llog_logid_lgl_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5128 {
5129   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_oid);
5130
5131   return offset;
5132 }
5133
5134 static int
5135 lustre_dissect_element_llog_logid_lgl_ogr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5136 {
5137   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_ogr);
5138
5139   return offset;
5140 }
5141
5142 static int
5143 lustre_dissect_element_llog_logid_lgl_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5144 {
5145   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_ogen);
5146
5147   return offset;
5148 }
5149
5150 int
5151 lustre_dissect_struct_llog_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5152 {
5153   proto_item *item = NULL;
5154   proto_tree *tree = NULL;
5155   int old_offset;
5156
5157
5158
5159   old_offset=offset;
5160
5161   if (parent_tree) {
5162     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5163     tree = proto_item_add_subtree(item, ett_lustre_llog_logid);
5164   }
5165
5166   offset=lustre_dissect_element_llog_logid_lgl_oid(tvb, offset, pinfo, tree);
5167
5168   offset=lustre_dissect_element_llog_logid_lgl_ogr(tvb, offset, pinfo, tree);
5169
5170   offset=lustre_dissect_element_llog_logid_lgl_ogen(tvb, offset, pinfo, tree);
5171
5172
5173   proto_item_set_len(item, offset-old_offset);
5174
5175   return offset;
5176 }
5177
5178 /* I don't know when this structure is used on network */
5179 /* IDL: struct llog_catid { */
5180 /* IDL:         struct llog_logid { */
5181 /* IDL: } lci_logid; */
5182 /* IDL:         uint32 lci_padding1; */
5183 /* IDL:         uint32 lci_padding2; */
5184 /* IDL:         uint32 lci_padding3; */
5185 /* IDL: } */
5186
5187 static int
5188 lustre_dissect_element_llog_catid_lci_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5189 {
5190   //offset=lustre_dissect_struct_HASH(0x85cc76c)(tvb,offset,pinfo,tree,hf_lustre_llog_catid_lci_logid);
5191   
5192   /*g_print("llog_catid_lci_logid bug\n");*/
5193   return offset;
5194 }
5195
5196 static int
5197 lustre_dissect_element_llog_catid_lci_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5198 {
5199   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding1);
5200
5201   return offset;
5202 }
5203
5204 static int
5205 lustre_dissect_element_llog_catid_lci_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5206 {
5207   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding2);
5208
5209   return offset;
5210 }
5211
5212 static int
5213 lustre_dissect_element_llog_catid_lci_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5214 {
5215   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding3);
5216
5217   return offset;
5218 }
5219
5220 int
5221 lustre_dissect_struct_llog_catid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5222 {
5223   proto_item *item = NULL;
5224   proto_tree *tree = NULL;
5225   int old_offset;
5226
5227
5228
5229   old_offset=offset;
5230
5231   if (parent_tree) {
5232     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5233     tree = proto_item_add_subtree(item, ett_lustre_llog_catid);
5234   }
5235
5236   offset=lustre_dissect_element_llog_catid_lci_logid(tvb, offset, pinfo, tree);
5237
5238   offset=lustre_dissect_element_llog_catid_lci_padding1(tvb, offset, pinfo, tree);
5239
5240   offset=lustre_dissect_element_llog_catid_lci_padding2(tvb, offset, pinfo, tree);
5241
5242   offset=lustre_dissect_element_llog_catid_lci_padding3(tvb, offset, pinfo, tree);
5243
5244
5245   proto_item_set_len(item, offset-old_offset);
5246
5247   return offset;
5248 }
5249
5250 /* IDL: struct llog_rec_hdr { */
5251 /* IDL:         uint32 lrh_len; */
5252 /* IDL:         uint32 lrh_index; */
5253 /* IDL:         uint32 lrh_type; */
5254 /* IDL:         uint32 padding; */
5255 /* IDL: } */
5256
5257 static int
5258 lustre_dissect_element_llog_rec_hdr_lrh_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5259 {
5260   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_len);
5261
5262   return offset;
5263 }
5264
5265 static int
5266 lustre_dissect_element_llog_rec_hdr_lrh_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5267 {
5268   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_index);
5269
5270   return offset;
5271 }
5272
5273 static int
5274 lustre_dissect_element_llog_rec_hdr_lrh_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5275 {
5276   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_type);
5277
5278   return offset;
5279 }
5280
5281 static int
5282 lustre_dissect_element_llog_rec_hdr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5283 {
5284   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_padding);
5285
5286   return offset;
5287 }
5288
5289 int
5290 lustre_dissect_struct_llog_rec_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5291 {
5292   proto_item *item = NULL;
5293   proto_tree *tree = NULL;
5294   int old_offset;
5295
5296
5297
5298   old_offset=offset;
5299
5300   if (parent_tree) {
5301     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5302     tree = proto_item_add_subtree(item, ett_lustre_llog_rec_hdr);
5303   }
5304
5305   offset=lustre_dissect_element_llog_rec_hdr_lrh_len(tvb, offset, pinfo, tree);
5306
5307   offset=lustre_dissect_element_llog_rec_hdr_lrh_index(tvb, offset, pinfo, tree);
5308
5309   offset=lustre_dissect_element_llog_rec_hdr_lrh_type(tvb, offset, pinfo, tree);
5310
5311   offset=lustre_dissect_element_llog_rec_hdr_padding(tvb, offset, pinfo, tree);
5312
5313
5314   proto_item_set_len(item, offset-old_offset);
5315
5316   return offset;
5317 }
5318
5319 /* IDL: struct llog_rec_tail { */
5320 /* IDL:         uint32 lrt_len; */
5321 /* IDL:         uint32 lrt_index; */
5322 /* IDL: } */
5323
5324 static int
5325 lustre_dissect_element_llog_rec_tail_lrt_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5326 {
5327   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_tail_lrt_len);
5328
5329   return offset;
5330 }
5331
5332 static int
5333 lustre_dissect_element_llog_rec_tail_lrt_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5334 {
5335   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_tail_lrt_index);
5336
5337   return offset;
5338 }
5339
5340 int
5341 lustre_dissect_struct_llog_rec_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5342 {
5343   proto_item *item = NULL;
5344   proto_tree *tree = NULL;
5345   int old_offset;
5346
5347
5348
5349   old_offset=offset;
5350
5351   if (parent_tree) {
5352     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5353     tree = proto_item_add_subtree(item, ett_lustre_llog_rec_tail);
5354   }
5355
5356   offset=lustre_dissect_element_llog_rec_tail_lrt_len(tvb, offset, pinfo, tree);
5357
5358   offset=lustre_dissect_element_llog_rec_tail_lrt_index(tvb, offset, pinfo, tree);
5359
5360
5361   proto_item_set_len(item, offset-old_offset);
5362
5363   return offset;
5364 }
5365
5366 /* IDL: struct llog_logid_rec { */
5367 /* IDL:         struct llog_rec_hdr { */
5368 /* IDL: } lid_hdr; */
5369 /* IDL:         struct llog_logid { */
5370 /* IDL: } lid_id; */
5371 /* IDL:         uint32 padding1; */
5372 /* IDL:         uint32 padding2; */
5373 /* IDL:         uint32 padding3; */
5374 /* IDL:         uint32 padding4; */
5375 /* IDL:         uint32 padding5; */
5376 /* IDL:         struct llog_rec_tail { */
5377 /* IDL: } lid_tail; */
5378 /* IDL: } */
5379
5380 static int
5381 lustre_dissect_element_llog_logid_rec_lid_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5382 {
5383   offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_hdr);
5384   return offset;
5385 }
5386
5387 static int
5388 lustre_dissect_element_llog_logid_rec_lid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5389 {
5390   offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_id);
5391   return offset;
5392 }
5393
5394 static int
5395 lustre_dissect_element_llog_logid_rec_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5396 {
5397   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding1);
5398
5399   return offset;
5400 }
5401
5402 static int
5403 lustre_dissect_element_llog_logid_rec_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5404 {
5405   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding2);
5406
5407   return offset;
5408 }
5409
5410 static int
5411 lustre_dissect_element_llog_logid_rec_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5412 {
5413   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding3);
5414
5415   return offset;
5416 }
5417
5418 static int
5419 lustre_dissect_element_llog_logid_rec_padding4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5420 {
5421   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding4);
5422
5423   return offset;
5424 }
5425
5426 static int
5427 lustre_dissect_element_llog_logid_rec_padding5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5428 {
5429   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding5);
5430
5431   return offset;
5432 }
5433
5434 static int
5435 lustre_dissect_element_llog_logid_rec_lid_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5436 {
5437   offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_tail);
5438   return offset;
5439 }
5440
5441 int
5442 lustre_dissect_struct_llog_logid_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5443 {
5444   proto_item *item = NULL;
5445   proto_tree *tree = NULL;
5446   int old_offset;
5447
5448
5449
5450   old_offset=offset;
5451
5452   if (parent_tree) {
5453     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5454     tree = proto_item_add_subtree(item, ett_lustre_llog_logid_rec);
5455   }
5456
5457   offset=lustre_dissect_element_llog_logid_rec_lid_hdr(tvb, offset, pinfo, tree);
5458
5459   offset=lustre_dissect_element_llog_logid_rec_lid_id(tvb, offset, pinfo, tree);
5460
5461   offset=lustre_dissect_element_llog_logid_rec_padding1(tvb, offset, pinfo, tree);
5462
5463   offset=lustre_dissect_element_llog_logid_rec_padding2(tvb, offset, pinfo, tree);
5464
5465   offset=lustre_dissect_element_llog_logid_rec_padding3(tvb, offset, pinfo, tree);
5466
5467   offset=lustre_dissect_element_llog_logid_rec_padding4(tvb, offset, pinfo, tree);
5468
5469   offset=lustre_dissect_element_llog_logid_rec_padding5(tvb, offset, pinfo, tree);
5470
5471   offset=lustre_dissect_element_llog_logid_rec_lid_tail(tvb, offset, pinfo, tree);
5472
5473
5474   proto_item_set_len(item, offset-old_offset);
5475
5476   return offset;
5477 }
5478
5479 /* IDL: struct llog_create_rec { */
5480 /* IDL:         struct llog_rec_hdr { */
5481 /* IDL: } lcr_hdr; */
5482 /* IDL:         struct ll_fid { */
5483 /* IDL: } lcr_fid; */
5484 /* IDL:         uint64 lcr_oid; */
5485 /* IDL:         uint32 lcr_ogen; */
5486 /* IDL:         uint32 padding; */
5487 /* IDL:         struct llog_rec_tail { */
5488 /* IDL: } lcr_tail; */
5489 /* IDL: } */
5490
5491 static int
5492 lustre_dissect_element_llog_create_rec_lcr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5493 {
5494   //offset=lustre_dissect_struct_HASH(0x85d56e0)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_hdr);
5495   
5496   return offset;
5497 }
5498
5499 static int
5500 lustre_dissect_element_llog_create_rec_lcr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5501 {
5502   //offset=lustre_dissect_struct_HASH(0x85d5830)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_fid);
5503   
5504   return offset;
5505 }
5506
5507 static int
5508 lustre_dissect_element_llog_create_rec_lcr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5509 {
5510   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_lcr_oid);
5511
5512   return offset;
5513 }
5514
5515 static int
5516 lustre_dissect_element_llog_create_rec_lcr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5517 {
5518   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_lcr_ogen);
5519
5520   return offset;
5521 }
5522
5523 static int
5524 lustre_dissect_element_llog_create_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5525 {
5526   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_padding);
5527
5528   return offset;
5529 }
5530
5531 static int
5532 lustre_dissect_element_llog_create_rec_lcr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5533 {
5534   //offset=lustre_dissect_struct_HASH(0x85d69dc)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_tail);
5535   
5536   return offset;
5537 }
5538
5539 int
5540 lustre_dissect_struct_llog_create_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5541 {
5542   proto_item *item = NULL;
5543   proto_tree *tree = NULL;
5544   int old_offset;
5545
5546
5547
5548   old_offset=offset;
5549
5550   if (parent_tree) {
5551     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5552     tree = proto_item_add_subtree(item, ett_lustre_llog_create_rec);
5553   }
5554
5555   offset=lustre_dissect_element_llog_create_rec_lcr_hdr(tvb, offset, pinfo, tree);
5556
5557   offset=lustre_dissect_element_llog_create_rec_lcr_fid(tvb, offset, pinfo, tree);
5558
5559   offset=lustre_dissect_element_llog_create_rec_lcr_oid(tvb, offset, pinfo, tree);
5560
5561   offset=lustre_dissect_element_llog_create_rec_lcr_ogen(tvb, offset, pinfo, tree);
5562
5563   offset=lustre_dissect_element_llog_create_rec_padding(tvb, offset, pinfo, tree);
5564
5565   offset=lustre_dissect_element_llog_create_rec_lcr_tail(tvb, offset, pinfo, tree);
5566
5567
5568   proto_item_set_len(item, offset-old_offset);
5569
5570   return offset;
5571 }
5572
5573
5574
5575
5576 /* IDL: struct llog_orphan_rec { */
5577 /* IDL:         struct llog_rec_hdr { */
5578 /* IDL: } lor_hdr; */
5579 /* IDL:         uint64 lor_oid; */
5580 /* IDL:         uint32 lor_ogen; */
5581 /* IDL:         uint32 padding; */
5582 /* IDL:         struct llog_rec_tail { */
5583 /* IDL: } lor_tail; */
5584 /* IDL: } */
5585
5586 static int
5587 lustre_dissect_element_llog_orphan_rec_lor_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5588 {
5589   //offset=lustre_dissect_struct_HASH(0x85d767c)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_hdr);
5590   
5591   return offset;
5592 }
5593
5594 static int
5595 lustre_dissect_element_llog_orphan_rec_lor_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5596 {
5597   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_lor_oid);
5598
5599   return offset;
5600 }
5601
5602 static int
5603 lustre_dissect_element_llog_orphan_rec_lor_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5604 {
5605   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_lor_ogen);
5606
5607   return offset;
5608 }
5609
5610 static int
5611 lustre_dissect_element_llog_orphan_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5612 {
5613   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_padding);
5614
5615   return offset;
5616 }
5617
5618 static int
5619 lustre_dissect_element_llog_orphan_rec_lor_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5620 {
5621   //offset=lustre_dissect_struct_HASH(0x85d8550)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_tail);
5622   return offset;
5623 }
5624
5625 int
5626 lustre_dissect_struct_llog_orphan_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5627 {
5628   proto_item *item = NULL;
5629   proto_tree *tree = NULL;
5630   int old_offset;
5631
5632
5633
5634   old_offset=offset;
5635
5636   if (parent_tree) {
5637     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5638     tree = proto_item_add_subtree(item, ett_lustre_llog_orphan_rec);
5639   }
5640
5641   offset=lustre_dissect_element_llog_orphan_rec_lor_hdr(tvb, offset, pinfo, tree);
5642
5643   offset=lustre_dissect_element_llog_orphan_rec_lor_oid(tvb, offset, pinfo, tree);
5644
5645   offset=lustre_dissect_element_llog_orphan_rec_lor_ogen(tvb, offset, pinfo, tree);
5646
5647   offset=lustre_dissect_element_llog_orphan_rec_padding(tvb, offset, pinfo, tree);
5648
5649   offset=lustre_dissect_element_llog_orphan_rec_lor_tail(tvb, offset, pinfo, tree);
5650
5651
5652   proto_item_set_len(item, offset-old_offset);
5653
5654   return offset;
5655 }
5656
5657
5658
5659 /* IDL: struct llog_unlink_rec { */
5660 /* IDL:         struct llog_rec_hdr { */
5661 /* IDL: } lur_hdr; */
5662 /* IDL:         uint64 lur_oid; */
5663 /* IDL:         uint32 lur_ogen; */
5664 /* IDL:         uint32 padding; */
5665 /* IDL:         struct llog_rec_tail { */
5666 /* IDL: } lur_tail; */
5667 /* IDL: } */
5668
5669 static int
5670 lustre_dissect_element_llog_unlink_rec_lur_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5671 {
5672   //offset=lustre_dissect_struct_HASH(0x85d8730)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_hdr);
5673   return offset;
5674 }
5675
5676 static int
5677 lustre_dissect_element_llog_unlink_rec_lur_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5678 {
5679   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_lur_oid);
5680
5681   return offset;
5682 }
5683
5684 static int
5685 lustre_dissect_element_llog_unlink_rec_lur_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5686 {
5687   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_lur_ogen);
5688
5689   return offset;
5690 }
5691
5692 static int
5693 lustre_dissect_element_llog_unlink_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5694 {
5695   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_padding);
5696
5697   return offset;
5698 }
5699
5700 static int
5701 lustre_dissect_element_llog_unlink_rec_lur_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5702 {
5703   //offset=lustre_dissect_struct_HASH(0x85d9664)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_tail);
5704   return offset;
5705 }
5706
5707 int
5708 lustre_dissect_struct_llog_unlink_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5709 {
5710   proto_item *item = NULL;
5711   proto_tree *tree = NULL;
5712   int old_offset;
5713
5714
5715
5716   old_offset=offset;
5717
5718   if (parent_tree) {
5719     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5720     tree = proto_item_add_subtree(item, ett_lustre_llog_unlink_rec);
5721   }
5722
5723   offset=lustre_dissect_element_llog_unlink_rec_lur_hdr(tvb, offset, pinfo, tree);
5724
5725   offset=lustre_dissect_element_llog_unlink_rec_lur_oid(tvb, offset, pinfo, tree);
5726
5727   offset=lustre_dissect_element_llog_unlink_rec_lur_ogen(tvb, offset, pinfo, tree);
5728
5729   offset=lustre_dissect_element_llog_unlink_rec_padding(tvb, offset, pinfo, tree);
5730
5731   offset=lustre_dissect_element_llog_unlink_rec_lur_tail(tvb, offset, pinfo, tree);
5732
5733
5734   proto_item_set_len(item, offset-old_offset);
5735
5736   return offset;
5737 }
5738
5739
5740
5741 /* IDL: struct llog_setattr_rec { */
5742 /* IDL:         struct llog_rec_hdr { */
5743 /* IDL: } lsr_hdr; */
5744 /* IDL:         uint64 lsr_oid; */
5745 /* IDL:         uint32 lsr_ogen; */
5746 /* IDL:         uint32 lsr_uid; */
5747 /* IDL:         uint32 lsr_gid; */
5748 /* IDL:         uint32 padding; */
5749 /* IDL:         struct llog_rec_tail { */
5750 /* IDL: } lsr_tail; */
5751 /* IDL: } */
5752
5753 static int
5754 lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5755 {
5756   //offset=lustre_dissect_struct_HASH(0x85da2f0)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_hdr);
5757   return offset;
5758 }
5759
5760 static int
5761 lustre_dissect_element_llog_setattr_rec_lsr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5762 {
5763   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_oid);
5764
5765   return offset;
5766 }
5767
5768 static int
5769 lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5770 {
5771   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_ogen);
5772
5773   return offset;
5774 }
5775
5776 static int
5777 lustre_dissect_element_llog_setattr_rec_lsr_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5778 {
5779   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_uid);
5780
5781   return offset;
5782 }
5783
5784 static int
5785 lustre_dissect_element_llog_setattr_rec_lsr_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5786 {
5787   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_gid);
5788
5789   return offset;
5790 }
5791
5792 static int
5793 lustre_dissect_element_llog_setattr_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5794 {
5795   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_padding);
5796
5797   return offset;
5798 }
5799
5800 static int
5801 lustre_dissect_element_llog_setattr_rec_lsr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5802 {
5803   //offset=lustre_dissect_struct_HASH(0x85db3d4)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_tail);
5804   return offset;
5805 }
5806
5807 int
5808 lustre_dissect_struct_llog_setattr_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5809 {
5810   proto_item *item = NULL;
5811   proto_tree *tree = NULL;
5812   int old_offset;
5813
5814
5815
5816   old_offset=offset;
5817
5818   if (parent_tree) {
5819     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5820     tree = proto_item_add_subtree(item, ett_lustre_llog_setattr_rec);
5821   }
5822
5823   offset=lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvb, offset, pinfo, tree);
5824
5825   offset=lustre_dissect_element_llog_setattr_rec_lsr_oid(tvb, offset, pinfo, tree);
5826
5827   offset=lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvb, offset, pinfo, tree);
5828
5829   offset=lustre_dissect_element_llog_setattr_rec_lsr_uid(tvb, offset, pinfo, tree);
5830
5831   offset=lustre_dissect_element_llog_setattr_rec_lsr_gid(tvb, offset, pinfo, tree);
5832
5833   offset=lustre_dissect_element_llog_setattr_rec_padding(tvb, offset, pinfo, tree);
5834
5835   offset=lustre_dissect_element_llog_setattr_rec_lsr_tail(tvb, offset, pinfo, tree);
5836
5837
5838   proto_item_set_len(item, offset-old_offset);
5839
5840   return offset;
5841 }
5842
5843
5844
5845
5846 /* IDL: struct llog_size_change_rec { */
5847 /* IDL:         struct llog_rec_hdr { */
5848 /* IDL: } lsc_hdr; */
5849 /* IDL:         struct ll_fid { */
5850 /* IDL: } lsc_fid; */
5851 /* IDL:         uint32 lsc_io_epoch; */
5852 /* IDL:         uint32 padding; */
5853 /* IDL:         struct llog_rec_tail { */
5854 /* IDL: } lsc_tail; */
5855 /* IDL: } */
5856
5857 static int
5858 lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5859 {
5860   //offset=lustre_dissect_struct_HASH(0x85dc458)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_hdr);
5861   return offset;
5862 }
5863
5864 static int
5865 lustre_dissect_element_llog_size_change_rec_lsc_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5866 {
5867   //offset=lustre_dissect_struct_HASH(0x85dc5a8)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_fid);
5868   return offset;
5869 }
5870
5871 static int
5872 lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5873 {
5874   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_size_change_rec_lsc_io_epoch);
5875
5876   return offset;
5877 }
5878
5879 static int
5880 lustre_dissect_element_llog_size_change_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5881 {
5882   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_size_change_rec_padding);
5883
5884   return offset;
5885 }
5886
5887 static int
5888 lustre_dissect_element_llog_size_change_rec_lsc_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5889 {
5890   //offset=lustre_dissect_struct_HASH(0x85dd384)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_tail);
5891   // TODO: to be corrected !
5892   return offset;
5893 }
5894
5895 int
5896 lustre_dissect_struct_llog_size_change_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5897 {
5898   proto_item *item = NULL;
5899   proto_tree *tree = NULL;
5900   int old_offset;
5901
5902
5903
5904   old_offset=offset;
5905
5906   if (parent_tree) {
5907     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5908     tree = proto_item_add_subtree(item, ett_lustre_llog_size_change_rec);
5909   }
5910
5911   offset=lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvb, offset, pinfo, tree);
5912
5913   offset=lustre_dissect_element_llog_size_change_rec_lsc_fid(tvb, offset, pinfo, tree);
5914
5915   offset=lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvb, offset, pinfo, tree);
5916
5917   offset=lustre_dissect_element_llog_size_change_rec_padding(tvb, offset, pinfo, tree);
5918
5919   offset=lustre_dissect_element_llog_size_change_rec_lsc_tail(tvb, offset, pinfo, tree);
5920
5921
5922   proto_item_set_len(item, offset-old_offset);
5923
5924   return offset;
5925 }
5926
5927
5928
5929
5930 /* IDL: struct llog_gen { */
5931 /* IDL:         uint64 mnt_cnt; */
5932 /* IDL:         uint64 conn_cnt; */
5933 /* IDL: } */
5934
5935 static int
5936 lustre_dissect_element_llog_gen_mnt_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5937 {
5938   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_gen_mnt_cnt);
5939
5940   return offset;
5941 }
5942
5943 static int
5944 lustre_dissect_element_llog_gen_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5945 {
5946   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_gen_conn_cnt);
5947
5948   return offset;
5949 }
5950
5951 int
5952 lustre_dissect_struct_llog_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
5953 {
5954   proto_item *item = NULL;
5955   proto_tree *tree = NULL;
5956   int old_offset;
5957
5958
5959
5960   old_offset=offset;
5961
5962   if (parent_tree) {
5963     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
5964     tree = proto_item_add_subtree(item, ett_lustre_llog_gen);
5965   }
5966
5967   offset=lustre_dissect_element_llog_gen_mnt_cnt(tvb, offset, pinfo, tree);
5968
5969   offset=lustre_dissect_element_llog_gen_conn_cnt(tvb, offset, pinfo, tree);
5970
5971
5972   proto_item_set_len(item, offset-old_offset);
5973
5974   return offset;
5975 }
5976
5977 /* IDL: struct llog_gen_rec { */
5978 /* IDL:         struct llog_rec_hdr { */
5979 /* IDL: } lgr_hdr; */
5980 /* IDL:         struct llog_gen { */
5981 /* IDL: } lgr_gen; */
5982 /* IDL:         struct llog_rec_tail { */
5983 /* IDL: } lgr_tail; */
5984 /* IDL: } */
5985
5986 static int
5987 lustre_dissect_element_llog_gen_rec_lgr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5988 {
5989   //offset=lustre_dissect_struct_HASH(0x85de2e4)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_hdr);
5990   // TODO: to be corrected !
5991   return offset;
5992 }
5993
5994 static int
5995 lustre_dissect_element_llog_gen_rec_lgr_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
5996 {
5997   //offset=lustre_dissect_struct_HASH(0x85de434)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_gen);
5998   // TODO: to be corrected !
5999   return offset;
6000 }
6001
6002 static int
6003 lustre_dissect_element_llog_gen_rec_lgr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6004 {
6005   //offset=lustre_dissect_struct_HASH(0x85df3f8)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_tail);
6006   // TODO: to be corrected !
6007   return offset;
6008 }
6009
6010 int
6011 lustre_dissect_struct_llog_gen_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6012 {
6013   proto_item *item = NULL;
6014   proto_tree *tree = NULL;
6015   int old_offset;
6016
6017
6018
6019   old_offset=offset;
6020
6021   if (parent_tree) {
6022     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6023     tree = proto_item_add_subtree(item, ett_lustre_llog_gen_rec);
6024   }
6025
6026   offset=lustre_dissect_element_llog_gen_rec_lgr_hdr(tvb, offset, pinfo, tree);
6027
6028   offset=lustre_dissect_element_llog_gen_rec_lgr_gen(tvb, offset, pinfo, tree);
6029
6030   offset=lustre_dissect_element_llog_gen_rec_lgr_tail(tvb, offset, pinfo, tree);
6031
6032
6033   proto_item_set_len(item, offset-old_offset);
6034
6035   return offset;
6036 }
6037
6038
6039
6040
6041 /* IDL: struct llog_log_hdr { */
6042 /* IDL:         struct llog_rec_hdr { */
6043 /* IDL: } llh_hdr; */
6044 /* IDL:         uint64 llh_timestamp; */
6045 /* IDL:         uint32 llh_count; */
6046 /* IDL:         uint32 llh_bitmap_offset; */
6047 /* IDL:         uint32 llh_size; */
6048 /* IDL:         uint32 llh_flags; */
6049 /* IDL:         uint32 llh_cat_idx; */
6050 /* IDL:         struct obd_uuid { */
6051 /* IDL: } llh_tgtuuid; */
6052 /* IDL:         uint32 llh_reserved[1]; */
6053 /* IDL:         uint32 llh_bitmap[2024]; */
6054 /* IDL:         struct llog_rec_tail { */
6055 /* IDL: } llh_tail; */
6056 /* IDL: } */
6057
6058 static int
6059 lustre_dissect_element_llog_log_hdr_llh_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6060 {
6061   offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_hdr);
6062   return offset;
6063 }
6064
6065 static int
6066 lustre_dissect_element_llog_log_hdr_llh_timestamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6067 {
6068   nstime_t ns;
6069   ns.secs = tvb_get_letohl(tvb,offset);
6070   ns.nsecs=0;
6071   proto_tree_add_time(tree, hf_lustre_llog_log_hdr_llh_timestamp, tvb, offset, 8, &ns );
6072   offset+=8;
6073   return offset;
6074 }
6075
6076 static int
6077 lustre_dissect_element_llog_log_hdr_llh_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6078 {
6079   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_count);
6080
6081   return offset;
6082 }
6083
6084 static int
6085 lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6086 {
6087   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_bitmap_offset);
6088
6089   return offset;
6090 }
6091
6092 static int
6093 lustre_dissect_element_llog_log_hdr_llh_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6094 {
6095   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_size);
6096
6097   return offset;
6098 }
6099
6100
6101
6102 static int
6103 lustre_dissect_element_llog_log_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6104 {
6105   proto_item *item = NULL;
6106   proto_tree *tree = NULL;
6107
6108   if (parent_tree) {
6109     item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
6110     tree = proto_item_add_subtree(item, ett_lustre_llog_log_llh_flags);
6111   }
6112   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_zap_when_empty);   
6113   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_cat);   
6114   dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_play);   
6115
6116   offset+=4;
6117   return offset;
6118 }
6119
6120 static int
6121 lustre_dissect_element_llog_log_hdr_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6122 {
6123   //    offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_flags);
6124   offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_flags);
6125   return offset;
6126 }
6127
6128 static int
6129 lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6130 {
6131   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_cat_idx);
6132
6133   return offset;
6134 }
6135
6136 static int
6137 lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6138 {
6139   offset=lustre_dissect_struct_obd_uuid(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tgtuuid);
6140   return offset;
6141 }
6142
6143 static int
6144 lustre_dissect_element_llog_log_hdr_llh_reserved_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6145 {
6146   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_reserved);
6147
6148   return offset;
6149 }
6150
6151 static int
6152 lustre_dissect_element_llog_log_hdr_llh_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6153 {
6154   int i;
6155   for (i = 0; i < 1; i++)
6156     offset=lustre_dissect_element_llog_log_hdr_llh_reserved_(tvb, offset, pinfo, tree);
6157
6158   return offset;
6159 }
6160
6161 static int
6162 lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6163 {
6164   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_bitmap);
6165
6166   return offset;
6167 }
6168
6169
6170 static int
6171 lustre_dissect_element_llog_log_hdr_llh_bitmap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6172 {
6173   int i;
6174   for (i = 0; i < 2024; i++)
6175     offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvb, offset, pinfo, tree);
6176
6177   return offset;
6178 }
6179
6180
6181
6182 static int
6183 lustre_dissect_element_llog_log_hdr_llh_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6184 {
6185   offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tail);
6186   return offset;
6187 }
6188
6189 int
6190 lustre_dissect_struct_llog_log_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6191 {
6192   proto_item *item = NULL;
6193   proto_tree *tree = NULL;
6194   int old_offset;
6195
6196
6197
6198   old_offset=offset;
6199
6200   if (parent_tree) {
6201     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6202     tree = proto_item_add_subtree(item, ett_lustre_llog_log_hdr);
6203   }
6204
6205   offset=lustre_dissect_element_llog_log_hdr_llh_hdr(tvb, offset, pinfo, tree);
6206
6207   offset=lustre_dissect_element_llog_log_hdr_llh_timestamp(tvb, offset, pinfo, tree);
6208
6209   offset=lustre_dissect_element_llog_log_hdr_llh_count(tvb, offset, pinfo, tree);
6210
6211   offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvb, offset, pinfo, tree);
6212
6213   offset=lustre_dissect_element_llog_log_hdr_llh_size(tvb, offset, pinfo, tree);
6214
6215   offset=lustre_dissect_element_llog_log_hdr_llh_flags(tvb, offset, pinfo, tree);
6216
6217   offset=lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvb, offset, pinfo, tree);
6218
6219   offset=lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvb, offset, pinfo, tree);
6220
6221   offset=lustre_dissect_element_llog_log_hdr_llh_reserved(tvb, offset, pinfo, tree);
6222
6223   offset=lustre_dissect_element_llog_log_hdr_llh_bitmap(tvb, offset, pinfo, tree);
6224
6225   offset=lustre_dissect_element_llog_log_hdr_llh_tail(tvb, offset, pinfo, tree);
6226
6227
6228   proto_item_set_len(item, offset-old_offset);
6229
6230   return offset;
6231 }
6232
6233
6234
6235
6236 /* IDL: struct llog_cookie { */
6237 /* IDL:         struct llog_logid { */
6238 /* IDL: } lgc_lgl; */
6239 /* IDL:         uint32 lgc_subsys; */
6240 /* IDL:         uint32 lgc_index; */
6241 /* IDL:         uint32 lgc_padding; */
6242 /* IDL: } */
6243
6244 static int
6245 lustre_dissect_element_llog_cookie_lgc_lgl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6246 {
6247   offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_cookie_lgc_lgl);
6248   return offset;
6249 }
6250
6251 static int
6252 lustre_dissect_element_llog_cookie_lgc_subsys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6253 {
6254   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_subsys);
6255
6256   return offset;
6257 }
6258
6259 static int
6260 lustre_dissect_element_llog_cookie_lgc_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6261 {
6262   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_index);
6263
6264   return offset;
6265 }
6266
6267 static int
6268 lustre_dissect_element_llog_cookie_lgc_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6269 {
6270   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_padding);
6271
6272   return offset;
6273 }
6274
6275 int
6276 lustre_dissect_struct_llog_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6277 {
6278   proto_item *item = NULL;
6279   proto_tree *tree = NULL;
6280   int old_offset;
6281
6282
6283
6284   old_offset=offset;
6285
6286   if (parent_tree) {
6287     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6288     tree = proto_item_add_subtree(item, ett_lustre_llog_cookie);
6289   }
6290
6291   offset=lustre_dissect_element_llog_cookie_lgc_lgl(tvb, offset, pinfo, tree);
6292
6293   offset=lustre_dissect_element_llog_cookie_lgc_subsys(tvb, offset, pinfo, tree);
6294
6295   offset=lustre_dissect_element_llog_cookie_lgc_index(tvb, offset, pinfo, tree);
6296
6297   offset=lustre_dissect_element_llog_cookie_lgc_padding(tvb, offset, pinfo, tree);
6298
6299
6300   proto_item_set_len(item, offset-old_offset);
6301
6302   return offset;
6303 }
6304
6305
6306
6307 /* IDL: struct llogd_body { */
6308 /* IDL:         struct llog_logid { */
6309 /* IDL: } lgd_logid; */
6310 /* IDL:         uint32 lgd_ctxt_idx; */
6311 /* IDL:         uint32 lgd_llh_flags; */
6312 /* IDL:         uint32 lgd_index; */
6313 /* IDL:         uint32 lgd_saved_index; */
6314 /* IDL:         uint32 lgd_len; */
6315 /* IDL:         uint64 lgd_cur_offset; */
6316 /* IDL: } */
6317
6318 static int
6319 lustre_dissect_element_llogd_body_lgd_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6320 {
6321   offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llogd_body_lgd_logid);
6322   return offset;
6323 }
6324
6325 static int
6326 lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6327 {
6328   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_ctxt_idx);
6329
6330   return offset;
6331 }
6332
6333 static int
6334 lustre_dissect_element_llogd_body_lgd_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6335 {
6336   //offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_llh_flags);
6337
6338   offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_llh_flags);
6339
6340   return offset;
6341 }
6342
6343 static int
6344 lustre_dissect_element_llogd_body_lgd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6345 {
6346   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_index);
6347
6348   return offset;
6349 }
6350
6351 static int
6352 lustre_dissect_element_llogd_body_lgd_saved_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6353 {
6354   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_saved_index);
6355
6356   return offset;
6357 }
6358
6359 static int
6360 lustre_dissect_element_llogd_body_lgd_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6361 {
6362   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_len);
6363
6364   return offset;
6365 }
6366
6367 static int
6368 lustre_dissect_element_llogd_body_lgd_cur_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6369 {
6370   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_cur_offset);
6371
6372   return offset;
6373 }
6374
6375 int
6376 lustre_dissect_struct_llogd_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6377 {
6378   proto_item *item = NULL;
6379   proto_tree *tree = NULL;
6380   int old_offset;
6381
6382
6383
6384   old_offset=offset;
6385
6386   if (parent_tree) {
6387     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6388     tree = proto_item_add_subtree(item, ett_lustre_llogd_body);
6389   }
6390
6391   offset=lustre_dissect_element_llogd_body_lgd_logid(tvb, offset, pinfo, tree);
6392
6393   offset=lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvb, offset, pinfo, tree);
6394
6395   offset=lustre_dissect_element_llogd_body_lgd_llh_flags(tvb, offset, pinfo, tree);
6396
6397   offset=lustre_dissect_element_llogd_body_lgd_index(tvb, offset, pinfo, tree);
6398
6399   offset=lustre_dissect_element_llogd_body_lgd_saved_index(tvb, offset, pinfo, tree);
6400
6401   offset=lustre_dissect_element_llogd_body_lgd_len(tvb, offset, pinfo, tree);
6402
6403   offset=lustre_dissect_element_llogd_body_lgd_cur_offset(tvb, offset, pinfo, tree);
6404
6405
6406   proto_item_set_len(item, offset-old_offset);
6407
6408   return offset;
6409 }
6410
6411
6412 /* TODO : find when this Structure appear on the wire */
6413 /* IDL: struct llogd_conn_body { */
6414 /* IDL:         struct llog_gen { */
6415 /* IDL: } lgdc_gen; */
6416 /* IDL:         struct llog_logid { */
6417 /* IDL: } lgdc_logid; */
6418 /* IDL:         uint32 lgdc_ctxt_idx; */
6419 /* IDL: } */
6420
6421 static int
6422 lustre_dissect_element_llogd_conn_body_lgdc_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6423 {
6424   //offset=lustre_dissect_struct_HASH(0x85e6038)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_gen);
6425   return offset;
6426 }
6427
6428 static int
6429 lustre_dissect_element_llogd_conn_body_lgdc_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6430 {
6431   //offset=lustre_dissect_struct_HASH(0x85e6188)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_logid);
6432   return offset;
6433 }
6434
6435 static int
6436 lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6437 {
6438   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_conn_body_lgdc_ctxt_idx);
6439
6440   return offset;
6441 }
6442
6443 int
6444 lustre_dissect_struct_llogd_conn_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6445 {
6446   proto_item *item = NULL;
6447   proto_tree *tree = NULL;
6448   int old_offset;
6449
6450
6451
6452   old_offset=offset;
6453
6454   if (parent_tree) {
6455     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6456     tree = proto_item_add_subtree(item, ett_lustre_llogd_conn_body);
6457   }
6458
6459   offset=lustre_dissect_element_llogd_conn_body_lgdc_gen(tvb, offset, pinfo, tree);
6460
6461   offset=lustre_dissect_element_llogd_conn_body_lgdc_logid(tvb, offset, pinfo, tree);
6462
6463   offset=lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvb, offset, pinfo, tree);
6464
6465
6466   proto_item_set_len(item, offset-old_offset);
6467
6468   return offset;
6469 }
6470
6471 /* IDL: struct obdo { */
6472 /* IDL:         uint64 o_valid; */
6473 /* IDL:         uint64 o_id; */
6474 /* IDL:         uint64 o_gr; */
6475 /* IDL:         uint64 o_fid; */
6476 /* IDL:         uint64 o_size; */
6477 /* IDL:         uint64 o_mtime; */
6478 /* IDL:         uint64 o_atime; */
6479 /* IDL:         uint64 o_ctime; */
6480 /* IDL:         uint64 o_blocks; */
6481 /* IDL:         uint64 o_grant; */
6482 /* IDL:         uint32 o_blksize; */
6483 /* IDL:         uint32 o_mode; */
6484 /* IDL:         uint32 o_uid; */
6485 /* IDL:         uint32 o_gid; */
6486 /* IDL:         uint32 o_flags; */
6487 /* IDL:         uint32 o_nlink; */
6488 /* IDL:         uint32 o_generation; */
6489 /* IDL:         uint32 o_misc; */
6490 /* IDL:         uint64 o_ioepoch; */
6491 /* IDL:         uint32 o_stripe_idx; */
6492 /* IDL:         uint32 o_padding_1; */
6493 /* IDL:         struct lustre_handle { */
6494 /* IDL: } o_handle; */
6495 /* IDL:         struct llog_cookie { */
6496 /* IDL: } o_lcookie; */
6497 /* IDL:         uint64 o_padding_2; */
6498 /* IDL:         uint64 o_padding_3; */
6499 /* IDL:         uint64 o_padding_4; */
6500 /* IDL:         uint64 o_padding_5; */
6501 /* IDL:         uint64 o_padding_6; */
6502 /* IDL: } */
6503
6504 static int
6505 lustre_dissect_element_obdo_o_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6506 {
6507   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_valid);
6508
6509   return offset;
6510 }
6511
6512 static int
6513 lustre_dissect_element_obdo_o_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6514 {
6515   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_id);
6516
6517   return offset;
6518 }
6519
6520 static int
6521 lustre_dissect_element_obdo_o_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6522 {
6523   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_gr);
6524
6525   return offset;
6526 }
6527
6528 static int
6529 lustre_dissect_element_obdo_o_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6530 {
6531   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_fid);
6532
6533   return offset;
6534 }
6535
6536 static int
6537 lustre_dissect_element_obdo_o_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6538 {
6539   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_size);
6540
6541   return offset;
6542 }
6543
6544 static int
6545 lustre_dissect_element_obdo_o_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6546 {
6547   nstime_t ns;
6548   /* timestamp */
6549   ns.secs = tvb_get_letohl(tvb,offset);
6550   ns.nsecs=0;
6551   proto_tree_add_time(tree, hf_lustre_obdo_o_mtime, tvb, offset, 8, &ns );
6552   offset+=8;
6553   return offset;
6554 }
6555
6556 static int
6557 lustre_dissect_element_obdo_o_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6558 {
6559   nstime_t ns;
6560   /* timestamp */
6561   ns.secs = tvb_get_letohl(tvb,offset);
6562   ns.nsecs=0;
6563   proto_tree_add_time(tree, hf_lustre_obdo_o_atime, tvb, offset, 8, &ns );
6564   offset+=8;
6565   return offset;
6566
6567 }
6568
6569 static int
6570 lustre_dissect_element_obdo_o_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6571 {
6572   nstime_t ns;
6573   /* timestamp */
6574   ns.secs = tvb_get_letohl(tvb,offset);
6575   ns.nsecs=0;
6576   proto_tree_add_time(tree, hf_lustre_obdo_o_ctime, tvb, offset, 8, &ns );
6577   offset+=8;
6578   return offset;
6579 }
6580
6581 static int
6582 lustre_dissect_element_obdo_o_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6583 {
6584   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_blocks);
6585
6586   return offset;
6587 }
6588
6589 static int
6590 lustre_dissect_element_obdo_o_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6591 {
6592   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_grant);
6593
6594   return offset;
6595 }
6596
6597 static int
6598 lustre_dissect_element_obdo_o_blksize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6599 {
6600   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_blksize);
6601
6602   return offset;
6603 }
6604
6605 static int
6606 lustre_dissect_element_obdo_o_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6607 {
6608   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_mode);
6609
6610   return offset;
6611 }
6612
6613 static int
6614 lustre_dissect_element_obdo_o_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6615 {
6616   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_uid);
6617
6618   return offset;
6619 }
6620
6621 static int
6622 lustre_dissect_element_obdo_o_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6623 {
6624   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_gid);
6625
6626   return offset;
6627 }
6628
6629 static int
6630 lustre_dissect_element_obdo_o_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6631 {
6632   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_flags);
6633   /* TODO rajouter Ã§a  , faire une fonction générique qui s'occupe de tous les flags d'un tableau. */
6634   /*   LOBDFlags = {*/
6635   /*0x00000001 : "OBD_FL_INLINEDATA",*/
6636   /*0x00000002 : "OBD_FL_OBDMDEXISTS",*/
6637   /*0x00000004 : "OBD_FL_DELORPHAN",*/
6638   /*0x00000008 : "OBD_FL_NORPC",*/
6639   /*0x00000010 : "OBD_FL_IDONLY",*/
6640   /*0x00000020 : "OBD_FL_RECREATE_OBJS",*/
6641   /*0x00000040 : "OBD_FL_DEBUG_CHECK",*/
6642   /*0x00000100 : "OBD_FL_NO_USRQUOTA",*/
6643   /*0x00000200 : "OBD_FL_NO_GRPQUOTA",*/
6644   /*0x00000400 : "OBD_FL_CREATE_CROW",*/
6645   /*0x00000800 : "OBD_FL_SRVLOCK",*/
6646   //}
6647   return offset;
6648 }
6649
6650 static int
6651 lustre_dissect_element_obdo_o_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6652 {
6653   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_nlink);
6654
6655   return offset;
6656 }
6657
6658 static int
6659 lustre_dissect_element_obdo_o_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6660 {
6661   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_generation);
6662
6663   return offset;
6664 }
6665
6666 static int
6667 lustre_dissect_element_obdo_o_misc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6668 {
6669   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_misc);
6670
6671   return offset;
6672 }
6673
6674 static int
6675 lustre_dissect_element_obdo_o_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6676 {
6677   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_ioepoch);
6678
6679   return offset;
6680 }
6681
6682 static int
6683 lustre_dissect_element_obdo_o_stripe_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6684 {
6685   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_stripe_idx);
6686
6687   return offset;
6688 }
6689
6690 static int
6691 lustre_dissect_element_obdo_o_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6692 {
6693   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_1);
6694
6695   return offset;
6696 }
6697
6698 static int
6699 lustre_dissect_element_obdo_o_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6700 {
6701   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_handle);
6702   return offset;
6703 }
6704
6705 static int
6706 lustre_dissect_element_obdo_o_lcookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6707 {
6708   offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_lcookie);
6709   return offset;
6710 }
6711
6712 static int
6713 lustre_dissect_element_obdo_o_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6714 {
6715   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_2);
6716
6717   return offset;
6718 }
6719
6720 static int
6721 lustre_dissect_element_obdo_o_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6722 {
6723   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_3);
6724
6725   return offset;
6726 }
6727
6728 static int
6729 lustre_dissect_element_obdo_o_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6730 {
6731   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_4);
6732
6733   return offset;
6734 }
6735
6736 static int
6737 lustre_dissect_element_obdo_o_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6738 {
6739   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_5);
6740
6741   return offset;
6742 }
6743
6744 static int
6745 lustre_dissect_element_obdo_o_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6746 {
6747   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_6);
6748
6749   return offset;
6750 }
6751
6752 int
6753 lustre_dissect_struct_obdo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6754 {
6755   proto_item *item = NULL;
6756   proto_tree *tree = NULL;
6757   int old_offset;
6758
6759
6760
6761   old_offset=offset;
6762
6763   if (parent_tree) {
6764     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6765     tree = proto_item_add_subtree(item, ett_lustre_obdo);
6766   }
6767
6768   offset=lustre_dissect_element_obdo_o_valid(tvb, offset, pinfo, tree);
6769
6770   offset=lustre_dissect_element_obdo_o_id(tvb, offset, pinfo, tree);
6771
6772   offset=lustre_dissect_element_obdo_o_gr(tvb, offset, pinfo, tree);
6773
6774   offset=lustre_dissect_element_obdo_o_fid(tvb, offset, pinfo, tree);
6775
6776   offset=lustre_dissect_element_obdo_o_size(tvb, offset, pinfo, tree);
6777
6778   offset=lustre_dissect_element_obdo_o_mtime(tvb, offset, pinfo, tree);
6779
6780   offset=lustre_dissect_element_obdo_o_atime(tvb, offset, pinfo, tree);
6781
6782   offset=lustre_dissect_element_obdo_o_ctime(tvb, offset, pinfo, tree);
6783
6784   offset=lustre_dissect_element_obdo_o_blocks(tvb, offset, pinfo, tree);
6785
6786   offset=lustre_dissect_element_obdo_o_grant(tvb, offset, pinfo, tree);
6787
6788   offset=lustre_dissect_element_obdo_o_blksize(tvb, offset, pinfo, tree);
6789
6790   offset=lustre_dissect_element_obdo_o_mode(tvb, offset, pinfo, tree);
6791
6792   offset=lustre_dissect_element_obdo_o_uid(tvb, offset, pinfo, tree);
6793
6794   offset=lustre_dissect_element_obdo_o_gid(tvb, offset, pinfo, tree);
6795
6796   offset=lustre_dissect_element_obdo_o_flags(tvb, offset, pinfo, tree);
6797
6798   offset=lustre_dissect_element_obdo_o_nlink(tvb, offset, pinfo, tree);
6799
6800   offset=lustre_dissect_element_obdo_o_generation(tvb, offset, pinfo, tree);
6801
6802   offset=lustre_dissect_element_obdo_o_misc(tvb, offset, pinfo, tree);
6803
6804   offset=lustre_dissect_element_obdo_o_ioepoch(tvb, offset, pinfo, tree);
6805
6806   offset=lustre_dissect_element_obdo_o_stripe_idx(tvb, offset, pinfo, tree);
6807
6808   offset=lustre_dissect_element_obdo_o_padding_1(tvb, offset, pinfo, tree);
6809
6810   offset=lustre_dissect_element_obdo_o_handle(tvb, offset, pinfo, tree);
6811
6812   offset=lustre_dissect_element_obdo_o_lcookie(tvb, offset, pinfo, tree);
6813
6814   offset=lustre_dissect_element_obdo_o_padding_2(tvb, offset, pinfo, tree);
6815
6816   offset=lustre_dissect_element_obdo_o_padding_3(tvb, offset, pinfo, tree);
6817
6818   offset=lustre_dissect_element_obdo_o_padding_4(tvb, offset, pinfo, tree);
6819
6820   offset=lustre_dissect_element_obdo_o_padding_5(tvb, offset, pinfo, tree);
6821
6822   offset=lustre_dissect_element_obdo_o_padding_6(tvb, offset, pinfo, tree);
6823
6824
6825   proto_item_set_len(item, offset-old_offset);
6826
6827   return offset;
6828 }
6829
6830
6831
6832 /* IDL: struct ost_body { */
6833 /* IDL:         struct obdo { */
6834 /* IDL: } oa; */
6835 /* IDL: } */
6836
6837 static int
6838 lustre_dissect_element_ost_body_oa(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6839 {
6840   offset=lustre_dissect_struct_obdo(tvb,offset,pinfo,tree,hf_lustre_ost_body_oa);
6841   return offset;
6842 }
6843
6844 int
6845 lustre_dissect_struct_ost_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6846 {
6847   proto_item *item = NULL;
6848   proto_tree *tree = NULL;
6849   int old_offset;
6850
6851
6852
6853   old_offset=offset;
6854
6855   if (parent_tree) {
6856     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6857     tree = proto_item_add_subtree(item, ett_lustre_ost_body);
6858   }
6859
6860   offset=lustre_dissect_element_ost_body_oa(tvb, offset, pinfo, tree);
6861
6862
6863   proto_item_set_len(item, offset-old_offset);
6864
6865   return offset;
6866 }
6867
6868
6869 /* TODO : find when this Structure appear on the wire */
6870 /* IDL: struct qunit_data { */
6871 /* IDL:         uint32 qd_id; */
6872 /* IDL:         uint32 qd_flags; */
6873 /* IDL:         uint64 qd_count; */
6874 /* IDL:         uint64 qd_qunit; */
6875 /* IDL:         uint64 padding; */
6876 /* IDL: } */
6877
6878 static int
6879 lustre_dissect_element_qunit_data_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6880 {
6881   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_id);
6882
6883   return offset;
6884 }
6885
6886 static int
6887 lustre_dissect_element_qunit_data_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6888 {
6889   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_flags);
6890
6891   return offset;
6892 }
6893
6894 static int
6895 lustre_dissect_element_qunit_data_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6896 {
6897   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_count);
6898
6899   return offset;
6900 }
6901
6902 static int
6903 lustre_dissect_element_qunit_data_qd_qunit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6904 {
6905   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_qunit);
6906
6907   return offset;
6908 }
6909
6910 static int
6911 lustre_dissect_element_qunit_data_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6912 {
6913   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_padding);
6914
6915   return offset;
6916 }
6917
6918 int
6919 lustre_dissect_struct_qunit_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6920 {
6921   proto_item *item = NULL;
6922   proto_tree *tree = NULL;
6923   int old_offset;
6924
6925
6926
6927   old_offset=offset;
6928
6929   if (parent_tree) {
6930     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6931     tree = proto_item_add_subtree(item, ett_lustre_qunit_data);
6932   }
6933
6934   offset=lustre_dissect_element_qunit_data_qd_id(tvb, offset, pinfo, tree);
6935
6936   offset=lustre_dissect_element_qunit_data_qd_flags(tvb, offset, pinfo, tree);
6937
6938   offset=lustre_dissect_element_qunit_data_qd_count(tvb, offset, pinfo, tree);
6939
6940   offset=lustre_dissect_element_qunit_data_qd_qunit(tvb, offset, pinfo, tree);
6941
6942   offset=lustre_dissect_element_qunit_data_padding(tvb, offset, pinfo, tree);
6943
6944
6945   proto_item_set_len(item, offset-old_offset);
6946
6947   return offset;
6948 }
6949
6950 /* TODO : find when this Structure appear on the wire */
6951 /* IDL: struct qunit_data_old2 { */
6952 /* IDL:         uint32 qd_id; */
6953 /* IDL:         uint32 qd_flags; */
6954 /* IDL:         uint64 qd_count; */
6955 /* IDL: } */
6956
6957 static int
6958 lustre_dissect_element_qunit_data_old2_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6959 {
6960   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_id);
6961
6962   return offset;
6963 }
6964
6965 static int
6966 lustre_dissect_element_qunit_data_old2_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6967 {
6968   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_flags);
6969
6970   return offset;
6971 }
6972
6973 static int
6974 lustre_dissect_element_qunit_data_old2_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
6975 {
6976   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_count);
6977
6978   return offset;
6979 }
6980
6981 int
6982 lustre_dissect_struct_qunit_data_old2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
6983 {
6984   proto_item *item = NULL;
6985   proto_tree *tree = NULL;
6986   int old_offset;
6987
6988
6989
6990   old_offset=offset;
6991
6992   if (parent_tree) {
6993     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
6994     tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old2);
6995   }
6996
6997   offset=lustre_dissect_element_qunit_data_old2_qd_id(tvb, offset, pinfo, tree);
6998
6999   offset=lustre_dissect_element_qunit_data_old2_qd_flags(tvb, offset, pinfo, tree);
7000
7001   offset=lustre_dissect_element_qunit_data_old2_qd_count(tvb, offset, pinfo, tree);
7002
7003
7004   proto_item_set_len(item, offset-old_offset);
7005
7006   return offset;
7007 }
7008
7009 /* TODO : find when this Structure appear on the wire */
7010 /* IDL: struct qunit_data_old { */
7011 /* IDL:         uint32 qd_id; */
7012 /* IDL:         uint32 qd_type; */
7013 /* IDL:         uint32 qd_count; */
7014 /* IDL:         uint32 qd_isblk; */
7015 /* IDL: } */
7016
7017 static int
7018 lustre_dissect_element_qunit_data_old_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7019 {
7020   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_id);
7021
7022   return offset;
7023 }
7024
7025 static int
7026 lustre_dissect_element_qunit_data_old_qd_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7027 {
7028   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_type);
7029
7030   return offset;
7031 }
7032
7033 static int
7034 lustre_dissect_element_qunit_data_old_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7035 {
7036   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_count);
7037
7038   return offset;
7039 }
7040
7041 static int
7042 lustre_dissect_element_qunit_data_old_qd_isblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7043 {
7044   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_isblk);
7045
7046   return offset;
7047 }
7048
7049 int
7050 lustre_dissect_struct_qunit_data_old(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
7051 {
7052   proto_item *item = NULL;
7053   proto_tree *tree = NULL;
7054   int old_offset;
7055
7056
7057
7058   old_offset=offset;
7059
7060   if (parent_tree) {
7061     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
7062     tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old);
7063   }
7064
7065   offset=lustre_dissect_element_qunit_data_old_qd_id(tvb, offset, pinfo, tree);
7066
7067   offset=lustre_dissect_element_qunit_data_old_qd_type(tvb, offset, pinfo, tree);
7068
7069   offset=lustre_dissect_element_qunit_data_old_qd_count(tvb, offset, pinfo, tree);
7070
7071   offset=lustre_dissect_element_qunit_data_old_qd_isblk(tvb, offset, pinfo, tree);
7072
7073
7074   proto_item_set_len(item, offset-old_offset);
7075
7076   return offset;
7077 }
7078
7079
7080 /* ------------------------------------------------------------------------- */
7081 /* dissect string .
7082  * the length of the string is the current buflen 
7083  * @tvb the packet buff
7084  * @offset the current offset 
7085  * @pinfo 
7086  * @parent_tree
7087  * @hf_index : the corresponding header field
7088  * @buf_num  : the corresponding bufnumber of the string (we use it to
7089  * determine the string length), must respect : 0<bufnum<=bufmax_in_paquet
7090  */
7091 static int 
7092 lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) 
7093 {
7094   proto_item *item = NULL;
7095
7096   int old_offset;
7097   guint32 string_len;
7098
7099   old_offset=offset;
7100
7101   // if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb,
7102   // offset, -1, TRUE); //     tree = proto_item_add_subtree(item,
7103   // ett_lustre); }
7104
7105   if(buf_num+1>LUSTRE_BUFCOUNT) 
7106     return offset;
7107
7108   string_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
7109   proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
7110   if(string_len>1)
7111     display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s", tvb_get_string(tvb,offset,string_len) );
7112
7113   offset+=string_len;
7114   proto_item_set_len(item, offset-old_offset);
7115   offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* after a string we must be aligned to 8 bytes. */
7116
7117
7118   return offset;
7119 }
7120
7121 /* ------------------------------------------------------------------------- */
7122 /* dissect raw data */
7123 static int 
7124 lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) 
7125 {
7126   proto_item *item = NULL;
7127
7128   guint32 data_len ;
7129   int old_offset;
7130
7131   old_offset=offset;
7132   if(buf_num+1>LUSTRE_BUFCOUNT) 
7133     return offset;
7134
7135   data_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
7136   proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
7137
7138   offset+=data_len;
7139   proto_item_set_len(item, offset-old_offset);
7140   offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* align on 8 bytes */ 
7141
7142   return offset; 
7143 }
7144 /* ------------------------------------------------------------------------ */
7145
7146
7147 static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) 
7148 {
7149   guint32 opcode  ;
7150
7151   opcode = tvb_get_letohl(tvb,offset);
7152
7153   switch(opcode){
7154     case  REINT_SETATTR:
7155       /* [eadata][cookie_data][ldlm_request] */
7156       offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
7157       offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
7158           hf_lustre_ldlm_request) ;
7159       break;
7160     case REINT_CREATE : 
7161       /* [rec_create][filename][tgt.. Ã  0 pour l'instant][ldlm_request] */
7162       offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
7163       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
7164       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);  /* this string is all the time =="\0"*/
7165       offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
7166           hf_lustre_ldlm_request) ;
7167       break;
7168     case  REINT_LINK   :
7169       /*[mds_rec_link][filename][ldlm_req] */
7170       offset=lustre_dissect_struct_mds_rec_link(tvb, offset, pinfo, tree, hf_lustre_mds_rec_link);
7171       offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
7172           hf_lustre_ldlm_request) ;
7173       /*TODO : need to be check*/
7174       break;
7175     case  REINT_UNLINK : /* mds_unlink_unpack : [mds_rec_unlink][filename][ldlm_req] */
7176       /* [mds_rec_unlink][filename][ldlm_req][..]*/
7177       offset=lustre_dissect_struct_mds_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mds_rec_unlink); 
7178       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
7179       if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +2))) == 112) /* TODO : ugly .. but 
7180                                                                                         for now we have to do this */
7181         offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl);
7182       else
7183         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
7184
7185       break;
7186     case  REINT_RENAME : /*mds_rename_unpack : [mds_rec_rename][filename source][filename target_name][ldlm_request] */
7187       offset=lustre_dissect_struct_mds_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mds_rec_link);
7188       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+1);  
7189       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+2); 
7190       offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
7191       break;
7192     case  REINT_OPEN   : /* [rec_create][filename][eadata] */
7193       offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
7194       offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
7195       offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); /* TODO : replace with hf_eadata */
7196       break;
7197     default:
7198       break;
7199
7200   }
7201
7202   return offset ;
7203 }
7204
7205
7206 /* dissect a connect message */
7207 static int
7208 lustre_dissect_generic_connect(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7209 {
7210   /*TODO : add a cuuid and target uid */
7211   offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
7212   offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
7213   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mds_body_handle); 
7214   offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
7215   return offset;
7216 }
7217
7218 static int
7219 lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7220 {
7221   guint32 i ;
7222
7223   switch (opc){
7224     case OST_REPLY: /* obsolete so nothing */
7225       break;
7226     case OST_GETATTR:           
7227       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7228       break;
7229     case OST_SETATTR:
7230       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7231       break;
7232     case OST_READ: /* [OST_BODY][obd_ioobj][niobuf_remote] for request, [OST_BODY] for reply */
7233       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7234       if(pb_type==PTL_RPC_MSG_REQUEST){
7235         offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree,   hf_lustre_obd_ioobj); 
7236         offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_niobuf_remote); 
7237       }
7238       break;
7239     case OST_WRITE:
7240       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo,
7241           tree, hf_lustre_ost_body) ;  /* [ost_body] in both case */
7242       if(pb_type==PTL_RPC_MSG_REQUEST)
7243       {
7244         for (i=0;i<tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+ 4*(LUSTRE_REQ_REC_OFF+1))/24;i++)
7245           offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj); 
7246         offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_obd_ioobj); 
7247       }
7248       if(pb_type==PTL_RPC_MSG_REPLY) /* niocount *[uint32], but niocount is in request message, so 
7249                                         we use the bufcount */
7250       {
7251         for (i=0;i<tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)-2;i++) /* -2 because we have already dissect 2 buffers : ptl + ost */
7252           offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_nio);
7253         if (i & 1 ) /* if odd we add extra padding */
7254           offset=dissect_uint32(tvb, offset, pinfo, tree,
7255               hf_lustre_extra_padding); 
7256       }
7257       break;
7258     case OST_CREATE:
7259       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7260       break;
7261     case OST_DESTROY:
7262       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7263       if(pb_type==PTL_RPC_MSG_REQUEST) /* [ost_body][-si buf- ldlm_request] */
7264         if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +1))) != 0)
7265           offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ost_body); 
7266       /* TODO : test that */
7267       break;
7268     case OST_GET_INFO:
7269       if(pb_type==PTL_RPC_MSG_REQUEST) /* [key] */
7270       {
7271         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF+1); 
7272       }
7273       if (pb_type==PTL_RPC_MSG_REPLY)
7274       {
7275         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */
7276       }
7277
7278       break;
7279     case OST_CONNECT:
7280       if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
7281         offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
7282       if (pb_type==PTL_RPC_MSG_REPLY)
7283         offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
7284       break;
7285     case OST_DISCONNECT: /* [nothing] */
7286       break;
7287     case OST_PUNCH: /* [ost_body] */
7288       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7289       break;
7290     case OST_OPEN: /* [nothing] in the code maybee obsolete */
7291       break; 
7292     case OST_CLOSE: /* [nothing] in the code maybee obsolete */
7293       break;
7294     case OST_STATFS: /* [obd_statfs] check that : TODO */
7295       if(LUSTRE_BUFCOUNT>=2)
7296         offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; 
7297       break;
7298     case OST_SYNC:
7299       /*[ost_body] in both case */
7300       offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
7301       break;
7302     case OST_SET_INFO:
7303       if(pb_type==PTL_RPC_MSG_REQUEST)
7304       {
7305         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key,LUSTRE_REQ_REC_OFF); /* key  */
7306         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */
7307       }
7308       /* if Key = "evict_by_nid" --> need to be process.. TODO */
7309       break;
7310     case OST_QUOTACHECK:
7311       if(pb_type==PTL_RPC_MSG_REQUEST)
7312         offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
7313       /* nothing in reply */
7314       break;
7315     case OST_QUOTACTL:
7316       /*[obd_quotactl in both case]*/
7317       offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
7318     case OST_QUOTA_ADJUST_QUNIT:
7319       /* [quota_adjust_qunit] in both case ? */
7320       offset=lustre_dissect_struct_quota_adjust_qunit(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit) ; 
7321   };
7322
7323   return offset;
7324 }
7325
7326 static int
7327 lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7328 {
7329   switch (opc){
7330     case MDS_DISCONNECT:
7331       /*[nothing]*/
7332       break;
7333     case MDS_GETSTATUS: 
7334       /*[mds body]*/
7335       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7336       break;
7337     case MDS_SETXATTR:
7338       if(pb_type==PTL_RPC_MSG_REQUEST)
7339         /* [mds body] */
7340         offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7341       /*if(reply) : [nothing]*/
7342       break;
7343     case MDS_GETXATTR:
7344       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7345       if(pb_type==PTL_RPC_MSG_REQUEST)
7346         /*[string_xattr_name]*/
7347         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+1);
7348       if(pb_type==PTL_RPC_MSG_REPLY)
7349         /*[eada]*/
7350         offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+1);
7351       break;
7352     case MDS_GETATTR:
7353       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7354       /* TODO [ something ??? ] */ 
7355       break;
7356     case MDS_GETATTR_NAME:
7357       if(pb_type==PTL_RPC_MSG_REQUEST)
7358         /*[mds_body]*/
7359         offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7360       /*[nothing in reply]*/
7361       break;
7362     case MDS_DONE_WRITING:
7363       /*[mds_body]*/
7364       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7365       break;
7366     case MDS_PIN: /* repbody.. */
7367       /*[mds_body]*/
7368       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7369       break;
7370     case MDS_SYNC:
7371       /*[mds_body]*/
7372       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7373       break;
7374
7375     case MDS_CLOSE: /* TODO : check the corresponding structure in lustre code */
7376       if(pb_type==PTL_RPC_MSG_REQUEST)  
7377       { /* [mds_body] [lov_mds_md][log_cookie] */
7378         offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7379         if(LUSTRE_BUFCOUNT>=3) 
7380           offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
7381         if(LUSTRE_BUFCOUNT>=4) 
7382           if( tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
7383             offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie);
7384       }
7385       if(pb_type==PTL_RPC_MSG_REPLY) 
7386       { /* [mds_body][md][cookie] TODO : check that (reread the code about shrink in lustre) */ 
7387         offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7388         if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0)
7389           offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_md_data,LUSTRE_REQ_REC_OFF+1); /* key  */
7390         if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
7391           offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); 
7392       }
7393       break;
7394
7395     case MDS_STATFS:
7396       if(pb_type==PTL_RPC_MSG_REPLY)
7397         /*[obd_statfs]*/
7398         offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; 
7399       /*in request : [nothing]*/
7400       break;
7401
7402     case MDS_READPAGE:
7403       /* [mds_body] but with some different interpration, need to modify the hf :  TODO  */
7404       offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7405       break;
7406
7407     case MDS_REINT: 
7408       /* the structure depend on the intent_opcode */
7409       if(pb_type==PTL_RPC_MSG_REQUEST)
7410         offset=reint_opcode_process(tvb, offset, pinfo, tree);
7411       if(pb_type==PTL_RPC_MSG_REPLY)
7412       {
7413         /*[mds_body][??][llog_logid_rec] */
7414         offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7415         if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){
7416           /* OPEN, RENAME, and UNLINK */
7417           if(tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){ /* rec_unlink or rec_rename */
7418             offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, 
7419                 LUSTRE_REQ_REC_OFF+1); // replace by eadata TODO TODO // 
7420             if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0) /* with unlink or rename we have 4 buffers handler.c line 1691*/
7421               offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, 
7422                   hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); // replace withe eadata TODO TODO // 
7423           }
7424         }
7425
7426       }
7427       break;
7428     case MDS_SET_INFO:
7429       if(pb_type==PTL_RPC_MSG_REQUEST){
7430         /*[key][val]*/
7431         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key,LUSTRE_REQ_REC_OFF); /* key  */
7432         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */
7433         //offset=add_extra_padding(tvb,offset,pinfo,tree);
7434       }
7435       /*nothing en reply*/
7436       break;
7437     case MDS_QUOTACHECK:
7438       /* [obd_quotactl] */
7439       if(pb_type==PTL_RPC_MSG_REQUEST)
7440         offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
7441       break;
7442     case MDS_QUOTACTL:
7443       /* [obd_quotactl] in both case*/
7444       offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
7445       break;
7446     case MDS_CONNECT: 
7447       if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
7448         offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
7449       if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
7450         offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
7451       break;
7452     default:
7453       break;
7454   };
7455
7456   return offset;
7457
7458 }
7459
7460
7461 static int
7462 lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7463 {
7464
7465   switch (opc)
7466   {
7467     case LDLM_ENQUEUE:
7468       /*[ldlm_request] if we have one more buffer it's [intent_opcode] and the opcode give us the 
7469        * corresponding intent structure [intent] */
7470       if(pb_type==PTL_RPC_MSG_REQUEST)
7471       {
7472         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7473         if (LUSTRE_BUFCOUNT>=3)
7474           offset=lustre_dissect_struct_ldlm_intent(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent);
7475       }
7476       if(pb_type==PTL_RPC_MSG_REPLY)
7477       {
7478         guint32 ldlm_type;
7479         guint32 magic;
7480         /*[ldlm_reply]*/
7481         offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply,&ldlm_type) ; 
7482         if(LUSTRE_BUFCOUNT>2 && (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*2) == 40)) 
7483           /* TODO :this code need to be check and test, the lustre corresponding code is'nt explicit, so 
7484            * not sure to have this buffer, but in example it works fine
7485            */
7486           offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb); 
7487         else 
7488           if(LUSTRE_BUFCOUNT>2)
7489           {
7490             offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ;
7491             /*g_print("buflen_off+4*3 = %d", tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF));*/
7492             if(LUSTRE_BUFCOUNT>2 && 
7493                 (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF) > 0))
7494             { 
7495               magic=tvb_get_letohl(tvb, offset); /* TODO : replace this with a macro */
7496               switch(magic)
7497               {
7498                 case LOV_MAGIC_V1:
7499                   offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
7500                   break;
7501                 default:
7502                   offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, 
7503                       hf_lustre_extra_padding, LUSTRE_DLM_INTENT_REC_OFF);
7504                   break;
7505               };
7506             }
7507           }
7508       }
7509       break;
7510
7511     case LDLM_CONVERT:
7512       if(pb_type==PTL_RPC_MSG_REQUEST)
7513         /*[ldlm_request]*/
7514         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7515       if(pb_type==PTL_RPC_MSG_REPLY)
7516         /*[ldlm_reply]*/
7517         offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, NULL) ; 
7518       break;
7519
7520     case LDLM_CANCEL:
7521       if(pb_type==PTL_RPC_MSG_REQUEST)
7522         /*[ldlm_request]*/
7523         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7524       /*[nothing en reply]*/
7525       break;
7526
7527     case LDLM_BL_CALLBACK: /* TODO : check the corresponding code in lustre*/
7528       if(pb_type==PTL_RPC_MSG_REQUEST)
7529         /*[ldlm_request]*/
7530         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7531       break;
7532
7533     case LDLM_CP_CALLBACK:
7534       if(pb_type==PTL_RPC_MSG_REQUEST){
7535         /*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO : 
7536          * check that */
7537         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7538         if(LUSTRE_BUFCOUNT>=3) 
7539           offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
7540       }
7541       /*reply : [nothing] */
7542       break;
7543
7544     case LDLM_GL_CALLBACK:
7545       if(pb_type==PTL_RPC_MSG_REQUEST)
7546         /*[ldlm_request] */
7547         offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
7548       else 
7549         if(pb_type==PTL_RPC_MSG_REPLY)
7550           /*reply : [ost_lvb] <-- need to be check*/
7551           offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb); 
7552       break;
7553
7554     default :
7555       break;
7556   }
7557   return offset;
7558 }
7559
7560 static int
7561 lustre_mgs_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7562 {
7563   switch (opc){
7564     case MGS_CONNECT :
7565       if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
7566         offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
7567       if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
7568         offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
7569       break;
7570     case MGS_DISCONNECT :
7571       /*[nothing]*/
7572       break;
7573     case MGS_EXCEPTION :        /* node died, etc. */
7574       /*[nothing]*/
7575       break;
7576     case MGS_TARGET_REG:
7577       /*[mgs_target_info], mgs_handler.c mgs_handle_target_reg()  called whenever a target startup*/
7578       offset=lustre_dissect_struct_mgs_target_info(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info); 
7579       break;
7580     case MGS_TARGET_DEL:
7581       /*[nothing]*/
7582       break;
7583     case MGS_SET_INFO:
7584       /*[mgs_send_param], mgs_set_info_rpc()*/
7585       offset=lustre_dissect_struct_mgs_send_param(tvb,offset,pinfo,tree,hf_lustre_mgs_send_param);
7586       break;
7587     default:
7588       break;
7589   };
7590   return offset;
7591 }
7592
7593 static int 
7594 lustre_odb_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7595 {
7596   switch(opc){
7597     case OBD_PING : 
7598       /*[nothing]*/
7599       break;
7600     case OBD_LOG_CANCEL:
7601       /*[nothing]*/
7602       break;
7603     case OBD_QC_CALLBACK:
7604       if(pb_type==PTL_RPC_MSG_REQUEST)
7605         offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl); 
7606       /*if (request)  : [nothing]*/
7607       break;
7608     default:
7609       break;
7610   };
7611   return offset;
7612 }
7613
7614 static int
7615 lustre_llog_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7616 {
7617   switch(opc){
7618     case LLOG_ORIGIN_HANDLE_CREATE     : /* in handler.c */
7619       /*[llogd_body]  (reply and request)*/
7620       offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
7621       if(pb_type==PTL_RPC_MSG_REQUEST) /*[filename] */
7622         if (LUSTRE_BUFCOUNT>2)
7623           offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_name, 
7624               LUSTRE_REQ_REC_OFF+1);
7625       break;
7626     case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */
7627       /* [llogd_body][???]
7628        * the size of second buf is LLOG_CHKUNK_SIZE, so it's maybee only bulk data */
7629       offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
7630       offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
7631           LUSTRE_REQ_REC_OFF + 1 );
7632       break;
7633     case LLOG_ORIGIN_HANDLE_READ_HEADER:/* in handler.c */
7634       if(pb_type==PTL_RPC_MSG_REQUEST){
7635         /* [llogd_body][llog_log_hdr] */
7636         offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
7637         if(LUSTRE_BUFCOUNT>2)
7638           offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, 
7639               hf_lustre_llogd_log_hdr);
7640       }
7641       if(pb_type==PTL_RPC_MSG_REPLY) /* [llog_log_hdr] */
7642         offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, 
7643             hf_lustre_llogd_log_hdr);
7644       break;
7645     case LLOG_ORIGIN_HANDLE_WRITE_REC  : /* I think this is obsolete */
7646       /*[nothing]*/
7647       break;
7648     case LLOG_ORIGIN_HANDLE_CLOSE      :/* handler.c */
7649       /*[nothing]*/
7650       break;
7651     case LLOG_ORIGIN_CONNECT           : /* ost_handler.c */
7652       /*[nothing]*/
7653     case LLOG_CATINFO                  : /*in handler.c */
7654       if(pb_type==PTL_RPC_MSG_REQUEST){
7655         /* [keyword][if keyword=config  [char*] else [nothing]] */
7656         offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword, 
7657             LUSTRE_REQ_REC_OFF);
7658         if(strcmp(tvb_get_string(tvb, LUSTRE_REQ_REC_OFF, tvb_get_letohl(tvb, 
7659                   LUSTRE_BUFLEN_OFF+4*LUSTRE_REQ_REC_OFF)), "config")==0) /*  if(keyword == 
7660                                                                               "config") */
7661           offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_client, 
7662               LUSTRE_REQ_REC_OFF+1);
7663       }
7664       if(pb_type==PTL_RPC_MSG_REPLY)
7665         /*[buf] sizeof =  llog_chunk_size*/
7666         offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
7667             LUSTRE_REQ_REC_OFF + 1 );
7668       /* TODO TODO : check if it's note a catid */
7669       break;
7670     case LLOG_ORIGIN_HANDLE_PREV_BLOCK : /* in handler.c */
7671       /* [llogd_body] in both case */
7672       offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
7673       if(pb_type==PTL_RPC_MSG_REPLY)
7674         /*[buf] size of llog_chunk_size*/
7675         offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
7676             LUSTRE_REQ_REC_OFF + 1 );
7677       break;
7678     case LLOG_ORIGIN_HANDLE_DESTROY    : /* in handler.c */
7679       /*[llogd_body] in both case*/
7680       offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
7681       break;
7682     default:
7683       break;
7684   };
7685
7686   return offset;
7687 }
7688
7689 /* process lustre opcode : 
7690    check if opcode is in range_opcode, and call the corresponding opcode process function */
7691 static int 
7692 lustre_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
7693 {
7694   if (opc <= OST_LAST_OPC) /* OST opcodes */
7695     offset=lustre_ost_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7696
7697   if ( (opc >= MDS_FIRST_OPC) &&  (opc < MDS_LAST_OPC )) /* MDS opcodes */
7698     offset=lustre_mds_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7699
7700   if ( (opc >= LDLM_FIRST_OPC) && (opc < LDLM_LAST_OPC) ) /*LDLM Opcodes*/
7701     offset=lustre_ldlm_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7702
7703   if( (opc>= MGS_FIRST_OPC) && (opc <= MGS_LAST_OPC)) /* MGS Opcodes */
7704     offset=lustre_mgs_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7705
7706   if( (opc>= OBD_FIRST_OPC) && (opc<=OBD_LAST_OPC)) /* ODB Opcodes */
7707     offset=lustre_odb_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7708
7709   if( (opc>=LLOG_FIRST_OPC) && (opc<=LLOG_LAST_OPC)) /* LLOG Opcodes */
7710     offset=lustre_llog_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
7711
7712   return offset ;
7713 }
7714
7715 /* ----------------------------------------------- */
7716 /* add an extra padding to be aligned to 8bytes */
7717 static int 
7718 add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) 
7719 {
7720   guint32 padding_len;
7721
7722   padding_len = (8- offset%8)%8;   
7723   if(padding_len){
7724     proto_tree_add_item(tree, hf_lustre_extra_padding , tvb, offset, padding_len, TRUE);
7725     offset+=padding_len;
7726   }
7727   return offset;
7728 }
7729 /* ----------------------------------------------- */
7730
7731 static int 
7732 ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) 
7733 {
7734   /* all corresponding code is in mdc_locks.c in function mdc_enqueue() */
7735   /* if 0x0003 we have CREAT + OPEN
7736   */
7737   if (intent_opc & IT_OPEN) {
7738     /* mdc_intent_open_pack(), d'où [opcode][mdc_rec_create][name][eada] */
7739     offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
7740     offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
7741     offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata,
7742         LUSTRE_DLM_INTENT_REC_OFF+2); /* TODO : replace hf with eada hf */
7743
7744   }
7745   if (intent_opc & IT_UNLINK){
7746     /* mdc_intent_unlink_pack(), d'où [opcode][mds_rec_unlink][name] */
7747     offset=lustre_dissect_struct_mds_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mds_rec_unlink); 
7748     offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
7749   }
7750   if (intent_opc & IT_GETATTR){
7751     /* mdc_intent_lookup_pack, d'où [mds_body][name] */ 
7752     offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7753     offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
7754   }
7755
7756   if (intent_opc & IT_LOOKUP){
7757     /* mdc_intent_lookup_pack, d'où [mds_body][name] */ 
7758     offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
7759     offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
7760   }
7761   return offset;
7762 }
7763
7764
7765
7766 /* ----------------------------------------------- */
7767 /* function to test if the packet is entirely dissected  add BUG in PROTOCOL COL when it's not*/
7768 static void
7769 sanity_check(tvbuff_t *tvb, packet_info *pinfo, guint32 val_offset _U_)  
7770 {
7771   guint32 magic_number ;
7772   guint32 somme_buflen = 0 ;
7773   guint32 i ;
7774
7775   magic_number = tvb_get_letohl(tvb, 8);
7776
7777
7778   for (i=0;i<LUSTRE_BUFCOUNT;i++) 
7779     somme_buflen += tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF +
7780         4 * i ) + (8- tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+4 * i)%8)%8; /* we add the
7781                                                                             corresponding
7782                                                                             extra padding,
7783                                                                             because extra
7784                                                                             padding isn't
7785                                                                             count in buflen
7786                                                                             */   
7787
7788   if(val_offset!=somme_buflen){
7789     /*g_print("somme_buflen=%d, val_offset = %d \n",somme_buflen,val_offset);*/
7790     if (check_col(pinfo->cinfo, COL_INFO)) {
7791       col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
7792     }
7793   }
7794
7795 }
7796
7797
7798 /* IDL: struct lustre_msg_v1 { */
7799 /* IDL:   struct lustre_handle { */
7800 /* IDL: } lm_handle; */
7801 /* IDL:   uint32 lm_magic; */
7802 /* IDL:   uint32 lm_type; */
7803 /* IDL:   uint32 lm_version; */
7804 /* IDL:   uint32 lm_opc; */
7805 /* IDL:   uint64 lm_last_xid; */
7806 /* IDL:   uint64 lm_last_committed; */
7807 /* IDL:   uint64 lm_transno; */
7808 /* IDL:   uint32 lm_status; */
7809 /* IDL:   uint32 lm_flags; */
7810 /* IDL:   uint32 lm_conn_cnt; */
7811 /* IDL:   uint32 lm_bufcount; */
7812 /* IDL:   uint32 lm_buflens[0]; */
7813 /* IDL: } */
7814
7815
7816 static int
7817 lustre_dissect_element_msg_v1_lm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7818 {
7819   /*TODO : replace with a v1 handle*/
7820   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_lustre_msg_v1_lm_handle);
7821   return offset;
7822 }
7823
7824 static int
7825 lustre_dissect_element_msg_v1_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7826 {
7827   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_magic);
7828
7829   return offset;
7830 }
7831
7832 static int
7833 lustre_dissect_element_msg_v1_lm_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7834 {
7835   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_type);
7836
7837   return offset;
7838 }
7839
7840 static int
7841 lustre_dissect_element_msg_v1_lm_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7842 {
7843   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_version);
7844
7845   return offset;
7846 }
7847
7848 static int
7849 lustre_dissect_element_msg_v1_lm_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7850 {
7851   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_opc);
7852
7853   return offset;
7854 }
7855
7856 static int
7857 lustre_dissect_element_msg_v1_lm_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7858 {
7859   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_xid);
7860
7861   return offset;
7862 }
7863
7864 static int
7865 lustre_dissect_element_msg_v1_lm_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7866 {
7867   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_committed);
7868
7869   return offset;
7870 }
7871
7872 static int
7873 lustre_dissect_element_msg_v1_lm_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7874 {
7875   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_transno);
7876
7877   return offset;
7878 }
7879
7880 static int
7881 lustre_dissect_element_msg_v1_lm_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7882 {
7883   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_status);
7884
7885   return offset;
7886 }
7887
7888 static int
7889 lustre_dissect_element_msg_v1_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7890 {
7891   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_flags);
7892
7893   return offset;
7894 }
7895
7896 static int
7897 lustre_dissect_element_msg_v1_lm_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7898 {
7899   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_conn_cnt);
7900
7901   return offset;
7902 }
7903
7904 static int
7905 lustre_dissect_element_msg_v1_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7906 {
7907   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_bufcount);
7908
7909   return offset;
7910 }
7911
7912 static int
7913 lustre_dissect_element_msg_v1_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7914 {
7915   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_buflens);
7916
7917   return offset;
7918 }
7919
7920 static int
7921 lustre_dissect_element_msg_v1_lm_buflens(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
7922 {
7923   guint32 bufcount ;
7924   gboolean extra_padding ;
7925   guint i;
7926
7927   bufcount=tvb_get_letohl(tvb, offset-4); /* TODO : replace with a macro */
7928
7929   if (bufcount & 1) /* we add an extra padding if bufcount is odd */
7930     extra_padding = 1 ;
7931   else 
7932     extra_padding = 0 ;
7933
7934   for (i=0;i<bufcount;i++) {
7935     offset=lustre_dissect_element_msg_v1_lm_buflens_(tvb, offset, pinfo, tree);
7936   }
7937   if (extra_padding)
7938   {
7939     offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
7940   }
7941
7942   return offset;
7943 }
7944
7945
7946
7947 int
7948 lustre_dissect_struct_msg_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
7949 {
7950   proto_item *item = NULL;
7951   proto_tree *tree = NULL;
7952   int old_offset;
7953   guint32 opc ; /* opcode */
7954   guint32 pb_type; /* type : {request, reply, error} */
7955
7956
7957
7958   old_offset=offset;
7959   tree=parent_tree;
7960   // if (parent_tree) {
7961   //     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
7962   //     tree = proto_item_add_subtree(item, ett_lustre_lustre_msg_v1);
7963   // }
7964
7965   offset=lustre_dissect_element_msg_v1_lm_handle(tvb, offset, pinfo, tree);
7966
7967   offset=lustre_dissect_element_msg_v1_lm_magic(tvb, offset, pinfo, tree);
7968
7969   pb_type = tvb_get_letohl(tvb, offset);
7970   offset=lustre_dissect_element_msg_v1_lm_type(tvb, offset, pinfo, tree);
7971
7972   offset=lustre_dissect_element_msg_v1_lm_version(tvb, offset, pinfo, tree);
7973   opc = tvb_get_letohl(tvb, offset);
7974   offset=lustre_dissect_element_msg_v1_lm_opc(tvb, offset, pinfo, tree);
7975
7976   offset=lustre_dissect_element_msg_v1_lm_last_xid(tvb, offset, pinfo, tree);
7977
7978   offset=lustre_dissect_element_msg_v1_lm_last_committed(tvb, offset, pinfo, tree);
7979
7980   offset=lustre_dissect_element_msg_v1_lm_transno(tvb, offset, pinfo, tree);
7981
7982   offset=lustre_dissect_element_msg_v1_lm_status(tvb, offset, pinfo, tree);
7983
7984   offset=lustre_dissect_element_msg_v1_lm_flags(tvb, offset, pinfo, tree);
7985
7986   offset=lustre_dissect_element_msg_v1_lm_conn_cnt(tvb, offset, pinfo, tree);
7987
7988   offset=lustre_dissect_element_msg_v1_lm_bufcount(tvb, offset, pinfo, tree);
7989
7990   offset=lustre_dissect_element_msg_v1_lm_buflens(tvb, offset, pinfo, tree);
7991
7992
7993   proto_item_set_len(item, offset-old_offset);
7994
7995   /* display some nice infos */
7996   display_info_str(parent_tree, pinfo->cinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown"));
7997   display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown"));
7998
7999   offset=lustre_opcode_process(tvb, offset, pinfo, tree, opc, pb_type);
8000
8001   return offset;
8002 }
8003
8004 /* IDL: struct ptlrpc_body { */
8005 /* IDL:   struct lustre_handle { */
8006 /* IDL: } pb_handle; */
8007 /* IDL:   uint32 pb_type; */
8008 /* IDL:   uint32 pb_version; */
8009 /* IDL:   uint32 pb_opc; */
8010 /* IDL:   uint32 pb_status; */
8011 /* IDL:   uint64 pb_last_xid; */
8012 /* IDL:   uint64 pb_last_seen; */
8013 /* IDL:   uint64 pb_last_committed; */
8014 /* IDL:   uint64 pb_transno; */
8015 /* IDL:   uint32 pb_flags; */
8016 /* IDL:   uint32 pb_op_flags; */
8017 /* IDL:   uint32 pb_conn_cnt; */
8018 /* IDL:   uint32 pb_timeout; */
8019 /* IDL:   uint32 pb_service_time; */
8020 /* IDL:   uint32 pb_limit; */
8021 /* IDL:   uint64 pb_slv; */
8022 /* IDL: } */
8023
8024 static int
8025 lustre_dissect_element_ptlrpc_body_pb_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8026 {
8027   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ptlrpc_body_pb_handle);
8028
8029   return offset;
8030 }
8031
8032 static int
8033 lustre_dissect_element_ptlrpc_body_pb_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8034 {
8035   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_type);
8036
8037   return offset;
8038 }
8039
8040 static int
8041 lustre_dissect_element_ptlrpc_body_pb_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8042 {
8043   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_version);
8044
8045   return offset;
8046 }
8047
8048 static int
8049 lustre_dissect_element_ptlrpc_body_pb_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8050 {
8051   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_opc);
8052
8053   return offset;
8054 }
8055
8056 static int
8057 lustre_dissect_element_ptlrpc_body_pb_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8058 {
8059   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_status);
8060
8061   return offset;
8062 }
8063
8064 static int
8065 lustre_dissect_element_ptlrpc_body_pb_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8066 {
8067   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_xid);
8068
8069   return offset;
8070 }
8071
8072 static int
8073 lustre_dissect_element_ptlrpc_body_pb_last_seen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8074 {
8075   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_seen);
8076
8077   return offset;
8078 }
8079
8080 static int
8081 lustre_dissect_element_ptlrpc_body_pb_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8082 {
8083   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_committed);
8084
8085   return offset;
8086 }
8087
8088 static int
8089 lustre_dissect_element_ptlrpc_body_pb_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8090 {
8091   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_transno);
8092
8093   return offset;
8094 }
8095
8096 static int
8097 lustre_dissect_element_ptlrpc_body_pb_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8098 {
8099   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_flags);
8100
8101   return offset;
8102 }
8103
8104 static int
8105 lustre_dissect_element_ptlrpc_body_pb_op_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8106 {
8107   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_op_flags);
8108
8109   return offset;
8110 }
8111
8112 static int
8113 lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8114 {
8115   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_conn_cnt);
8116
8117   return offset;
8118 }
8119
8120 static int
8121 lustre_dissect_element_ptlrpc_body_pb_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8122 {
8123   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_timeout);
8124
8125   return offset;
8126 }
8127
8128 static int
8129 lustre_dissect_element_ptlrpc_body_pb_service_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8130 {
8131   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_service_time);
8132
8133   return offset;
8134 }
8135
8136 static int
8137 lustre_dissect_element_ptlrpc_body_pb_limit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8138 {
8139   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_limit);
8140
8141   return offset;
8142 }
8143
8144 static int
8145 lustre_dissect_element_ptlrpc_body_pb_slv(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8146 {
8147   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_slv);
8148
8149   return offset;
8150 }
8151
8152 static int
8153 lustre_dissect_struct_ptlrpc_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_len _U_ )
8154 {
8155   proto_item *item = NULL;
8156   proto_tree *tree = NULL;
8157   int old_offset;
8158
8159   guint32 opc, pb_type;
8160
8161
8162   old_offset=offset;
8163
8164
8165   if (parent_tree) {
8166     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
8167     tree = proto_item_add_subtree(item, ett_lustre_ptlrpc_body);
8168   }
8169
8170   offset=lustre_dissect_element_ptlrpc_body_pb_handle(tvb, offset, pinfo, tree);
8171
8172   pb_type = tvb_get_letohl(tvb, offset);
8173   //g_print("msg_v2_lm_type_offset = %d \n" , offset) ;
8174
8175   offset=lustre_dissect_element_ptlrpc_body_pb_type(tvb, offset, pinfo, tree);
8176
8177   offset=lustre_dissect_element_ptlrpc_body_pb_version(tvb, offset, pinfo, tree);
8178
8179   // g_print("msg_v2_opcode_offset %d  \n", offset);
8180   opc = tvb_get_letohl(tvb, offset);
8181   offset=lustre_dissect_element_ptlrpc_body_pb_opc(tvb, offset, pinfo, tree);
8182
8183   offset=lustre_dissect_element_ptlrpc_body_pb_status(tvb, offset, pinfo, tree);
8184
8185   offset=lustre_dissect_element_ptlrpc_body_pb_last_xid(tvb, offset, pinfo, tree);
8186
8187   offset=lustre_dissect_element_ptlrpc_body_pb_last_seen(tvb, offset, pinfo, tree);
8188
8189   offset=lustre_dissect_element_ptlrpc_body_pb_last_committed(tvb, offset, pinfo, tree);
8190
8191   offset=lustre_dissect_element_ptlrpc_body_pb_transno(tvb, offset, pinfo, tree);
8192
8193   offset=lustre_dissect_element_ptlrpc_body_pb_flags(tvb, offset, pinfo, tree);
8194
8195   offset=lustre_dissect_element_ptlrpc_body_pb_op_flags(tvb, offset, pinfo, tree);
8196
8197   offset=lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvb, offset, pinfo, tree);
8198
8199   offset=lustre_dissect_element_ptlrpc_body_pb_timeout(tvb, offset, pinfo, tree);
8200
8201   offset=lustre_dissect_element_ptlrpc_body_pb_service_time(tvb, offset, pinfo, tree);
8202
8203   offset=lustre_dissect_element_ptlrpc_body_pb_limit(tvb, offset, pinfo, tree);
8204
8205   offset=lustre_dissect_element_ptlrpc_body_pb_slv(tvb, offset, pinfo, tree);
8206
8207
8208
8209   proto_item_set_len(item, offset-old_offset);
8210
8211   /* display some nice infos */
8212   display_info_str(parent_tree, pinfo->cinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown"));
8213   display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown"));
8214
8215   /* on utilise parent_tree pour bien distinguer les différents buffers (relatifs Ã  bufcount + buflen), il s'agit d'un choix de présentation */
8216   offset=lustre_opcode_process(tvb, offset, pinfo, parent_tree, opc, pb_type);
8217
8218   sanity_check(tvb,pinfo,offset-old_offset);
8219   return offset;
8220 }
8221
8222
8223
8224 /* IDL: struct lustre_msg_v2 { */
8225 /* IDL:   uint32 lm_bufcount; */
8226 /* IDL:   uint32 lm_secflvr; */
8227 /* IDL:   uint32 lm_magic; */
8228 /* IDL:   uint32 lm_repsize; */
8229 /* IDL:   uint32 lm_cksum; */
8230 /* IDL:   uint32 lm_flags; */
8231 /* IDL:   uint32 lm_padding_2; */
8232 /* IDL:   uint32 lm_padding_3; */
8233 /* IDL:   uint32 lm_buflens[0]; */
8234 /* IDL: } */
8235
8236 static int
8237 lustre_dissect_element_msg_v2_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8238 {
8239   proto_tree_add_item(tree, hf_lustre_lustre_msg_v2_lm_bufcount, tvb, offset, 4, TRUE);
8240   offset += 4 ; 
8241   return offset;
8242 }
8243
8244 static int
8245 lustre_dissect_element_msg_v2_lm_secflvr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8246 {
8247   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_secflvr);
8248
8249   return offset;
8250 }
8251
8252 static int
8253 lustre_dissect_element_msg_v2_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8254 {
8255   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_magic);
8256
8257   return offset;
8258 }
8259
8260 static int
8261 lustre_dissect_element_msg_v2_lm_repsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8262 {
8263   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_repsize);
8264
8265   return offset;
8266 }
8267
8268 static int
8269 lustre_dissect_element_msg_v2_lm_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8270 {
8271   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_cksum);
8272
8273   return offset;
8274 }
8275
8276 static int
8277 lustre_dissect_element_msg_v2_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8278 {
8279   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_flags);
8280
8281   return offset;
8282 }
8283
8284 static int
8285 lustre_dissect_element_msg_v2_lm_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8286 {
8287   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_2);
8288
8289   return offset;
8290 }
8291
8292 static int
8293 lustre_dissect_element_msg_v2_lm_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8294 {
8295   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_3);
8296
8297   return offset;
8298 }
8299
8300
8301
8302 static int
8303 lustre_dissect_element_msg_v2_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
8304 {
8305   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_buflens);
8306
8307   return offset;
8308 }
8309
8310 int
8311 lustre_dissect_struct_msg_v2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
8312 {
8313   proto_item *item = NULL;
8314   proto_tree *tree = NULL;
8315   guint32 bufcount ;
8316   int old_offset;
8317   guint32 i ;
8318   guint32 buf_len_offset;
8319   guint32 current_buf_len ;
8320   gboolean extra_padding ;
8321
8322
8323   old_offset=offset;
8324   /* to get a light display */
8325   tree=parent_tree;
8326   //  if (parent_tree) {
8327   //      item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
8328   //      tree = proto_item_add_subtree(item, ett_lustre_lustre_msg_v2);
8329   //  }
8330
8331   bufcount = tvb_get_letohl(tvb,offset);
8332   offset=lustre_dissect_element_msg_v2_lm_bufcount(tvb, offset, pinfo, tree);
8333
8334   offset=lustre_dissect_element_msg_v2_lm_secflvr(tvb, offset, pinfo, tree);
8335
8336   offset=lustre_dissect_element_msg_v2_lm_magic(tvb, offset, pinfo, tree);
8337
8338   offset=lustre_dissect_element_msg_v2_lm_repsize(tvb, offset, pinfo, tree);
8339
8340   offset=lustre_dissect_element_msg_v2_lm_cksum(tvb, offset, pinfo, tree);
8341
8342   offset=lustre_dissect_element_msg_v2_lm_flags(tvb, offset, pinfo, tree);
8343
8344   offset=lustre_dissect_element_msg_v2_lm_padding_2(tvb, offset, pinfo, tree);
8345
8346   offset=lustre_dissect_element_msg_v2_lm_padding_3(tvb, offset, pinfo, tree);
8347
8348
8349
8350   if (bufcount & 1) /* we add an extra padding if bufcount is odd */
8351     extra_padding = 1 ;
8352   else 
8353     extra_padding = 0 ;
8354
8355   buf_len_offset=offset ;
8356   for (i=0;i<bufcount;i++) {
8357     offset=lustre_dissect_element_msg_v2_lm_buflens_(tvb, offset, pinfo, tree);
8358   }
8359
8360   if (extra_padding)
8361   {
8362     offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
8363   }
8364
8365
8366
8367   current_buf_len = tvb_get_letohl(tvb, buf_len_offset);
8368   offset=lustre_dissect_struct_ptlrpc_body(tvb,offset, pinfo, tree, hf_lustre_ptlrpc_body_pb, current_buf_len); 
8369
8370   proto_item_set_len(item, offset-old_offset);
8371
8372   return offset;
8373 }
8374
8375
8376
8377
8378 static void 
8379 dissect_lustre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)  
8380 {
8381   if (check_col(pinfo->cinfo, COL_PROTOCOL)) 
8382     col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre");
8383
8384   /*light display*/
8385   if (check_col(pinfo->cinfo, COL_INFO))  
8386     col_set_str(pinfo->cinfo, COL_INFO, "");
8387   /*    guint32 magic_number ; */
8388   /*    magic_number = tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET);   */
8389   /*    switch (magic_number)*/
8390   /*    {*/
8391   /*        case LUSTRE_MSG_MAGIC_V1:*/
8392   /*            col_append_fstr(pinfo->cinfo, COL_INFO, " V1 ");*/
8393   /*            break;*/
8394   /*        case LUSTRE_MSG_MAGIC_V2:*/
8395   /*            col_append_fstr(pinfo->cinfo, COL_INFO, " V2 ");*/
8396   /*            break;*/
8397   /*        default:*/
8398   /*            break;*/
8399   /*    }*/
8400
8401   if (tree) {
8402
8403     guint32 magic_number ; 
8404     guint32 offset;
8405     proto_item *ti  = NULL ; 
8406     proto_tree * lustre_tree = NULL ; 
8407
8408
8409     ti = proto_tree_add_item(tree,proto_lustre,tvb,0,-1,FALSE); 
8410     lustre_tree = proto_item_add_subtree(ti,ett_lustre); 
8411
8412
8413     magic_number = tvb_get_letohl(tvb, 8);
8414
8415
8416     switch (magic_number){
8417       case LUSTRE_MSG_MAGIC_V1:
8418         /* put some nice info*/ 
8419         proto_item_append_text(lustre_tree, " V1 ");
8420         offset=lustre_dissect_struct_msg_v1(tvb, 0, pinfo, lustre_tree, proto_lustre ) ; 
8421         break;
8422       case LUSTRE_MSG_MAGIC_V2:
8423         /* put some nice info*/ 
8424         proto_item_append_text(lustre_tree, " V2 ");
8425         offset=lustre_dissect_struct_msg_v2(tvb, 0, pinfo, lustre_tree,  proto_lustre ) ; 
8426         break;
8427       default:
8428         break;
8429     }
8430
8431   }
8432 }
8433
8434 void proto_register_dcerpc_lustre(void)
8435 {
8436   static hf_register_info hf[] = {
8437     { &hf_lustre_mds_body_ctime, 
8438       { "Ctime", "lustre.mds_body.ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8439     { &hf_lustre_mds_body_fid1, 
8440       { "Fid1", "lustre.mds_body.fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8441     { &hf_lustre_mds_body_nlink, 
8442       { "Nlink", "lustre.mds_body.nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8443     { &hf_lustre_mds_body_flags, 
8444       { "Flags", "lustre.mds_body.flags", FT_UINT32, BASE_HEX, VALS(lustre_mds_flags_vals) , 0, "", HFILL }},
8445     { &hf_lustre_mds_body_fsgid, 
8446       { "Fsgid", "lustre.mds_body.fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8447     { &hf_lustre_mds_body_mtime, 
8448       { "Mtime", "lustre.mds_body.mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8449     { &hf_lustre_mds_body_uid, 
8450       { "Uid", "lustre.mds_body.uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8451     { &hf_lustre_mds_body_mode, 
8452       { "Mode", "lustre.mds_body.mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8453     { &hf_lustre_mds_body_max_cookiesize, 
8454       { "Max Cookiesize", "lustre.mds_body.max_cookiesize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8455     { &hf_lustre_mds_body_io_epoch, 
8456       { "Io Epoch", "lustre.mds_body.io_epoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8457     { &hf_lustre_mds_body_ino, 
8458       { "Ino", "lustre.mds_body.ino", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8459     { &hf_lustre_mds_body_fid2, 
8460       { "Fid2", "lustre.mds_body.fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8461     { &hf_lustre_mds_body_padding_4, 
8462       { "Padding 4", "lustre.mds_body.padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8463     { &hf_lustre_mds_body_aclsize, 
8464       { "Aclsize", "lustre.mds_body.aclsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8465     { &hf_lustre_mds_body_valid, 
8466       { "Valid", "lustre.mds_body.valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8467     { &hf_lustre_mds_body_generation, 
8468       { "Generation", "lustre.mds_body.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8469     { &hf_lustre_mds_body_atime, 
8470       { "Atime", "lustre.mds_body.atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8471     { &hf_lustre_mds_body_handle, 
8472       { "Handle", "lustre.mds_body.handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8473     { &hf_lustre_mds_body_max_mdsize, 
8474       { "Max Mdsize", "lustre.mds_body.max_mdsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8475     { &hf_lustre_mds_body_rdev, 
8476       { "Rdev", "lustre.mds_body.rdev", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8477     { &hf_lustre_mds_body_blocks, 
8478       { "Blocks", "lustre.mds_body.blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8479     { &hf_lustre_mds_body_fsuid, 
8480       { "Fsuid", "lustre.mds_body.fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8481     { &hf_lustre_mds_body_gid, 
8482       { "Gid", "lustre.mds_body.gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8483     { &hf_lustre_lustre_handle_cookie, 
8484       { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8485     { &hf_lustre_mds_body_suppgid, 
8486       { "Suppgid", "lustre.mds_body.suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8487     { &hf_lustre_mds_body_size, 
8488       { "Size", "lustre.mds_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8489     { &hf_lustre_mds_body_eadatasize, 
8490       { "Eadatasize", "lustre.mds_body.eadatasize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8491     { &hf_lustre_mds_body_capability, 
8492       { "Capability", "lustre.mds_body.capability", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8493     { &hf_lustre_ptlrpc_body_pb_last_committed, 
8494       { "Pb Last Committed", "lustre.ptlrpc_body.pb_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8495     { &hf_lustre_ptlrpc_body_pb_version, 
8496       { "Pb Version", "lustre.ptlrpc_body.pb_version", FT_UINT32, BASE_DEC, NULL, ~LUSTRE_VERSION_MASK, "", HFILL }},
8497     { &hf_lustre_lustre_msg_v1_lm_bufcount, 
8498       { "Lm Bufcount", "lustre.lustre_msg_v1.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8499     { &hf_lustre_obd_ioobj_ioo_id, 
8500       { "Ioo Id", "lustre.obd_ioobj.ioo_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8501     { &hf_lustre_ptlrpc_body_pb_slv, 
8502       { "Pb Slv", "lustre.ptlrpc_body.pb_slv", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8503     { &hf_lustre_lustre_msg_v1_lm_handle, 
8504       { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8505     { &hf_lustre_ost_lvb_lvb_atime, 
8506       { "Lvb Atime", "lustre.ost_lvb.lvb_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8507     { &hf_lustre_ptlrpc_body_pb_timeout, 
8508       { "Pb Timeout", "lustre.ptlrpc_body.pb_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8509     { &hf_lustre_obd_statfs_os_bavail, 
8510       { "Os Bavail", "lustre.obd_statfs.os_bavail", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8511     { &hf_lustre_obd_statfs_os_bsize, 
8512       { "Os Bsize", "lustre.obd_statfs.os_bsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8513     { &hf_lustre_lustre_msg_v2_lm_repsize, 
8514       { "Lm Repsize", "lustre.lustre_msg_v2.lm_repsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8515     { &hf_lustre_lov_mds_md_v1_lmm_stripe_size, 
8516       { "Lmm Stripe Size", "lustre.lov_mds_md_v1.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8517     { &hf_lustre_lustre_msg_v1_lm_last_xid, 
8518       { "Lm Last Xid", "lustre.lustre_msg_v1.lm_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8519     { &hf_lustre_ll_fid_f_type, 
8520       { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8521     { &hf_lustre_lustre_msg_v2_lm_cksum, 
8522       { "Lm Cksum", "lustre.lustre_msg_v2.lm_cksum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8523     { &hf_lustre_lustre_msg_v2_lm_buflens, 
8524       { "Lm Buflens", "lustre.lustre_msg_v2.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8525     { &hf_lustre_lustre_msg_v1_lm_status, 
8526       { "Lm Status", "lustre.lustre_msg_v1.lm_status", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8527     { &hf_lustre_lustre_msg_v1_lm_type, 
8528       { "Lm Type", "lustre.lustre_msg_v1.lm_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }},
8529     { &hf_lustre_niobuf_remote_len, 
8530       { "Len", "lustre.niobuf_remote.len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8531     { &hf_lustre_lov_mds_md_v1_lmm_magic, 
8532       { "Lmm Magic", "lustre.lov_mds_md_v1.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }},
8533     { &hf_lustre_ptlrpc_body_pb_op_flags, 
8534       { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8535     { &hf_lustre_ost_lvb_lvb_ctime, 
8536       { "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8537     { &hf_lustre_ptlrpc_body_pb_type, 
8538       { "Pb Type", "lustre.ptlrpc_body.pb_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }},
8539     { &hf_lustre_obd_connect_data_ocd_nllg, 
8540       { "Ocd Nllg", "lustre.obd_connect_data.ocd_nllg", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8541     { &hf_lustre_obd_connect_data_ocd_nllu, 
8542       { "Ocd Nllu", "lustre.obd_connect_data.ocd_nllu", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8543     { &hf_lustre_ll_fid_generation, 
8544       { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8545     { &hf_lustre_ost_lvb_lvb_mtime, 
8546       { "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, "", HFILL }},
8547     { &hf_lustre_obd_connect_data_ocd_ibits_known, 
8548       { "Ocd Ibits Known", "lustre.obd_connect_data.ocd_ibits_known", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8549     { &hf_lustre_lustre_msg_v2_lm_padding_3, 
8550       { "Lm Padding 3", "lustre.lustre_msg_v2.lm_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8551     { &hf_lustre_ptlrpc_body_pb_flags, 
8552       { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8553     { &hf_lustre_obd_statfs_os_spare4, 
8554       { "Os Spare4", "lustre.obd_statfs.os_spare4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8555     { &hf_lustre_obd_connect_data_ocd_group, 
8556       { "Ocd Group", "lustre.obd_connect_data.ocd_group", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8557     { &hf_lustre_lov_ost_data_v1_l_object_gr, 
8558       { "L Object Gr", "lustre.lov_ost_data_v1.l_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8559     { &hf_lustre_lov_mds_md_v1_lmm_object_gr, 
8560       { "Lmm Object Gr", "lustre.lov_mds_md_v1.lmm_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8561     { &hf_lustre_obd_connect_data_ocd_brw_size, 
8562       { "Ocd Brw Size", "lustre.obd_connect_data.ocd_brw_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8563     { &hf_lustre_ptlrpc_body_pb_limit, 
8564       { "Pb Limit", "lustre.ptlrpc_body.pb_limit", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8565     { &hf_lustre_obd_statfs_os_maxbytes, 
8566       { "Os Maxbytes", "lustre.obd_statfs.os_maxbytes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8567     { &hf_lustre_obd_statfs_os_spare5, 
8568       { "Os Spare5", "lustre.obd_statfs.os_spare5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8569     { &hf_lustre_lustre_msg_v2_lm_flags, 
8570       { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8571     { &hf_lustre_obd_statfs_os_ffree, 
8572       { "Os Ffree", "lustre.obd_statfs.os_ffree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8573     { &hf_lustre_obd_statfs_os_files, 
8574       { "Os Files", "lustre.obd_statfs.os_files", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8575     { &hf_lustre_lov_mds_md_v1_lmm_stripe_count, 
8576       { "Lmm Stripe Count", "lustre.lov_mds_md_v1.lmm_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8577     { &hf_lustre_lustre_msg_v1_lm_flags, 
8578       { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8579     { &hf_lustre_lustre_msg_v1_lm_last_committed, 
8580       { "Lm Last Committed", "lustre.lustre_msg_v1.lm_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8581     { &hf_lustre_obd_statfs_os_spare9, 
8582       { "Os Spare9", "lustre.obd_statfs.os_spare9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8583     { &hf_lustre_obd_connect_data_ocd_index, 
8584       { "Ocd Index", "lustre.obd_connect_data.ocd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8585     { &hf_lustre_lustre_msg_v1_lm_buflens, 
8586       { "Lm Buflens", "lustre.lustre_msg_v1.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8587     { &hf_lustre_obd_statfs_os_spare1, 
8588       { "Os Spare1", "lustre.obd_statfs.os_spare1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8589     { &hf_lustre_obd_statfs_os_spare8, 
8590       { "Os Spare8", "lustre.obd_statfs.os_spare8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8591     { &hf_lustre_lustre_msg_v1_lm_conn_cnt, 
8592       { "Lm Conn Cnt", "lustre.lustre_msg_v1.lm_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8593     { &hf_lustre_ptlrpc_body_pb_transno, 
8594       { "Pb Transno", "lustre.ptlrpc_body.pb_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8595     { &hf_lustre_ptlrpc_body_pb_service_time, 
8596       { "Pb Service Time", "lustre.ptlrpc_body.pb_service_time",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8597     { &hf_lustre_ptlrpc_body_pb_conn_cnt, 
8598       { "Pb Conn Cnt", "lustre.ptlrpc_body.pb_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8599     { &hf_lustre_ptlrpc_body_pb_opc, 
8600       { "Pb Opc", "lustre.ptlrpc_body.pb_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
8601     { &hf_lustre_obd_connect_data_ocd_connect_flags, 
8602       { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8603     { &hf_lustre_lov_ost_data_v1_l_object_id, 
8604       { "L Object Id", "lustre.lov_ost_data_v1.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8605     { &hf_lustre_lov_ost_data_v1_l_ost_gen, 
8606       { "L Ost Gen", "lustre.lov_ost_data_v1.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8607     { &hf_lustre_obd_statfs_os_bfree, 
8608       { "Os Bfree", "lustre.obd_statfs.os_bfree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8609     { &hf_lustre_obd_connect_data_ocd_version, 
8610       { "Ocd Version", "lustre.obd_connect_data.ocd_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8611     { &hf_lustre_lov_mds_md_v1_lmm_objects, 
8612       { "Lmm Objects", "lustre.lov_mds_md_v1.lmm_objects", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8613     { &hf_lustre_mds_status_req_flags, 
8614       { "Flags", "lustre.mds_status_req.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8615     { &hf_lustre_obd_statfs_os_namelen, 
8616       { "Os Namelen", "lustre.obd_statfs.os_namelen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8617     { &hf_lustre_obd_statfs_os_blocks, 
8618       { "Os Blocks", "lustre.obd_statfs.os_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8619     { &hf_lustre_lustre_msg_v2_lm_secflvr, 
8620       { "Lm Secflvr", "lustre.lustre_msg_v2.lm_secflvr", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8621     { &hf_lustre_lustre_msg_v1_lm_transno, 
8622       { "Lm Transno", "lustre.lustre_msg_v1.lm_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8623     { &hf_lustre_lov_mds_md_v1_lmm_pattern, 
8624       { "Lmm Pattern", "lustre.lov_mds_md_v1.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8625     { &hf_lustre_lustre_msg_v1_lm_opc, 
8626       { "Lm Opc", "lustre.lustre_msg_v1.lm_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
8627     { &hf_lustre_obd_connect_data_ocd_grant, 
8628       { "Ocd Grant", "lustre.obd_connect_data.ocd_grant", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8629     { &hf_lustre_obd_ioobj_ioo_bufcnt, 
8630       { "Ioo Bufcnt", "lustre.obd_ioobj.ioo_bufcnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8631     { &hf_lustre_lustre_msg_v1_lm_version, 
8632       { "Lm Version", "lustre.lustre_msg_v1.lm_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8633     { &hf_lustre_obd_statfs_os_spare7, 
8634       { "Os Spare7", "lustre.obd_statfs.os_spare7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8635     { &hf_lustre_obd_statfs_os_fsid, 
8636       { "Os Fsid", "lustre.obd_statfs.os_fsid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
8637     { &hf_lustre_obd_connect_data_ocd_cksum_types, 
8638       { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8639     { &hf_lustre_ost_lvb_lvb_size, 
8640       { "Lvb Size", "lustre.ost_lvb.lvb_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8641     { &hf_lustre_obd_statfs_os_type, 
8642       { "Os Type", "lustre.obd_statfs.os_type", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8643     { &hf_lustre_obd_statfs_os_spare6, 
8644       { "Os Spare6", "lustre.obd_statfs.os_spare6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8645     { &hf_lustre_obd_statfs_os_state, 
8646       { "Os State", "lustre.obd_statfs.os_state", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8647     { &hf_lustre_obd_statfs_os_spare3, 
8648       { "Os Spare3", "lustre.obd_statfs.os_spare3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8649     { &hf_lustre_lustre_msg_v2_lm_magic, 
8650       { "Lm Magic", "lustre.lustre_msg_v2.lm_magic", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, 
8651     { &hf_lustre_lov_mds_md_v1_lmm_object_id, 
8652       { "Lmm Object Id", "lustre.lov_mds_md_v1.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8653     { &hf_lustre_ptlrpc_body_pb_last_seen, 
8654       { "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8655     { &hf_lustre_obd_ioobj_ioo_type,  /* TODO : create the corresponding value_string */
8656       { "Ioo Type", "lustre.obd_ioobj.ioo_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
8657     { &hf_lustre_ptlrpc_body_pb_last_xid, 
8658       { "Pb Last Xid", "lustre.ptlrpc_body.pb_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8659     { &hf_lustre_ptlrpc_body_pb_status, 
8660       { "Pb Status", "lustre.ptlrpc_body.pb_status", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8661     { &hf_lustre_niobuf_remote_flags, 
8662       { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8663     { &hf_lustre_ll_fid_id, 
8664       { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8665     { &hf_lustre_ost_lvb_lvb_blocks, 
8666       { "Lvb Blocks", "lustre.ost_lvb.lvb_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8667     { &hf_lustre_lustre_msg_v2_lm_padding_2, 
8668       { "Lm Padding 2", "lustre.lustre_msg_v2.lm_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8669     { &hf_lustre_obd_connect_data_padding1, 
8670       { "Padding1", "lustre.obd_connect_data.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8671     { &hf_lustre_lov_ost_data_v1_l_ost_idx, 
8672       { "L Ost Idx", "lustre.lov_ost_data_v1.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8673     { &hf_lustre_obd_connect_data_padding2, 
8674       { "Padding2", "lustre.obd_connect_data.padding2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8675     { &hf_lustre_obd_ioobj_ioo_gr, 
8676       { "Ioo Gr", "lustre.obd_ioobj.ioo_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8677     { &hf_lustre_niobuf_remote_offset, 
8678       { "Offset", "lustre.niobuf_remote.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8679     { &hf_lustre_mds_status_req_repbuf, 
8680       { "Repbuf", "lustre.mds_status_req.repbuf", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8681     { &hf_lustre_obd_statfs_os_spare2, 
8682       { "Os Spare2", "lustre.obd_statfs.os_spare2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8683     { &hf_lustre_lustre_msg_v2_lm_bufcount, 
8684       { "Lm Bufcount", "lustre.lustre_msg_v2.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8685     { &hf_lustre_ptlrpc_body_pb_handle, 
8686       { "Pb Handle", "lustre.ptlrpc_body.pb_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8687     { &hf_lustre_obd_connect_data_ocd_transno, 
8688       { "Ocd Transno", "lustre.obd_connect_data.ocd_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8689     { &hf_lustre_lustre_msg_v1_lm_magic, 
8690       { "Lm Magic", "lustre.lustre_msg_v1.lm_magic", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8691     { &hf_lustre_ptlrpc_body_pb,
8692       { "ptl rpc", "lustre.ptlrpc_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8693     { &hf_lustre_mds_body,
8694       { "mds body", "lustre.mds_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8695     { &hf_lustre_mds_rec_create,
8696       { "mds rec create", "lustre.mds_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8697     { &hf_lustre_mds_rec_link,
8698       { "mds rec link", "lustre.mds_rec_link", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8699     { &hf_lustre_mds_rec_unlink,
8700       { "mds rec unlink", "lustre.mds_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8701
8702     { &hf_lustre_obd_uuid,
8703       { "obd uid name", "lustre.obd_uid", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8704     { &hf_lustre_obd_connect_data ,
8705       { "obd connect data", "lustre.obd_connect_data", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8706
8707     { &hf_lustre_ldlm_intent,
8708       { "ldlm intent", "lustre.ldlm_intent", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8709
8710     { &hf_lustre_obd_ioobj,
8711       { "lustre obd ioobj", "lustre.obd_ioobj", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8712     { &hf_lustre_niobuf_remote,
8713       { "lustre niobuf remote", "lustre.niobuf_remote", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8714     { &hf_lustre_ost_key,
8715       { "lustre ost key", "lustre.ost_key", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8716     { &hf_lustre_ost_val,
8717       { "lustre ost val", "lustre.ost_val", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8718     { &hf_lustre_llogd_chunk,
8719       { "lustre llogd chunk", "lustre.llogd_chunk", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8720     { &hf_lustre_llogd_keyword,
8721       { "lustre llogd keyword", "lustre.llogd_keyword", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8722     { &hf_lustre_llogd_client,
8723       { "lustre llogd client", "lustre.llogd_client", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8724     { &hf_lustre_llogd_name,
8725       { "lustre llogd name", "lustre.llogd_name", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8726     { &hf_lustre_llogd_log_hdr,
8727       { "lustre llogd log hdr", "lustre.llogd_log_hdr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8728     { &hf_lustre_llog_logid_rec,
8729       { "lustre llog logid rec", "lustre.llog_logid_rec", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8730
8731     { &hf_lustre_llogd_body,
8732       { "lustre llogd body", "lustre.llogd_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
8733     { &hf_lustre_nio,
8734       { "lustre nio", "lustre.nio", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
8735     { &hf_lustre_ost_body,
8736       { "ost body", "lustre.ost_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8737     { &hf_lustre_obd_statfs,
8738       { "obd statfs", "lustre.obd_statfs", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8739     { &hf_lustre_obd_quotactl,
8740       { "obd quotactl", "lustre.obd_quotacl", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8741     { &hf_lustre_quota_adjust_qunit,
8742       { "obd quota adjust qunit", "lustre.quota_adjust_qunit", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
8743     { &hf_lustre_llog_unlink_rec_lur_tail, 
8744       { "Lur Tail", "lustre.llog_unlink_rec.lur_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8745     { &hf_lustre_llog_size_change_rec_lsc_io_epoch, 
8746       { "Lsc Io Epoch", "lustre.llog_size_change_rec.lsc_io_epoch", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8747     { &hf_lustre_mgs_target_info_mti_flags, 
8748       { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8749     { &hf_lustre_ldlm_reply_lock_policy_res1, 
8750       { "Lock Policy Res1", "lustre.ldlm_reply.lock_policy_res1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8751     { &hf_lustre_mds_rec_link_lk_fsuid, 
8752       { "Lk Fsuid", "lustre.mds_rec_link.lk_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8753     { &hf_lustre_llogd_body_lgd_len, 
8754       { "Lgd Len", "lustre.llogd_body.lgd_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8755     { &hf_lustre_qunit_data_old_qd_id, 
8756       { "Qd Id", "lustre.qunit_data_old.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8757     { &hf_lustre_llog_logid_rec_padding1, 
8758       { "Padding1", "lustre.llog_logid_rec.padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8759     { &hf_lustre_quota_adjust_qunit_padding1, 
8760       { "Padding1", "lustre.quota_adjust_qunit.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8761     { &hf_lustre_llog_size_change_rec_lsc_fid, 
8762       { "Lsc Fid", "lustre.llog_size_change_rec.lsc_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8763     { &hf_lustre_llog_rec_hdr_padding, 
8764       { "Padding", "lustre.llog_rec_hdr.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8765     { &hf_lustre_mds_rec_create_cr_time, 
8766       { "Cr Time", "lustre.mds_rec_create.cr_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8767     { &hf_lustre_mds_rec_create_cr_padding_1, 
8768       { "Cr Padding 1", "lustre.mds_rec_create.cr_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8769     { &hf_lustre_obdo_o_nlink, 
8770       { "O Nlink", "lustre.obdo.o_nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8771     { &hf_lustre_mds_rec_rename_rn_suppgid2, 
8772       { "Rn Suppgid2", "lustre.mds_rec_rename.rn_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8773     { &hf_lustre_mds_rec_link_lk_padding_4, 
8774       { "Lk Padding 4", "lustre.mds_rec_link.lk_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8775     { &hf_lustre_mds_rec_link_lk_cap, 
8776       { "Lk Cap", "lustre.mds_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8777     { &hf_lustre_ldlm_extent_gid, 
8778       { "Gid", "lustre.ldlm_extent.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8779     { &hf_lustre_obdo_o_uid, 
8780       { "O Uid", "lustre.obdo.o_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8781     { &hf_lustre_mds_rec_create_cr_padding_5, 
8782       { "Cr Padding 5", "lustre.mds_rec_create.cr_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8783     { &hf_lustre_mds_xattr_name, 
8784       { "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
8785     { &hf_lustre_lov_mds_md_v1, 
8786       { "lov mds md v1", "lustre.lov_mds_md_v1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
8787     { &hf_lustre_llog_cookie, 
8788       { "llog cookie", "lustre.llog_cookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
8789     { &hf_lustre_mds_md_data, 
8790       { "mds md data", "lustre.mds_md_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
8791     { &hf_lustre_mds_reint_opcode, 
8792       { "mds reint opcode", "lustre.mds_reint_opcode", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
8793     { &hf_lustre_mds_xattr_eadata, 
8794       { "mds xattr eadata", "lustre.mds_xattr_eadata", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
8795     { &hf_lustre_reint_name, 
8796       { "mds reint name", "lustre.mds_reint_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
8797     { &hf_lustre_reint_old_name, 
8798       { "mds reint old name", "lustre.mds_reint_old_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
8799     { &hf_lustre_reint_new_name, 
8800       { "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
8801
8802
8803
8804     { &hf_lustre_obdo_o_valid, 
8805       { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8806     { &hf_lustre_ldlm_reply_lock_flags, 
8807       { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32,BASE_HEX, NULL, 0, "", HFILL }},
8808
8809     {&hf_lustre_ldlm_fl_lock_changed, {"LDLM_FL_LOCK_CHANGED", "lustre.ldlm_fl_lock_changed", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCK_CHANGED, "", HFILL}}, 
8810     {&hf_lustre_ldlm_fl_block_granted, {"LDLM_FL_BLOCK_GRANTED", "lustre.ldlm_fl_block_granted", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_GRANTED, "", HFILL}}, 
8811     {&hf_lustre_ldlm_fl_block_conv, {"LDLM_FL_BLOCK_CONV", "lustre.ldlm_fl_block_conv", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_CONV, "", HFILL}}, 
8812     {&hf_lustre_ldlm_fl_block_wait, {"LDLM_FL_BLOCK_WAIT", "lustre.ldlm_fl_block_wait", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_WAIT, "", HFILL}}, 
8813     {&hf_lustre_ldlm_fl_cbpending, {"LDLM_FL_CBPENDING", "lustre.ldlm_fl_cbpending", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CBPENDING, "", HFILL}}, 
8814     {&hf_lustre_ldlm_fl_ast_sent, {"LDLM_FL_AST_SENT", "lustre.ldlm_fl_ast_sent", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_AST_SENT, "", HFILL}}, 
8815     {&hf_lustre_ldlm_fl_wait_noreproc, {"LDLM_FL_WAIT_NOREPROC", "lustre.ldlm_fl_wait_noreproc", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_WAIT_NOREPROC, "", HFILL}}, 
8816     {&hf_lustre_ldlm_fl_cancel, {"LDLM_FL_CANCEL", "lustre.ldlm_fl_cancel", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCEL, "", HFILL}}, 
8817     {&hf_lustre_ldlm_fl_replay, {"LDLM_FL_REPLAY", "lustre.ldlm_fl_replay", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_REPLAY, "", HFILL}}, 
8818     {&hf_lustre_ldlm_fl_intent_only, {"LDLM_FL_INTENT_ONLY", "lustre.ldlm_fl_intent_only", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_INTENT_ONLY, "", HFILL}}, 
8819     {&hf_lustre_ldlm_fl_local_only, {"LDLM_FL_LOCAL_ONLY", "lustre.ldlm_fl_local_only", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCAL_ONLY, "", HFILL}}, 
8820     {&hf_lustre_ldlm_fl_failed, {"LDLM_FL_FAILED", "lustre.ldlm_fl_failed", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_FAILED, "", HFILL}}, 
8821     {&hf_lustre_ldlm_fl_has_intent, {"LDLM_FL_HAS_INTENT", "lustre.ldlm_fl_has_intent", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_HAS_INTENT, "", HFILL}}, 
8822     {&hf_lustre_ldlm_fl_canceling, {"LDLM_FL_CANCELING", "lustre.ldlm_fl_canceling", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCELING, "", HFILL}}, 
8823     {&hf_lustre_ldlm_fl_local, {"LDLM_FL_LOCAL", "lustre.ldlm_fl_local", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCAL, "", HFILL}}, 
8824     {&hf_lustre_ldlm_fl_warn, {"LDLM_FL_WARN", "lustre.ldlm_fl_warn", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_WARN, "", HFILL}}, 
8825     {&hf_lustre_ldlm_fl_discard_data, {"LDLM_FL_DISCARD_DATA", "lustre.ldlm_fl_discard_data", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_DISCARD_DATA, "", HFILL}}, 
8826     {&hf_lustre_ldlm_fl_no_timeout, {"LDLM_FL_NO_TIMEOUT", "lustre.ldlm_fl_no_timeout", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_NO_TIMEOUT, "", HFILL}}, 
8827     {&hf_lustre_ldlm_fl_block_nowait, {"LDLM_FL_BLOCK_NOWAIT", "lustre.ldlm_fl_block_nowait", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_NOWAIT, "", HFILL}}, 
8828     {&hf_lustre_ldlm_fl_test_lock, {"LDLM_FL_TEST_LOCK", "lustre.ldlm_fl_test_lock", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_TEST_LOCK, "", HFILL}}, 
8829     {&hf_lustre_ldlm_fl_lvb_ready, {"LDLM_FL_LVB_READY", "lustre.ldlm_fl_lvb_ready", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LVB_READY, "", HFILL}}, 
8830     {&hf_lustre_ldlm_fl_kms_ignore, {"LDLM_FL_KMS_IGNORE", "lustre.ldlm_fl_kms_ignore", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_KMS_IGNORE, "", HFILL}}, 
8831     {&hf_lustre_ldlm_fl_no_lru, {"LDLM_FL_NO_LRU", "lustre.ldlm_fl_no_lru", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_NO_LRU, "", HFILL}}, 
8832     {&hf_lustre_ldlm_fl_cancel_on_block, {"LDLM_FL_CANCEL_ON_BLOCK", "lustre.ldlm_fl_cancel_on_block", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCEL_ON_BLOCK, "", HFILL}}, 
8833     {&hf_lustre_ldlm_fl_cp_reqd, {"LDLM_FL_CP_REQD", "lustre.ldlm_fl_cp_reqd", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CP_REQD, "", HFILL}}, 
8834     {&hf_lustre_ldlm_fl_cleaned, {"LDLM_FL_CLEANED", "lustre.ldlm_fl_cleaned", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CLEANED, "", HFILL}}, 
8835     {&hf_lustre_ldlm_fl_atomic_cb, {"LDLM_FL_ATOMIC_CB", "lustre.ldlm_fl_atomic_cb", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_ATOMIC_CB, "", HFILL}}, 
8836     {&hf_lustre_ldlm_fl_bl_ast, {"LDLM_FL_BL_AST", "lustre.ldlm_fl_bl_ast", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BL_AST, "", HFILL}}, 
8837     {&hf_lustre_ldlm_fl_bl_done, {"LDLM_FL_BL_DONE", "lustre.ldlm_fl_bl_done", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BL_DONE, "", HFILL}}, 
8838     {&hf_lustre_ldlm_fl_deny_on_contention, {"LDLM_FL_DENY_ON_CONTENTION", "lustre.ldlm_fl_deny_on_contention", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_DENY_ON_CONTENTION, "", HFILL}}, 
8839     {&hf_lustre_ldlm_ast_discard_data, {"LDLM_AST_DISCARD_DATA", "lustre.ldlm_ast_discard_data", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_AST_DISCARD_DATA, "", HFILL}}, 
8840
8841
8842     { &hf_lustre_mds_rec_link_lk_padding_3, 
8843       { "Lk Padding 3", "lustre.mds_rec_link.lk_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8844     { &hf_lustre_obdo_o_misc, 
8845       { "O Misc", "lustre.obdo.o_misc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8846     { &hf_lustre_mds_rec_setattr_sa_suppgid, 
8847       { "Sa Suppgid", "lustre.mds_rec_setattr.sa_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8848     { &hf_lustre_mds_rec_setattr_sa_attr_flags, 
8849       { "Sa Attr Flags", "lustre.mds_rec_setattr.sa_attr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8850     { &hf_lustre_mds_rec_rename_rn_padding_2, 
8851       { "Rn Padding 2", "lustre.mds_rec_rename.rn_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8852     { &hf_lustre_ldlm_request_lock_handle, 
8853       { "Lock Handle", "lustre.ldlm_request.lock_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8854     { &hf_lustre_llog_logid_lgl_oid, 
8855       { "Lgl Oid", "lustre.llog_logid.lgl_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8856     { &hf_lustre_ldlm_inodebits_bits, 
8857       { "Bits", "lustre.ldlm_inodebits.bits", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8858     { &hf_lustre_llog_log_hdr_llh_count, 
8859       { "Llh Count", "lustre.llog_log_hdr.llh_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8860     { &hf_lustre_mds_rec_unlink_ul_padding_4, 
8861       { "Ul Padding 4", "lustre.mds_rec_unlink.ul_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8862     { &hf_lustre_llog_gen_rec_lgr_tail, 
8863       { "Lgr Tail", "lustre.llog_gen_rec.lgr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8864     { &hf_lustre_llog_catid_lci_padding3, 
8865       { "Lci Padding3", "lustre.llog_catid.lci_padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8866     { &hf_lustre_qunit_data_qd_qunit, 
8867       { "Qd Qunit", "lustre.qunit_data.qd_qunit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8868     { &hf_lustre_mds_rec_unlink_ul_fid1, 
8869       { "Ul Fid1", "lustre.mds_rec_unlink.ul_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8870     { &hf_lustre_llog_setattr_rec_padding, 
8871       { "Padding", "lustre.llog_setattr_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8872     { &hf_lustre_mds_rec_rename_rn_opcode, 
8873       { "Rn Opcode", "lustre.mds_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
8874     { &hf_lustre_mds_rec_create_cr_flags, 
8875       { "Cr Flags", "lustre.mds_rec_create.cr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8876     { &hf_lustre_mds_rec_rename_rn_fid1, 
8877       { "Rn Fid1", "lustre.mds_rec_rename.rn_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8878     { &hf_lustre_llog_cookie_lgc_lgl, 
8879       { "Lgc Lgl", "lustre.llog_cookie.lgc_lgl", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8880     { &hf_lustre_obd_quotactl_qc_dqinfo, 
8881       { "Qc Dqinfo", "lustre.obd_quotactl.qc_dqinfo", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8882     { &hf_lustre_llog_log_hdr_llh_bitmap, 
8883       { "Llh Bitmap", "lustre.llog_log_hdr.llh_bitmap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8884     { &hf_lustre_mds_rec_setattr_sa_size, 
8885       { "Sa Size", "lustre.mds_rec_setattr.sa_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8886     { &hf_lustre_mds_rec_rename_rn_suppgid1, 
8887       { "Rn Suppgid1", "lustre.mds_rec_rename.rn_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8888     { &hf_lustre_obd_quotactl_qc_stat, 
8889       { "Qc Stat", "lustre.obd_quotactl.qc_stat", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8890     { &hf_lustre_qunit_data_old2_qd_id, 
8891       { "Qd Id", "lustre.qunit_data_old2.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8892     { &hf_lustre_llog_logid_rec_padding2, 
8893       { "Padding2", "lustre.llog_logid_rec.padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8894     { &hf_lustre_mds_rec_unlink_ul_mode, 
8895       { "Ul Mode", "lustre.mds_rec_unlink.ul_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8896     { &hf_lustre_llog_orphan_rec_lor_tail, 
8897       { "Lor Tail", "lustre.llog_orphan_rec.lor_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8898     { &hf_lustre_llog_logid_rec_padding5, 
8899       { "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8900     { &hf_lustre_mds_rec_create_cr_fsgid, 
8901       { "Cr Fsgid", "lustre.mds_rec_create.cr_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8902     /*-------------------------------------------------------------------------------------------------------------*/
8903     /*all this flags are uint64, but I don't find the way to use something like TFS() with a Uint64*/
8904     { &hf_lustre_ldlm_intent_opc_open, 
8905       { "open", "lustre.ldlm_intent.opc_open", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_OPEN,  "", HFILL}},
8906     { &hf_lustre_ldlm_intent_opc_creat, 
8907       { "creat", "lustre.ldlm_intent.opc_creat", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_CREAT  ,  "", HFILL}},
8908     { &hf_lustre_ldlm_intent_opc_readdir, 
8909       { "readdir", "lustre.ldlm_intent.opc_readdir", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_READDIR  ,  "", HFILL}},
8910     { &hf_lustre_ldlm_intent_opc_getattr, 
8911       { "getattr", "lustre.ldlm_intent.opc_getattr", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_GETATTR,  "", HFILL}},
8912     { &hf_lustre_ldlm_intent_opc_lookup, 
8913       { "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_LOOKUP ,  "", HFILL}},
8914     { &hf_lustre_ldlm_intent_opc_unlink, 
8915       { "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_UNLINK ,  "", HFILL}},
8916     { &hf_lustre_ldlm_intent_opc_getxattr, 
8917       { "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_GETXATTR ,  "", HFILL}},
8918     { &hf_lustre_ldlm_intent_opc_exec, 
8919       { "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_EXEC ,  "", HFILL}},
8920     { &hf_lustre_ldlm_intent_opc_pin, 
8921       { "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_PIN ,  "", HFILL}},
8922     /*-------------------------------------------------------------------------------------------------------------*/
8923     { &hf_lustre_ldlm_intent_opc, 
8924       { "intent opcode", "lustre.ldlm_intent.opc", FT_NONE, BASE_NONE, NULL, 0,  "", HFILL}},
8925     { &hf_lustre_llog_rec_hdr_lrh_type, 
8926       { "Lrh Type", "lustre.llog_rec_hdr.lrh_type", FT_UINT32, BASE_HEX, VALS(lustre_llog_op_type), 0, "", HFILL }},
8927     { &hf_lustre_mds_rec_link_lk_fsgid, 
8928       { "Lk Fsgid", "lustre.mds_rec_link.lk_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8929     { &hf_lustre_llog_rec_hdr_lrh_len, 
8930       { "Lrh Len", "lustre.llog_rec_hdr.lrh_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8931     { &hf_lustre_llog_setattr_rec_lsr_uid, 
8932       { "Lsr Uid", "lustre.llog_setattr_rec.lsr_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8933     { &hf_lustre_lov_desc_ld_padding_1, 
8934       { "Ld Padding 1", "lustre.lov_desc.ld_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8935     { &hf_lustre_obdo_o_padding_4, 
8936       { "O Padding 4", "lustre.obdo.o_padding_4", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8937     { &hf_lustre_mgs_target_info_padding, 
8938       { "Padding", "lustre.mgs_target_info.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8939     { &hf_lustre_obd_quotactl_qc_dqblk, 
8940       { "Qc Dqblk", "lustre.obd_quotactl.qc_dqblk", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8941     { &hf_lustre_llogd_conn_body_lgdc_gen, 
8942       { "Lgdc Gen", "lustre.llogd_conn_body.lgdc_gen", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8943     { &hf_lustre_mds_rec_create_cr_padding_2, 
8944       { "Cr Padding 2", "lustre.mds_rec_create.cr_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8945     { &hf_lustre_mds_rec_setattr_sa_ctime, 
8946       { "Sa Ctime", "lustre.mds_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8947     { &hf_lustre_llog_log_hdr_llh_tail, 
8948       { "Llh Tail", "lustre.llog_log_hdr.llh_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8949     { &hf_lustre_obdo_o_size, 
8950       { "O Size", "lustre.obdo.o_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8951     { &hf_lustre_mds_rec_setattr_sa_cap, 
8952       { "Sa Cap", "lustre.mds_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8953     { &hf_lustre_ldlm_extent_start, 
8954       { "Start", "lustre.ldlm_extent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8955     { &hf_lustre_mds_rec_unlink_ul_opcode, 
8956       { "Ul Opcode", "lustre.mds_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
8957     { &hf_lustre_llog_size_change_rec_lsc_hdr, 
8958       { "Lsc Hdr", "lustre.llog_size_change_rec.lsc_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8959     { &hf_lustre_mds_rec_unlink_ul_time, 
8960       { "Ul Time", "lustre.mds_rec_unlink.ul_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
8961     { &hf_lustre_llog_create_rec_lcr_tail, 
8962       { "Lcr Tail", "lustre.llog_create_rec.lcr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8963     { &hf_lustre_mds_rec_setattr_sa_mode, 
8964       { "Sa Mode", "lustre.mds_rec_setattr.sa_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8965     { &hf_lustre_llog_logid_lgl_ogr, 
8966       { "Lgl Ogr", "lustre.llog_logid.lgl_ogr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8967     { &hf_lustre_llog_create_rec_lcr_hdr, 
8968       { "Lcr Hdr", "lustre.llog_create_rec.lcr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8969     { &hf_lustre_llog_cookie_lgc_padding, 
8970       { "Lgc Padding", "lustre.llog_cookie.lgc_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8971     { &hf_lustre_mds_rec_create_cr_cap, 
8972       { "Cr Cap", "lustre.mds_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8973     { &hf_lustre_qunit_data_old_qd_type, 
8974       { "Qd Type", "lustre.qunit_data_old.qd_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8975     { &hf_lustre_ldlm_flock_blocking_export, 
8976       { "Blocking Export", "lustre.ldlm_flock.blocking_export", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
8977     { &hf_lustre_mds_rec_setattr_sa_gid, 
8978       { "Sa Gid", "lustre.mds_rec_setattr.sa_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8979     { &hf_lustre_lov_desc_ld_pattern, 
8980       { "Ld Pattern", "lustre.lov_desc.ld_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8981     { &hf_lustre_qunit_data_qd_id, 
8982       { "Qd Id", "lustre.qunit_data.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8983     { &hf_lustre_mgs_target_info_mti_fsname, 
8984       { "Mti Fsname", "lustre.mgs_target_info.mti_fsname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
8985     { &hf_lustre_ldlm_request_lock_flags, 
8986       { "Lock Flags", "lustre.ldlm_request.lock_flags", FT_UINT32, BASE_HEX, NULL, 0 , "", HFILL }},
8987     { &hf_lustre_obdo_o_mode, 
8988       { "O Mode", "lustre.obdo.o_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8989     { &hf_lustre_mgs_target_info_mti_svname, 
8990       { "Mti Svname", "lustre.mgs_target_info.mti_svname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
8991     { &hf_lustre_llogd_body_lgd_logid, 
8992       { "Lgd Logid", "lustre.llogd_body.lgd_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
8993     { &hf_lustre_mds_rec_create_cr_opcode, 
8994       { "Cr Opcode", "lustre.mds_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
8995     { &hf_lustre_llog_log_hdr_llh_size, 
8996       { "Llh Size", "lustre.llog_log_hdr.llh_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8997     { &hf_lustre_llog_create_rec_padding, 
8998       { "Padding", "lustre.llog_create_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
8999     { &hf_lustre_obdo_o_handle, 
9000       { "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9001     { &hf_lustre_obdo_o_atime, 
9002       { "O Atime", "lustre.obdo.o_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9003     { &hf_lustre_quota_adjust_qunit_qaq_id, 
9004       { "Qaq Id", "lustre.quota_adjust_qunit.qaq_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9005     { &hf_lustre_mds_rec_rename_rn_fid2, 
9006       { "Rn Fid2", "lustre.mds_rec_rename.rn_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9007     { &hf_lustre_mds_rec_create_cr_replayfid, 
9008       { "Cr Replayfid", "lustre.mds_rec_create.cr_replayfid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9009     { &hf_lustre_ldlm_lock_desc_l_policy_data, 
9010       { "L Policy Data", "lustre.ldlm_lock_desc.l_policy_data", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9011     { &hf_lustre_mds_rec_link_lk_suppgid1, 
9012       { "Lk Suppgid1", "lustre.mds_rec_link.lk_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9013     { &hf_lustre_obd_quotactl_qc_cmd, 
9014       { "Qc Cmd", "lustre.obd_quotactl.qc_cmd", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9015     { &hf_lustre_mds_rec_rename_rn_padding_3, 
9016       { "Rn Padding 3", "lustre.mds_rec_rename.rn_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9017     { &hf_lustre_qunit_data_padding, 
9018       { "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9019     { &hf_lustre_quota_adjust_qunit_qaq_flags, 
9020       { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9021     { &hf_lustre_ldlm_lock_desc_l_granted_mode, 
9022       { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
9023     { &hf_lustre_obdo_o_gr, 
9024       { "O Gr", "lustre.obdo.o_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9025     { &hf_lustre_mds_rec_unlink_ul_padding_2, 
9026       { "Ul Padding 2", "lustre.mds_rec_unlink.ul_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9027     { &hf_lustre_obdo_o_gid, 
9028       { "O Gid", "lustre.obdo.o_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9029     { &hf_lustre_llog_catid_lci_logid, 
9030       { "Lci Logid", "lustre.llog_catid.lci_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9031     { &hf_lustre_llog_rec_tail_lrt_index, 
9032       { "Lrt Index", "lustre.llog_rec_tail.lrt_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9033     { &hf_lustre_lov_desc_ld_default_stripe_count, 
9034       { "Ld Default Stripe Count", "lustre.lov_desc.ld_default_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9035     { &hf_lustre_ldlm_resource_desc_lr_padding, 
9036       { "Lr Padding", "lustre.ldlm_resource_desc.lr_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9037     { &hf_lustre_cfg_marker_cm_vers, 
9038       { "Cm Vers", "lustre.cfg_marker.cm_vers", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9039     { &hf_lustre_mds_rec_create_cr_fid, 
9040       { "Cr Fid", "lustre.mds_rec_create.cr_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9041     { &hf_lustre_llog_unlink_rec_lur_hdr, 
9042       { "Lur Hdr", "lustre.llog_unlink_rec.lur_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9043     { &hf_lustre_llogd_body_lgd_index, 
9044       { "Lgd Index", "lustre.llogd_body.lgd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9045     { &hf_lustre_cfg_marker_cm_tgtname, 
9046       { "Cm Tgtname", "lustre.cfg_marker.cm_tgtname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
9047     { &hf_lustre_mds_rec_unlink_ul_padding_1, 
9048       { "Ul Padding 1", "lustre.mds_rec_unlink.ul_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9049     { &hf_lustre_mds_rec_unlink_ul_cap, 
9050       { "Ul Cap", "lustre.mds_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9051     { &hf_lustre_llog_setattr_rec_lsr_ogen, 
9052       { "Lsr Ogen", "lustre.llog_setattr_rec.lsr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9053     { &hf_lustre_mds_rec_create_cr_padding_3, 
9054       { "Cr Padding 3", "lustre.mds_rec_create.cr_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9055     { &hf_lustre_llog_logid_rec_lid_hdr, 
9056       { "Lid Hdr", "lustre.llog_logid_rec.lid_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9057     { &hf_lustre_obdo_o_ioepoch, 
9058       { "O IOEpoch", "lustre.obdo.o_ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9059     { &hf_lustre_ost_body_oa, 
9060       { "Oa", "lustre.ost_body.oa", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9061     { &hf_lustre_llog_logid_rec_padding3, 
9062       { "Padding3", "lustre.llog_logid_rec.padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9063     { &hf_lustre_llog_log_hdr_llh_flags, 
9064       { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9065     {&hf_lustre_llog_hdr_llh_flag_zap_when_empty,
9066       {"LLOG_F_ZAP_WHEN_EMPTY","lustre.lustre.llog_log_hdr.llh_flag_zap",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_ZAP_WHEN_EMPTY,"",HFILL}},
9067     {&hf_lustre_llog_hdr_llh_flag_is_cat,
9068       {"LLOG_F_IS_CAT","lustre.lustre.llog_log_hdr.llh_flag_cat",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_IS_CAT,"",HFILL}},
9069     {&hf_lustre_llog_hdr_llh_flag_is_play,
9070       {"LOG_F_IS_PLAIN","lustre.lustre.llog_log_hdr.llh_flag_play",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_IS_PLAIN,"",HFILL}},
9071
9072     { &hf_lustre_llog_setattr_rec_lsr_oid, 
9073       { "Lsr Oid", "lustre.llog_setattr_rec.lsr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9074     { &hf_lustre_mds_rec_create_cr_mode, 
9075       { "Cr Mode", "lustre.mds_rec_create.cr_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9076     { &hf_lustre_llog_size_change_rec_padding, 
9077       { "Padding", "lustre.llog_size_change_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9078     { &hf_lustre_mgs_target_info_mti_config_ver, 
9079       { "Mti Config Ver", "lustre.mgs_target_info.mti_config_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9080     { &hf_lustre_cfg_marker_cm_createtime, 
9081       { "Cm Createtime", "lustre.cfg_marker.cm_createtime",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9082     { &hf_lustre_qunit_data_old_qd_count, 
9083       { "Qd Count", "lustre.qunit_data_old.qd_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9084     { &hf_lustre_mds_rec_setattr_sa_uid, 
9085       { "Sa Uid", "lustre.mds_rec_setattr.sa_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9086     { &hf_lustre_llog_catid_lci_padding1, 
9087       { "Lci Padding1", "lustre.llog_catid.lci_padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9088     { &hf_lustre_mds_rec_setattr_sa_atime, 
9089       { "Sa Atime", "lustre.mds_rec_setattr.sa_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9090     { &hf_lustre_lov_desc_ld_active_tgt_count, 
9091       { "Ld Active Tgt Count", "lustre.lov_desc.ld_active_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9092     { &hf_lustre_obdo_o_lcookie, 
9093       { "O Lcookie", "lustre.obdo.o_lcookie", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9094     { &hf_lustre_llog_gen_rec_lgr_gen, 
9095       { "Lgr Gen", "lustre.llog_gen_rec.lgr_gen", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9096     { &hf_lustre_obdo_o_id, 
9097       { "O Id", "lustre.obdo.o_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9098     { &hf_lustre_mgs_target_info_mti_uuid, 
9099       { "Mti Uuid", "lustre.mgs_target_info.mti_uuid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
9100     { &hf_lustre_mds_rec_link_lk_padding_1, 
9101       { "Lk Padding 1", "lustre.mds_rec_link.lk_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9102     { &hf_lustre_llog_rec_hdr_lrh_index, 
9103       { "Lrh Index", "lustre.llog_rec_hdr.lrh_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9104     { &hf_lustre_llog_setattr_rec_lsr_hdr, 
9105       { "Lsr Hdr", "lustre.llog_setattr_rec.lsr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9106     { &hf_lustre_mgs_target_info_mti_stripe_index, 
9107       { "Mti Stripe Index", "lustre.mgs_target_info.mti_stripe_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9108     { &hf_lustre_llog_gen_conn_cnt, 
9109       { "Conn Cnt", "lustre.llog_gen.conn_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9110     { &hf_lustre_obdo_o_padding_6, 
9111       { "O Padding 6", "lustre.obdo.o_padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9112     { &hf_lustre_mds_rec_create_cr_suppgid, 
9113       { "Cr Suppgid", "lustre.mds_rec_create.cr_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9114     { &hf_lustre_llog_cookie_lgc_index, 
9115       { "Lgc Index", "lustre.llog_cookie.lgc_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9116     { &hf_lustre_lov_desc_ld_uuid, 
9117       { "Ld Uuid", "lustre.lov_desc.ld_uuid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9118     { &hf_lustre_llog_create_rec_lcr_oid, 
9119       { "Lcr Oid", "lustre.llog_create_rec.lcr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9120     { &hf_lustre_ldlm_reply_lock_desc, 
9121       { "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9122     { &hf_lustre_lov_desc_ld_padding_0, 
9123       { "Ld Padding 0", "lustre.lov_desc.ld_padding_0", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9124     { &hf_lustre_llog_unlink_rec_lur_ogen, 
9125       { "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9126     { &hf_lustre_llog_orphan_rec_lor_hdr, 
9127       { "Lor Hdr", "lustre.llog_orphan_rec.lor_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9128     { &hf_lustre_mds_rec_rename_rn_fsuid, 
9129       { "Rn Fsuid", "lustre.mds_rec_rename.rn_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9130     { &hf_lustre_cfg_marker_cm_flags, 
9131       { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9132     { &hf_lustre_obdo_o_padding_3, 
9133       { "O Padding 3", "lustre.obdo.o_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9134     { &hf_lustre_mds_rec_create_cr_fsuid, 
9135       { "Cr Fsuid", "lustre.mds_rec_create.cr_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9136     { &hf_lustre_mds_rec_unlink_ul_fsgid, 
9137       { "Ul Fsgid", "lustre.mds_rec_unlink.ul_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9138     { &hf_lustre_ldlm_request_lock_desc, 
9139       { "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9140     { &hf_lustre_mds_rec_unlink_ul_fsuid, 
9141       { "Ul Fsuid", "lustre.mds_rec_unlink.ul_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9142     { &hf_lustre_mds_rec_link_lk_suppgid2, 
9143       { "Lk Suppgid2", "lustre.mds_rec_link.lk_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9144     { &hf_lustre_llog_orphan_rec_padding, 
9145       { "Padding", "lustre.llog_orphan_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9146     { &hf_lustre_obdo_o_flags, 
9147       { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9148     { &hf_lustre_mgs_target_info_mti_params, 
9149       { "Mti Params", "lustre.mgs_target_info.mti_params", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
9150     { &hf_lustre_llog_logid_lgl_ogen, 
9151       { "Lgl Ogen", "lustre.llog_logid.lgl_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9152     { &hf_lustre_mds_rec_setattr_sa_valid, 
9153       { "Sa Valid", "lustre.mds_rec_setattr.sa_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9154     { &hf_lustre_cfg_marker_cm_comment, 
9155       { "Cm Comment", "lustre.cfg_marker.cm_comment", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
9156     { &hf_lustre_llog_unlink_rec_lur_oid, 
9157       { "Lur Oid", "lustre.llog_unlink_rec.lur_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9158     { &hf_lustre_qunit_data_qd_count, 
9159       { "Qd Count", "lustre.qunit_data.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9160     { &hf_lustre_mds_rec_rename_rn_padding_1, 
9161       { "Rn Padding 1", "lustre.mds_rec_rename.rn_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9162     { &hf_lustre_obdo_o_mtime, 
9163       { "O Mtime", "lustre.obdo.o_mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9164     { &hf_lustre_mds_rec_rename_rn_fsgid, 
9165       { "Rn Fsgid", "lustre.mds_rec_rename.rn_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9166     { &hf_lustre_mds_rec_rename_rn_cap, 
9167       { "Rn Cap", "lustre.mds_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9168     { &hf_lustre_obdo_o_blksize, 
9169       { "O Blksize", "lustre.obdo.o_blksize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9170     { &hf_lustre_mds_rec_unlink_ul_suppgid, 
9171       { "Ul Suppgid", "lustre.mds_rec_unlink.ul_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9172     { &hf_lustre_ldlm_res_id_name, 
9173       { "Name", "lustre.ldlm_res_id.name", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9174     { &hf_lustre_mds_rec_link_lk_time, 
9175       { "Lk Time", "lustre.mds_rec_link.lk_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9176     { &hf_lustre_ldlm_reply_lock_handle, 
9177       { "Lock Handle", "lustre.ldlm_reply.lock_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9178     { &hf_lustre_mds_rec_unlink_ul_padding_3, 
9179       { "Ul Padding 3", "lustre.mds_rec_unlink.ul_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9180     { &hf_lustre_llogd_body_lgd_saved_index, 
9181       { "Lgd Saved Index", "lustre.llogd_body.lgd_saved_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9182     { &hf_lustre_mds_rec_rename_rn_padding_4, 
9183       { "Rn Padding 4", "lustre.mds_rec_rename.rn_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9184     { &hf_lustre_qunit_data_old_qd_isblk, 
9185       { "Qd Isblk", "lustre.qunit_data_old.qd_isblk", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9186     { &hf_lustre_obdo_o_blocks, 
9187       { "O Blocks", "lustre.obdo.o_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9188     { &hf_lustre_lov_desc_ld_padding_2, 
9189       { "Ld Padding 2", "lustre.lov_desc.ld_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9190     { &hf_lustre_mds_rec_link_lk_fid2, 
9191       { "Lk Fid2", "lustre.mds_rec_link.lk_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9192     { &hf_lustre_llog_logid_rec_lid_tail, 
9193       { "Lid Tail", "lustre.llog_logid_rec.lid_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9194     { &hf_lustre_obdo_o_grant, 
9195       { "O Grant", "lustre.obdo.o_grant", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9196     { &hf_lustre_obdo_o_padding_2, 
9197       { "O Padding 2", "lustre.obdo.o_padding_2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9198     { &hf_lustre_quota_adjust_qunit_qaq_iunit_sz, 
9199       { "Qaq Iunit Sz", "lustre.quota_adjust_qunit.qaq_iunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9200     { &hf_lustre_llog_unlink_rec_padding, 
9201       { "Padding", "lustre.llog_unlink_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9202     { &hf_lustre_ldlm_lock_desc_l_req_mode, 
9203       { "L Req Mode", "lustre.ldlm_lock_desc.l_req_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
9204     { &hf_lustre_ldlm_extent_end, 
9205       { "End", "lustre.ldlm_extent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9206     { &hf_lustre_llog_gen_rec_lgr_hdr, 
9207       { "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9208     { &hf_lustre_llog_orphan_rec_lor_ogen, 
9209       { "Lor Ogen", "lustre.llog_orphan_rec.lor_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9210     { &hf_lustre_llogd_body_lgd_llh_flags, 
9211       { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9212     { &hf_lustre_llog_log_hdr_llh_cat_idx, 
9213       { "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9214     { &hf_lustre_llog_log_hdr_llh_bitmap_offset, 
9215       { "Llh Bitmap Offset", "lustre.llog_log_hdr.llh_bitmap_offset", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9216     { &hf_lustre_llog_orphan_rec_lor_oid, 
9217       { "Lor Oid", "lustre.llog_orphan_rec.lor_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9218     { &hf_lustre_ldlm_reply_lock_padding, 
9219       { "Lock Padding", "lustre.ldlm_reply.lock_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9220     { &hf_lustre_obd_quotactl_qc_id, 
9221       { "Qc Id", "lustre.obd_quotactl.qc_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9222     { &hf_lustre_mds_rec_create_cr_padding_4, 
9223       { "Cr Padding 4", "lustre.mds_rec_create.cr_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9224     { &hf_lustre_llog_logid_rec_padding4, 
9225       { "Padding4", "lustre.llog_logid_rec.padding4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9226     { &hf_lustre_mds_rec_link_lk_padding_2, 
9227       { "Lk Padding 2", "lustre.mds_rec_link.lk_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9228     { &hf_lustre_llog_setattr_rec_lsr_gid, 
9229       { "Lsr Gid", "lustre.llog_setattr_rec.lsr_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9230     { &hf_lustre_obd_quotactl_qc_type, 
9231       { "Qc Type", "lustre.obd_quotactl.qc_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9232     { &hf_lustre_cfg_marker_padding, 
9233       { "Padding", "lustre.cfg_marker.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9234     { &hf_lustre_mgs_target_info_mti_nids, 
9235       { "Mti Nids", "lustre.mgs_target_info.mti_nids", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9236     { &hf_lustre_obdo_o_stripe_idx, 
9237       { "O Stripe Idx", "lustre.obdo.o_stripe_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9238     { &hf_lustre_llogd_conn_body_lgdc_logid, 
9239       { "Lgdc Logid", "lustre.llogd_conn_body.lgdc_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9240     { &hf_lustre_mds_rec_setattr_sa_fsuid, 
9241       { "Sa Fsuid", "lustre.mds_rec_setattr.sa_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9242     { &hf_lustre_ldlm_flock_blocking_pid, 
9243       { "Blocking Pid", "lustre.ldlm_flock.blocking_pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9244     { &hf_lustre_lov_desc_ld_tgt_count, 
9245       { "Ld Tgt Count", "lustre.lov_desc.ld_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9246     { &hf_lustre_llogd_body_lgd_cur_offset, 
9247       { "Lgd Cur Offset", "lustre.llogd_body.lgd_cur_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9248     { &hf_lustre_llog_create_rec_lcr_ogen, 
9249       { "Lcr Ogen", "lustre.llog_create_rec.lcr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9250     { &hf_lustre_qunit_data_old2_qd_count, 
9251       { "Qd Count", "lustre.qunit_data_old2.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9252     { &hf_lustre_opnum, 
9253       { "Operation", "lustre.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
9254     { &hf_lustre_qunit_data_old2_qd_flags, 
9255       { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9256     { &hf_lustre_ldlm_flock_start, 
9257       { "Start", "lustre.ldlm_flock.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9258     { &hf_lustre_quota_adjust_qunit_qaq_bunit_sz, 
9259       { "Qaq Bunit Sz", "lustre.quota_adjust_qunit.qaq_bunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9260     { &hf_lustre_ldlm_flock_pid, 
9261       { "Pid", "lustre.ldlm_flock.pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9262     { &hf_lustre_lov_desc_ld_default_stripe_size, 
9263       { "Ld Default Stripe Size", "lustre.lov_desc.ld_default_stripe_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9264     { &hf_lustre_mds_rec_setattr_sa_opcode, 
9265       { "Sa Opcode", "lustre.mds_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
9266     { &hf_lustre_llog_log_hdr_llh_tgtuuid, 
9267       { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9268     { &hf_lustre_mds_rec_link_lk_fid1, 
9269       { "Lk Fid1", "lustre.mds_rec_link.lk_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9270     { &hf_lustre_cfg_marker_cm_step, 
9271       { "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9272     { &hf_lustre_mgs_send_param_mgs_param, 
9273       { "Mgs Param", "lustre.mgs_send_param.mgs_param", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
9274     { &hf_lustre_llog_create_rec_lcr_fid, 
9275       { "Lcr Fid", "lustre.llog_create_rec.lcr_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9276     { &hf_lustre_lov_desc_ld_default_stripe_offset, 
9277       { "Ld Default Stripe Offset", "lustre.lov_desc.ld_default_stripe_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9278     { &hf_lustre_ldlm_resource_desc_lr_name, 
9279       { "Lr Name", "lustre.ldlm_resource_desc.lr_name", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9280     { &hf_lustre_llog_rec_tail_lrt_len, 
9281       { "Lrt Len", "lustre.llog_rec_tail.lrt_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9282     { &hf_lustre_mds_rec_setattr_sa_mtime, 
9283       { "Sa Mtime", "lustre.mds_rec_setattr.sa_mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9284     { &hf_lustre_llog_log_hdr_llh_timestamp, 
9285       { "Llh Timestamp", "lustre.llog_log_hdr.llh_timestamp", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9286     { &hf_lustre_llog_catid_lci_padding2, 
9287       { "Lci Padding2", "lustre.llog_catid.lci_padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9288     { &hf_lustre_llogd_conn_body_lgdc_ctxt_idx, 
9289       { "Lgdc Ctxt Idx", "lustre.llogd_conn_body.lgdc_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9290     { &hf_lustre_cfg_marker_cm_canceltime, 
9291       { "Cm Canceltime", "lustre.cfg_marker.cm_canceltime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9292     { &hf_lustre_mgs_target_info_mti_lustre_ver, 
9293       { "Mti Lustre Ver", "lustre.mgs_target_info.mti_lustre_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9294     { &hf_lustre_obdo_o_padding_1, 
9295       { "O Padding 1", "lustre.obdo.o_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9296     { &hf_lustre_qunit_data_qd_flags, 
9297       { "Qd Flags", "lustre.qunit_data.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9298     { &hf_lustre_llog_logid_rec_lid_id, 
9299       { "Lid Id", "lustre.llog_logid_rec.lid_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9300     { &hf_lustre_obdo_o_generation, 
9301       { "O Generation", "lustre.obdo.o_generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9302     { &hf_lustre_llog_gen_mnt_cnt, 
9303       { "Mnt Cnt", "lustre.llog_gen.mnt_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9304     { &hf_lustre_llog_size_change_rec_lsc_tail, 
9305       { "Lsc Tail", "lustre.llog_size_change_rec.lsc_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9306     { &hf_lustre_obdo_o_padding_5, 
9307       { "O Padding 5", "lustre.obdo.o_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9308     { &hf_lustre_ldlm_lock_desc_l_resource, 
9309       { "L Resource", "lustre.ldlm_lock_desc.l_resource", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9310     { &hf_lustre_mds_rec_rename_rn_time, 
9311       { "Rn Time", "lustre.mds_rec_rename.rn_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9312     { &hf_lustre_mds_rec_create_cr_rdev, 
9313       { "Cr Rdev", "lustre.mds_rec_create.cr_rdev", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9314     { &hf_lustre_obdo_o_fid, 
9315       { "O Fid", "lustre.obdo.o_fid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9316     { &hf_lustre_mds_rec_setattr_sa_fid, 
9317       { "Sa Fid", "lustre.mds_rec_setattr.sa_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9318     { &hf_lustre_ldlm_request_lock_count, 
9319       { "Lock Count", "lustre.ldlm_request.lock_count", FT_UINT32, BASE_HEX_DEC, NULL, 0, "", HFILL }}, 
9320     { &hf_lustre_ldlm_flock_end, 
9321       { "End", "lustre.ldlm_flock.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9322     { &hf_lustre_mds_rec_link_lk_opcode, 
9323       { "Lk Opcode", "lustre.mds_rec_link.lk_opcode", FT_UINT32, BASE_DEC,VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
9324     { &hf_lustre_mgs_target_info_mti_nid_count, 
9325       { "Mti Nid Count", "lustre.mgs_target_info.mti_nid_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9326     /* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
9327     { &hf_lustre_mgs_target_info, 
9328       { "mgs target info", "lustre.mgs_target_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
9329     { &hf_lustre_mgs_send_param, 
9330       { "mgs send param", "lustre.mgs_send_param", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
9331     /* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
9332     { &hf_lustre_ost_lvb, 
9333       { "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
9334
9335     { &hf_lustre_obdo_o_ctime, 
9336       { "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9337     { &hf_lustre_ldlm_reply_lock_policy_res2, 
9338       { "Lock Policy Res2", "lustre.ldlm_reply.lock_policy_res2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9339     { &hf_lustre_llogd_body_lgd_ctxt_idx, 
9340       { "Lgd Ctxt Idx", "lustre.llogd_body.lgd_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9341     { &hf_lustre_mds_rec_unlink_ul_fid2, 
9342       { "Ul Fid2", "lustre.mds_rec_unlink.ul_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9343     { &hf_lustre_lov_desc_ld_qos_maxage, 
9344       { "Ld Qos Maxage", "lustre.lov_desc.ld_qos_maxage", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9345     { &hf_lustre_ldlm_resource_desc_lr_type, 
9346       { "Lr Type", "lustre.ldlm_resource_desc.lr_type", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_type_t_vals), 0, "", HFILL }},
9347     { &hf_lustre_llog_setattr_rec_lsr_tail, 
9348       { "Lsr Tail", "lustre.llog_setattr_rec.lsr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9349     { &hf_lustre_llog_cookie_lgc_subsys, 
9350       { "Lgc Subsys", "lustre.llog_cookie.lgc_subsys", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9351     { &hf_lustre_llog_log_hdr_llh_hdr, 
9352       { "Llh Hdr", "lustre.llog_log_hdr.llh_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
9353     { &hf_lustre_mds_rec_setattr_sa_fsgid, 
9354       { "Sa Fsgid", "lustre.mds_rec_setattr.sa_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9355     { &hf_lustre_mds_rec_setattr_sa_padding, 
9356       { "Sa Padding", "lustre.mds_rec_setattr.sa_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9357     { &hf_lustre_llog_log_hdr_llh_reserved, 
9358       { "Llh Reserved", "lustre.llog_log_hdr.llh_reserved", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9359
9360     { &hf_lustre_extra_padding,
9361       { "extra padding", "lustre.msg_v2_extra_padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
9362     { &hf_lustre_ldlm_reply,
9363       { "ldlm reply", "lustre.ldlm_reply", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
9364     { &hf_lustre_ldlm_request,
9365       { "ldlm request", "lustre.ldlm_request", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
9366
9367     /* add for lustre_user.h */
9368     { &hf_lustre_obd_dqinfo_dqi_valid, 
9369       { "Dqi Valid", "lustre.obd_dqinfo.dqi_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9370     { &hf_lustre_obd_dqblk_dqb_isoftlimit, 
9371       { "Dqb Isoftlimit", "lustre.obd_dqblk.dqb_isoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9372     { &hf_lustre_obd_dqblk_dqb_bhardlimit, 
9373       { "Dqb Bhardlimit", "lustre.obd_dqblk.dqb_bhardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9374     { &hf_lustre_obd_dqblk_dqb_curspace, 
9375       { "Dqb Curspace", "lustre.obd_dqblk.dqb_curspace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9376     { &hf_lustre_obd_dqblk_dqb_itime, 
9377       { "Dqb Itime", "lustre.obd_dqblk.dqb_itime", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9378     { &hf_lustre_obd_dqblk_dqb_valid, 
9379       { "Dqb Valid", "lustre.obd_dqblk.dqb_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9380     { &hf_lustre_obd_dqinfo_dqi_igrace, 
9381       { "Dqi Igrace", "lustre.obd_dqinfo.dqi_igrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9382     { &hf_lustre_obd_dqinfo_dqi_bgrace, 
9383       { "Dqi Bgrace", "lustre.obd_dqinfo.dqi_bgrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9384     { &hf_lustre_obd_dqblk_padding, 
9385       { "Padding", "lustre.obd_dqblk.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9386     { &hf_lustre_obd_dqblk_dqb_curinodes, 
9387       { "Dqb Curinodes", "lustre.obd_dqblk.dqb_curinodes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9388     { &hf_lustre_obd_dqblk_dqb_bsoftlimit, 
9389       { "Dqb Bsoftlimit", "lustre.obd_dqblk.dqb_bsoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
9390     { &hf_lustre_obd_dqinfo_dqi_flags, 
9391       { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
9392     { &hf_lustre_obd_dqblk_dqb_btime, 
9393       { "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
9394     { &hf_lustre_obd_dqblk_dqb_ihardlimit, 
9395       { "Dqb Ihardlimit", "lustre.obd_dqblk.dqb_ihardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}
9396
9397   };
9398
9399
9400   static gint *ett[] = {
9401     &ett_lustre,
9402     &ett_lustre_lustre_handle_cookie,
9403     &ett_lustre_lustre_msg_v1,
9404     &ett_lustre_lustre_handle_v1,
9405     &ett_lustre_lustre_msg_v2,
9406     &ett_lustre_ptlrpc_body,
9407     &ett_lustre_lustre_handle_v2,
9408     &ett_lustre_obd_connect_data,
9409     &ett_lustre_lov_mds_md_v1,
9410     &ett_lustre_lov_ost_data_v1,
9411     &ett_lustre_obd_statfs,
9412     &ett_lustre_obd_ioobj,
9413     &ett_lustre_niobuf_remote,
9414     &ett_lustre_ost_lvb,
9415     &ett_lustre_ll_fid,
9416     &ett_lustre_mds_status_req,
9417     &ett_lustre_mds_body,
9418     &ett_lustre_obd_quotactl,
9419     &ett_lustre_obd_dqinfo,
9420     &ett_lustre_obd_dqblk,
9421     &ett_lustre_quota_adjust_qunit,
9422     &ett_lustre_mds_rec_setattr,
9423     &ett_lustre_mds_rec_create,
9424     &ett_lustre_mds_rec_link,
9425     &ett_lustre_mds_rec_unlink,
9426     &ett_lustre_mds_rec_rename,
9427     &ett_lustre_lov_desc,
9428     &ett_lustre_obd_uuid,
9429     &ett_lustre_ldlm_res_id,
9430     &ett_lustre_ldlm_extent,
9431     &ett_lustre_ldlm_inodebits,
9432     &ett_lustre_ldlm_flock,
9433     &ett_lustre_ldlm_intent_opc,
9434     &ett_lustre_ldlm_resource_desc,
9435     &ett_lustre_ldlm_res_id,
9436     &ett_lustre_ldlm_lock_desc,
9437     &ett_lustre_ldlm_resource_desc,
9438     &ett_lustre_ldlm_request,
9439     &ett_lustre_ldlm_lock_desc,
9440     &ett_lustre_lustre_handle,
9441     &ett_lustre_ldlm_reply,
9442     &ett_lustre_ldlm_lock_desc,
9443     &ett_lustre_lustre_handle,
9444     &ett_lustre_mgs_send_param,
9445     &ett_lustre_mgs_target_info,
9446     &ett_lustre_cfg_marker,
9447     &ett_lustre_llog_logid,
9448     &ett_lustre_llog_catid,
9449     &ett_lustre_llog_logid,
9450     &ett_lustre_lov_mds_md,
9451     &ett_lustre_llog_logid,
9452     &ett_lustre_llog_rec_hdr,
9453     &ett_lustre_llog_rec_tail,
9454     &ett_lustre_llog_logid_rec,
9455     &ett_lustre_llog_rec_hdr,
9456     &ett_lustre_llog_logid,
9457     &ett_lustre_llog_rec_tail,
9458     &ett_lustre_lov_mds_md,
9459     &ett_lustre_llog_rec_hdr,
9460     &ett_lustre_llog_rec_tail,
9461     &ett_lustre_llog_create_rec,
9462     &ett_lustre_llog_rec_hdr,
9463     &ett_lustre_ll_fid,
9464     &ett_lustre_llog_rec_tail,
9465     &ett_lustre_llog_orphan_rec,
9466     &ett_lustre_llog_rec_hdr,
9467     &ett_lustre_llog_rec_tail,
9468     &ett_lustre_llog_unlink_rec,
9469     &ett_lustre_llog_rec_hdr,
9470     &ett_lustre_llog_rec_tail,
9471     &ett_lustre_llog_setattr_rec,
9472     &ett_lustre_llog_rec_hdr,
9473     &ett_lustre_llog_rec_tail,
9474     &ett_lustre_llog_size_change_rec,
9475     &ett_lustre_llog_rec_hdr,
9476     &ett_lustre_ll_fid,
9477     &ett_lustre_llog_rec_tail,
9478     &ett_lustre_llog_gen,
9479     &ett_lustre_llog_gen_rec,
9480     &ett_lustre_llog_rec_hdr,
9481     &ett_lustre_llog_gen,
9482     &ett_lustre_llog_rec_tail,
9483     &ett_lustre_llog_log_hdr,
9484     &ett_lustre_llog_rec_hdr,
9485     &ett_lustre_obd_uuid,
9486     &ett_lustre_llog_rec_tail,
9487     &ett_lustre_llog_cookie,
9488     &ett_lustre_llog_logid,
9489     &ett_lustre_llogd_body,
9490     &ett_lustre_llog_logid,
9491     &ett_lustre_llogd_conn_body,
9492     &ett_lustre_llog_gen,
9493     &ett_lustre_llog_logid,
9494     &ett_lustre_llog_logid,
9495     &ett_lustre_obdo,
9496     &ett_lustre_lustre_handle,
9497     &ett_lustre_llog_cookie,
9498     &ett_lustre_ost_body,
9499     &ett_lustre_obdo,
9500     &ett_lustre_qunit_data,
9501     &ett_lustre_qunit_data_old2,
9502     &ett_lustre_qunit_data_old,
9503     &ett_lustre_ldlm_lock_flags,
9504     &ett_lustre_llog_log_llh_flags,
9505
9506   };
9507
9508   proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre");
9509   proto_register_field_array(proto_lustre, hf, array_length (hf));
9510   proto_register_subtree_array(ett, array_length(ett));
9511 }
9512
9513
9514 void proto_reg_handoff_lustre(void)
9515 {
9516   dissector_handle_t lustre_handle;
9517   lustre_handle=create_dissector_handle(dissect_lustre, proto_lustre);
9518   /* we use Lustre only if we get ptl_index = One of this code (we have removed the bulk code) */
9519   /* in LNET we test if the message is a put or not before adding an lnet.ptl_index value */
9520   dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL          , lustre_handle);
9521   dissector_add("lnet.ptl_index", CONNMGR_REQUEST_PORTAL    , lustre_handle);
9522   dissector_add("lnet.ptl_index", CONNMGR_REPLY_PORTAL      , lustre_handle);
9523   dissector_add("lnet.ptl_index", OSC_REPLY_PORTAL          , lustre_handle); 
9524   dissector_add("lnet.ptl_index", OST_IO_PORTAL             , lustre_handle); 
9525   dissector_add("lnet.ptl_index", OST_CREATE_PORTAL         , lustre_handle); 
9526   dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL          , lustre_handle); 
9527   dissector_add("lnet.ptl_index", MDS_REQUEST_PORTAL        , lustre_handle); 
9528   dissector_add("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL    , lustre_handle); 
9529   dissector_add("lnet.ptl_index", LDLM_CB_REPLY_PORTAL      , lustre_handle); 
9530   dissector_add("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle); 
9531   dissector_add("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL  , lustre_handle); 
9532   dissector_add("lnet.ptl_index", MDS_SETATTR_PORTAL        , lustre_handle); 
9533   dissector_add("lnet.ptl_index", MDS_READPAGE_PORTAL       , lustre_handle); 
9534   dissector_add("lnet.ptl_index", MGC_REPLY_PORTAL          , lustre_handle); 
9535   dissector_add("lnet.ptl_index", MGS_REQUEST_PORTAL        , lustre_handle); 
9536   dissector_add("lnet.ptl_index", MGS_REPLY_PORTAL          , lustre_handle); 
9537   dissector_add("lnet.ptl_index", OST_REQUEST_PORTAL        , lustre_handle); 
9538 }