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