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