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