Whamcloud - gitweb
LU-8776 build: Fix weird inline definitions
[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, 2016, 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 #include "lustre_dlm_flags.h"
41
42 const true_false_string lnet_flags_set_truth = { "Set", "Unset" };
43
44 /* --------------------------------------------------------------------------------------- */
45 /* def and macro to know where we are the the lustre payload */
46 #define LUSTRE_MAGIC_OFFSET 8
47 #define LUSTRE_MSG_MAGIC_V1 0x0BD00BD0
48 #define LUSTRE_MSG_MAGIC_V2 0x0BD00BD3
49
50 #define LUSTRE_BUFCOUNT_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 0 : 60)
51 #define LUSTRE_BUFCOUNT ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) \
52     ? (tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)) : ((tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF))) )
53 /* remark : BUFLENOFF don't have the same meaning if it's for v1 or v2
54  * v1 : LUSTRE_BUFLEN_OFF = offset buflen[0] - 4 bytes.
55  * v2 : LUSTRE_BUFLEN_OFF = offset buflen[0]
56  */
57 #define LUSTRE_BUFLEN_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 32 : 60)
58
59 /* LUSTRE_BUFFER_LEN(buffnum) */
60 #define LUSTRE_BUFFER_LEN(_n) (LUSTRE_BUFCOUNT <= (_n) ? 0 \
61                                : tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+\
62                                                 sizeof(guint32)*(_n)))
63
64 #define LUSTRE_REQ_REC_OFF                     1 /* normal request record offset */
65 #define LUSTRE_REPLY_REC_OFF                   1 /* normal reply record offset */
66
67 #define LUSTRE_DLM_INTENT_IT_OFF               2 /* intent lock it offset */
68 #define LUSTRE_DLM_INTENT_REC_OFF              3 /* intent lock record offset */
69 #define LUSTRE_DLM_LOCKREPLY_OFF               1 /* lockrep offset */
70 #define LUSTRE_DLM_REPLY_REC_OFF               2 /* reply record offset */
71 /* --------------------------------------------------------------------------------------- */
72
73
74 #define LUSTRE_PTLRPC_MSG_VERSION  0x00000003
75 #define LUSTRE_VERSION_MASK 0xffff0000
76 #define LUSTRE_OBD_VERSION  0x00010000
77 #define LUSTRE_MDS_VERSION  0x00020000
78 #define LUSTRE_OST_VERSION  0x00030000
79 #define LUSTRE_DLM_VERSION  0x00040000
80 #define LUSTRE_LOG_VERSION  0x00050000
81 #define LUSTRE_MGS_VERSION  0x00060000
82
83
84
85 #define LOV_MAGIC_V1      0x0BD10BD0
86 #define LOV_MAGIC         LOV_MAGIC_V1
87 #define LOV_MAGIC_JOIN_V1 0x0BD20BD0
88
89 /* defined in lustre/include/lustre/lustre_idl.h */
90 typedef enum {
91         CONNMGR_REQUEST_PORTAL = 1,
92         CONNMGR_REPLY_PORTAL = 2,
93         OSC_REQUEST_PORTAL = 3,
94         OSC_REPLY_PORTAL = 4,
95         OSC_BULK_PORTAL = 5,
96         OST_IO_PORTAL = 6,
97         OST_CREATE_PORTAL = 7,
98         OST_BULK_PORTAL = 8,
99         MDC_REQUEST_PORTAL = 9,
100         MDC_REPLY_PORTAL = 10,
101         MDC_BULK_PORTAL = 11,
102         MDS_REQUEST_PORTAL = 12,
103         MDS_REPLY_PORTAL = 13,
104         MDS_BULK_PORTAL = 14,
105         LDLM_CB_REQUEST_PORTAL = 15,
106         LDLM_CB_REPLY_PORTAL = 16,
107         LDLM_CANCEL_REQUEST_PORTAL = 17,
108         LDLM_CANCEL_REPLY_PORTAL = 18,
109         PTLBD_REQUEST_PORTAL = 19,
110         PTLBD_REPLY_PORTAL = 20,
111         PTLBD_BULK_PORTAL = 21,
112         MDS_SETATTR_PORTAL = 22,
113         MDS_READPAGE_PORTAL = 23,
114         MDS_MDS_PORTAL = 24,
115         MGC_REPLY_PORTAL = 25,
116         MGS_REQUEST_PORTAL = 26,
117         MGS_REPLY_PORTAL = 27,
118         OST_REQUEST_PORTAL = 28,
119         FLD_REQUEST_PORTAL = 29,
120         SEQ_METADATA_PORTAL = 30,
121         SEQ_DATA_PORTAL = 31,
122         SEQ_CONTROLLER_PORTAL = 32,
123         MGS_BULK_PORTAL = 33
124 } portal_index_t;
125
126 static const value_string portal_indices[] = {
127         { CONNMGR_REQUEST_PORTAL, "CONNMGR_REQUEST_PORTAL"},
128         { CONNMGR_REPLY_PORTAL , "CONNMGR_REPLY_PORTAL"},
129         { OSC_REQUEST_PORTAL , "OSC_REQUEST_PORTAL(obsolete)"},
130         { OSC_REPLY_PORTAL , "OSC_REPLY_PORTAL"},
131         { OSC_BULK_PORTAL , "OSC_BULK_PORTAL(obsolete)"},
132         { OST_IO_PORTAL , "OST_IO_PORTAL"},
133         { OST_CREATE_PORTAL , "OST_CREATE_PORTAL"},
134         { OST_BULK_PORTAL , "OST_BULK_PORTAL"},
135         { MDC_REQUEST_PORTAL , "MDC_REQUEST_PORTAL(obsolete)"},
136         { MDC_REPLY_PORTAL , "MDC_REPLY_PORTAL"},
137         { MDC_BULK_PORTAL , "MDC_BULK_PORTAL(obsolete)"},
138         { MDS_REQUEST_PORTAL , "MDS_REQUEST_PORTAL"},
139         { MDS_REPLY_PORTAL , "MDS_REPLY_PORTAL(obsolete)"},
140         { MDS_BULK_PORTAL , "MDS_BULK_PORTAL"},
141         { LDLM_CB_REQUEST_PORTAL , "LDLM_CB_REQUEST_PORTAL"},
142         { LDLM_CB_REPLY_PORTAL , "LDLM_CB_REPLY_PORTAL"},
143         { LDLM_CANCEL_REQUEST_PORTAL , "LDLM_CANCEL_REQUEST_PORTAL"},
144         { LDLM_CANCEL_REPLY_PORTAL , "LDLM_CANCEL_REPLY_PORTAL"},
145         { PTLBD_REQUEST_PORTAL , "PTLBD_REQUEST_PORTAL(obsolete)"},
146         { PTLBD_REPLY_PORTAL , "PTLBD_REPLY_PORTAL(obsolete)"},
147         { PTLBD_BULK_PORTAL , "PTLBD_BULK_PORTAL(obsolete)"},
148         { MDS_SETATTR_PORTAL , "MDS_SETATTR_PORTAL"},
149         { MDS_READPAGE_PORTAL , "MDS_READPAGE_PORTAL"},
150         { MDS_MDS_PORTAL, "MDS_MDS_PORTAL"},
151         { MGC_REPLY_PORTAL , "MGC_REPLY_PORTAL"},
152         { MGS_REQUEST_PORTAL , "MGS_REQUEST_PORTAL"},
153         { MGS_REPLY_PORTAL , "MGS_REPLY_PORTAL"},
154         { OST_REQUEST_PORTAL , "OST_REQUEST_PORTAL"},
155         { FLD_REQUEST_PORTAL , "FLD_REQUEST_PORTAL"},
156         { SEQ_METADATA_PORTAL, "SEQ_METADATA_PORTAL"},
157         { SEQ_DATA_PORTAL, "SEQ_DATA_PORTAL"},
158         { SEQ_CONTROLLER_PORTAL, "SEQ_CONTROLLER_PORTAL"},
159         { MGS_BULK_PORTAL, "MGS_BULK_PORTAL"}
160 };
161
162 typedef enum {
163   OST_REPLY      =  0,       /* reply ? */
164   OST_GETATTR    =  1,
165   OST_SETATTR    =  2,
166   OST_READ       =  3,
167   OST_WRITE      =  4,
168   OST_CREATE     =  5,
169   OST_DESTROY    =  6,
170   OST_GET_INFO   =  7,
171   OST_CONNECT    =  8,
172   OST_DISCONNECT =  9,
173   OST_PUNCH      = 10,
174   OST_OPEN       = 11,
175   OST_CLOSE      = 12,
176   OST_STATFS     = 13,
177   /*      OST_SAN_READ   = 14,    deprecated */
178   /*      OST_SAN_WRITE  = 15,    deprecated */
179   OST_SYNC       = 16,
180   OST_SET_INFO   = 17,
181   OST_QUOTACHECK = 18,
182   OST_QUOTACTL   = 19,
183   OST_QUOTA_ADJUST_QUNIT = 20,
184   OST_LADVISE = 21,
185   OST_LAST_OPC
186 } ost_cmd_t ;
187
188
189 typedef enum {
190   OBD_PING = 400,
191   OBD_LOG_CANCEL,
192   OBD_QC_CALLBACK,
193   OBD_LAST_OPC
194 } obd_cmd_t;
195 #define OBD_FIRST_OPC OBD_PING
196
197 /* must be coherent with same declaration
198  * in lustre/include/lustre/lustre_idl.h
199  */
200 typedef enum {
201         MDS_GETATTR             = 33,
202         MDS_GETATTR_NAME        = 34,
203         MDS_CLOSE               = 35,
204         MDS_REINT               = 36,
205         MDS_READPAGE            = 37,
206         MDS_CONNECT             = 38,
207         MDS_DISCONNECT          = 39,
208         MDS_GET_ROOT            = 40,
209         MDS_STATFS              = 41,
210         MDS_PIN                 = 42,
211         MDS_UNPIN               = 43,
212         MDS_SYNC                = 44,
213         MDS_DONE_WRITING        = 45,
214         MDS_SET_INFO            = 46,
215         MDS_QUOTACHECK          = 47,
216         MDS_QUOTACTL            = 48,
217         MDS_GETXATTR            = 49,
218         MDS_SETXATTR            = 50,
219         MDS_WRITEPAGE           = 51,
220         MDS_IS_SUBDIR           = 52,
221         MDS_GET_INFO            = 53,
222         MDS_HSM_STATE_GET       = 54,
223         MDS_HSM_STATE_SET       = 55,
224         MDS_HSM_ACTION          = 56,
225         MDS_HSM_PROGRESS        = 57,
226         MDS_HSM_REQUEST         = 58,
227         MDS_HSM_CT_REGISTER     = 59,
228         MDS_HSM_CT_UNREGISTER   = 60,
229         MDS_SWAP_LAYOUTS        = 61,
230         MDS_LAST_OPC
231 } mds_cmd_t;
232
233 #define IT_OPEN     0x0001
234 #define IT_CREAT    0x0002
235 #define IT_READDIR  0x0004
236 #define IT_GETATTR  0x0008
237 #define IT_LOOKUP   0x0010
238 #define IT_UNLINK   0x0020
239 #define IT_GETXATTR 0x0040
240 #define IT_EXEC     0x0080
241 #define IT_PIN      0x0100
242
243
244
245 #define MDS_FIRST_OPC MDS_GETATTR
246 #define LDLM_FIRST_OPC LDLM_ENQUEUE
247
248 typedef enum {
249   REINT_SETATTR  = 1,
250   REINT_CREATE   = 2,
251   REINT_LINK     = 3,
252   REINT_UNLINK   = 4,
253   REINT_RENAME   = 5,
254   REINT_OPEN     = 6,
255   REINT_SETXATTR = 7,
256   REINT_RMENTRY  = 8,
257   REINT_MIGRATE  = 9,
258   REINT_MAX
259 } mds_reint_t;
260
261 enum ldlm_cmd {
262   LDLM_ENQUEUE     = 101,
263   LDLM_CONVERT     = 102,
264   LDLM_CANCEL      = 103,
265   LDLM_BL_CALLBACK = 104,
266   LDLM_CP_CALLBACK = 105,
267   LDLM_GL_CALLBACK = 106,
268   LDLM_LAST_OPC
269 };
270 #define LDLM_FIRST_OPC LDLM_ENQUEUE
271
272 enum seq_rpc_opc {
273   SEQ_QUERY        = 700,
274   SEQ_LAST_OPC,
275   SEQ_FIRST_OPC    = SEQ_QUERY
276 };
277
278 enum fld_rpc_opc {
279   FLD_QUERY        = 900,
280   FLD_LAST_OPC,
281   FLD_FIRST_OPC    = FLD_QUERY
282 };
283
284 #define LDLM_ENQUEUE (101)
285 #define LDLM_CONVERT (102)
286 #define LDLM_CANCEL (103)
287 #define LDLM_BL_CALLBACK (104)
288 #define LDLM_CP_CALLBACK (105)
289 #define LDLM_GL_CALLBACK (106)
290 #define LCK_MINMODE (0)
291 #define LCK_EX (1)
292 #define LCK_PW (2)
293 #define LCK_PR (4)
294 #define LCK_CW (8)
295 #define LCK_CR (16)
296 #define LCK_NL (32)
297 #define LCK_GROUP (64)
298 #define LDLM_PLAIN (10)
299 #define LDLM_EXTENT (11)
300 #define LDLM_FLOCK (12)
301 #define LDLM_IBITS (13)
302 //#define MGS_CONNECT (250)
303 #define OBD_PING (400)
304
305 /*
306  * Opcodes for mountconf (mgs and mgc)
307  */
308 typedef enum {
309   MGS_CONNECT = 250,
310   MGS_DISCONNECT,
311   MGS_EXCEPTION,         /* node died, etc. */
312   MGS_TARGET_REG,        /* whenever target starts up */
313   MGS_TARGET_DEL,
314   MGS_SET_INFO,
315   MGS_CONFIG_READ,
316   MGS_LAST_OPC
317 } mgs_cmd_t;
318 #define MGS_FIRST_OPC MGS_CONNECT
319
320 /* llog protocol */
321 typedef enum {
322   LLOG_ORIGIN_HANDLE_CREATE       = 501,
323   LLOG_ORIGIN_HANDLE_NEXT_BLOCK   = 502,
324   LLOG_ORIGIN_HANDLE_READ_HEADER  = 503,
325   LLOG_ORIGIN_HANDLE_WRITE_REC    = 504,
326   LLOG_ORIGIN_HANDLE_CLOSE        = 505,
327   LLOG_ORIGIN_CONNECT             = 506,
328   LLOG_CATINFO                    = 507,  /* for lfs catinfo */
329   LLOG_ORIGIN_HANDLE_PREV_BLOCK   = 508,
330   LLOG_ORIGIN_HANDLE_DESTROY      = 509,  /* for destroy llog object*/
331   LLOG_LAST_OPC
332 } llog_cmd_t;
333
334 #define LLOG_FIRST_OPC LLOG_ORIGIN_HANDLE_CREATE
335 /*flag for the LLOG*/
336 #define LLOG_OP_MAGIC 0x10600000
337 #define LLOG_OP_MASK  0xfff00000
338
339 typedef enum {
340   LLOG_PAD_MAGIC   = LLOG_OP_MAGIC | 0x00000,
341   OST_SZ_REC       = LLOG_OP_MAGIC | 0x00f00,
342   OST_RAID1_REC    = LLOG_OP_MAGIC | 0x01000,
343   MDS_UNLINK_REC   = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_UNLINK,
344   MDS_SETATTR_REC  = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_SETATTR,
345   OBD_CFG_REC      = LLOG_OP_MAGIC | 0x20000,
346   PTL_CFG_REC      = LLOG_OP_MAGIC | 0x30000, /* obsolete */
347   LLOG_GEN_REC     = LLOG_OP_MAGIC | 0x40000,
348   LLOG_JOIN_REC    = LLOG_OP_MAGIC | 0x50000, /* obsolete */
349   LLOG_HDR_MAGIC   = LLOG_OP_MAGIC | 0x45539,
350   LLOG_LOGID_MAGIC = LLOG_OP_MAGIC | 0x4553b,
351 } llog_op_type;
352
353 /* LLOG flag */
354 /*defined in lustre/include/lustre/lustre_idl.h*/
355 #define LLOG_F_ZAP_WHEN_EMPTY   0x1
356 #define LLOG_F_IS_CAT           0x2
357 #define LLOG_F_IS_PLAIN         0x4
358
359 #define PTL_RPC_MSG_REQUEST 4711
360 #define PTL_RPC_MSG_ERR 4712
361 #define PTL_RPC_MSG_REPLY 4713
362
363
364 /* Ett declarations */
365 static gint ett_lustre_llog_log_llh_flags = -1 ;
366 static gint ett_lustre = -1;
367 static gint ett_lustre_lustre_handle_cookie = -1;
368 static gint ett_lustre_lustre_msg_v1 = -1;
369 static gint ett_lustre_lustre_handle_v1 = -1;
370 static gint ett_lustre_lustre_msg_v2 = -1;
371 static gint ett_lustre_ptlrpc_body = -1;
372 static gint ett_lustre_lustre_handle_v2 = -1;
373 static gint ett_lustre_obd_connect_data = -1;
374 static gint ett_lustre_lov_mds_md_v1 = -1;
375 static gint ett_lustre_lov_ost_data_v1 = -1;
376 static gint ett_lustre_obd_statfs = -1;
377 static gint ett_lustre_obd_ioobj = -1;
378 static gint ett_lustre_niobuf_remote = -1;
379 static gint ett_lustre_ost_lvb = -1;
380 static gint ett_lustre_ll_fid = -1;
381 static gint ett_lustre_mdt_body = -1;
382 static gint ett_lustre_mdt_rec_setattr = -1;
383 static gint ett_lustre_mdt_rec_create = -1;
384 static gint ett_lustre_mdt_rec_link = -1;
385 static gint ett_lustre_mdt_rec_unlink = -1;
386 static gint ett_lustre_mdt_rec_rename = -1;
387 static gint ett_lustre_mdt_rec_setxattr = -1;
388 static gint ett_lustre_obd_quotactl = -1;
389 static gint ett_lustre_obd_dqinfo = -1;
390 static gint ett_lustre_obd_dqblk = -1;
391 static gint ett_lustre_quota_adjust_qunit = -1;
392 static gint ett_lustre_lov_desc = -1;
393 static gint ett_lustre_obd_uuid = -1;
394 static gint ett_lustre_ldlm_res_id = -1;
395 static gint ett_lustre_ldlm_extent = -1;
396 static gint ett_lustre_ldlm_inodebits = -1;
397 static gint ett_lustre_ldlm_flock = -1;
398 static gint ett_lustre_ldlm_intent_opc = -1;
399 static gint ett_lustre_ldlm_resource_desc = -1;
400 static gint ett_lustre_ldlm_lock_desc = -1;
401 static gint ett_lustre_ldlm_request = -1;
402 static gint ett_lustre_lustre_handle = -1;
403 static gint ett_lustre_ldlm_reply = -1;
404 static gint ett_lustre_mgs_send_param = -1;
405 static gint ett_lustre_mgs_target_info = -1;
406 static gint ett_lustre_mgs_config_body = -1;
407 static gint ett_lustre_mgs_config_res = -1;
408 static gint ett_lustre_cfg_marker = -1;
409 static gint ett_lustre_llog_catid = -1;
410 static gint ett_lustre_llog_rec_hdr = -1;
411 static gint ett_lustre_llog_logid_rec = -1;
412 static gint ett_lustre_llog_logid = -1;
413 static gint ett_lustre_llog_rec_tail = -1;
414 static gint ett_lustre_lov_mds_md = -1;
415 static gint ett_lustre_llog_unlink_rec = -1;
416 static gint ett_lustre_llog_setattr_rec = -1;
417 static gint ett_lustre_llog_size_change_rec = -1;
418 static gint ett_lustre_llog_gen_rec = -1;
419 static gint ett_lustre_llog_log_hdr = -1;
420 static gint ett_lustre_llog_cookie = -1;
421 static gint ett_lustre_llogd_body = -1;
422 static gint ett_lustre_llogd_conn_body = -1;
423 static gint ett_lustre_llog_gen = -1;
424 static gint ett_lustre_obdo = -1;
425 static gint ett_lustre_ost_body = -1;
426 static gint ett_lustre_qunit_data = -1;
427 static gint ett_lustre_qunit_data_old2 = -1;
428 static gint ett_lustre_qunit_data_old = -1;
429 static gint ett_lustre_ldlm_lock_flags = -1 ;
430 static gint ett_lustre_seq_range = -1;
431 static gint ett_lustre_fld_range = -1;
432 static gint ett_lustre_mdt_ioepoch = -1;
433 static gint ett_lustre_capa = -1;
434 static gint ett_lustre_acl = -1;
435 static gint ett_lustre_ladvise = -1;
436
437 /* -----------------------------------------------*/
438 /* Header field declarations */
439 static int hf_lustre_ptlrpc_body_pb = -1 ;
440 static int hf_lustre_ost_body = -1 ;
441 static int hf_lustre_obd_statfs = -1 ;
442 static int hf_lustre_obd_quotactl = -1 ;
443 static int hf_lustre_quota_adjust_qunit = -1 ;
444 static int hf_lustre_extra_padding = -1 ;
445 static int hf_lustre_ldlm_reply = -1 ;
446 static int hf_lustre_ldlm_request = -1 ;
447 static int hf_lustre_obd_uuid = -1 ;
448 static int hf_lustre_obd_connect_data = -1 ;
449 static int hf_lustre_ldlm_intent = -1;
450 static int hf_lustre_obd_ioobj = -1 ;
451 static int hf_lustre_niobuf_remote = -1 ;
452 static int hf_lustre_ost_key = -1 ;
453 static int hf_lustre_nio= -1 ;
454 static int hf_lustre_ost_val= -1;
455 static int hf_lustre_llogd_body = -1;
456 static int hf_lustre_llogd_log_hdr= -1;
457 static int hf_lustre_llog_logid_rec =-1 ;
458 static int hf_lustre_llogd_chunk= -1;
459 static int hf_lustre_llogd_keyword= -1;
460 static int hf_lustre_llogd_client= -1;
461 static int hf_lustre_llogd_name= -1;
462
463 static int hf_lustre_mds_xattr_name = -1;
464 static int hf_lustre_lov_mds_md_v1= -1;
465 static int hf_lustre_llog_cookie= -1;
466 static int hf_lustre_mds_md_data= -1;
467 static int hf_lustre_mds_reint_opcode= -1;
468 static int hf_lustre_mds_xattr_eadata = -1;
469
470 static int hf_lustre_reint_name= -1;
471 static int hf_lustre_reint_old_name= -1;
472 static int hf_lustre_reint_new_name= -1;
473
474 static int hf_lustre_mgs_target_info = -1 ;
475 static int hf_lustre_mgs_send_param = -1;
476
477 static int hf_lustre_mgs_config_body = -1;
478 static int hf_lustre_mgs_config_body_name = -1;
479 static int hf_lustre_mgs_config_body_offset = -1;
480 static int hf_lustre_mgs_config_body_type = -1;
481 static int hf_lustre_mgs_config_body_reserved = -1;
482 static int hf_lustre_mgs_config_body_bits = -1;
483 static int hf_lustre_mgs_config_body_units = -1;
484
485 static int hf_lustre_mgs_config_res = -1;
486 static int hf_lustre_mgs_config_res_offset = -1;
487 static int hf_lustre_mgs_config_res_size = -1;
488
489 static int hf_lustre_ost_lvb = -1 ;
490
491 #define hf_lustre_ldlm_ast_discard_data hf_lustre_ldlm_fl_ast_discard_data
492
493 static int hf_lustre_mdt_body = -1 ;
494 static int hf_lustre_mdt_body_fid1 = -1;
495 static int hf_lustre_mdt_body_fid2 = -1;
496 static int hf_lustre_mdt_body_handle = -1;
497 static int hf_lustre_mdt_body_valid = -1;
498 static int hf_lustre_mdt_body_size = -1;
499 static int hf_lustre_mdt_body_mtime = -1;
500 static int hf_lustre_mdt_body_atime = -1;
501 static int hf_lustre_mdt_body_ctime = -1;
502 static int hf_lustre_mdt_body_blocks = -1;
503 static int hf_lustre_mdt_body_ioepoch = -1;
504 static int hf_lustre_mdt_body_ino = -1;
505 static int hf_lustre_mdt_body_fsuid = -1;
506 static int hf_lustre_mdt_body_fsgid = -1;
507 static int hf_lustre_mdt_body_capability = -1;
508 static int hf_lustre_mdt_body_mode = -1;
509 static int hf_lustre_mdt_body_uid = -1;
510 static int hf_lustre_mdt_body_gid = -1;
511 static int hf_lustre_mdt_body_flags = -1;
512 static int hf_lustre_mdt_body_rdev = -1;
513 static int hf_lustre_mdt_body_nlink = -1;
514 static int hf_lustre_mdt_body_generation = -1;
515 static int hf_lustre_mdt_body_suppgid = -1;
516 static int hf_lustre_mdt_body_eadatasize = -1;
517 static int hf_lustre_mdt_body_aclsize = -1;
518 static int hf_lustre_mdt_body_max_mdsize = -1;
519 static int hf_lustre_mdt_body_max_cookiesize = -1;
520 static int hf_lustre_mdt_body_uid_h = -1;
521 static int hf_lustre_mdt_body_gid_h = -1;
522 static int hf_lustre_mdt_body_padding_5 = -1;
523 static int hf_lustre_mdt_body_padding_6 = -1;
524 static int hf_lustre_mdt_body_padding_7 = -1;
525 static int hf_lustre_mdt_body_padding_8 = -1;
526 static int hf_lustre_mdt_body_padding_9 = -1;
527 static int hf_lustre_mdt_body_padding_10 = -1;
528
529 static int hf_lustre_mdt_rec_setattr = -1 ;
530 static int hf_lustre_mdt_rec_setattr_sa_opcode = -1;
531 static int hf_lustre_mdt_rec_setattr_sa_cap = -1;
532 static int hf_lustre_mdt_rec_setattr_sa_fsuid = -1;
533 static int hf_lustre_mdt_rec_setattr_sa_fsuid_h = -1;
534 static int hf_lustre_mdt_rec_setattr_sa_fsgid = -1;
535 static int hf_lustre_mdt_rec_setattr_sa_fsgid_h = -1;
536 static int hf_lustre_mdt_rec_setattr_sa_suppgid = -1;
537 static int hf_lustre_mdt_rec_setattr_sa_suppgid_h = -1;
538 static int hf_lustre_mdt_rec_setattr_sa_padding_1 = -1;
539 static int hf_lustre_mdt_rec_setattr_sa_padding_1_h = -1;
540 static int hf_lustre_mdt_rec_setattr_sa_fid = -1;
541 static int hf_lustre_mdt_rec_setattr_sa_valid = -1;
542 static int hf_lustre_mdt_rec_setattr_sa_uid = -1;
543 static int hf_lustre_mdt_rec_setattr_sa_gid = -1;
544 static int hf_lustre_mdt_rec_setattr_sa_size = -1;
545 static int hf_lustre_mdt_rec_setattr_sa_blocks = -1;
546 static int hf_lustre_mdt_rec_setattr_sa_mtime = -1;
547 static int hf_lustre_mdt_rec_setattr_sa_atime = -1;
548 static int hf_lustre_mdt_rec_setattr_sa_ctime = -1;
549 static int hf_lustre_mdt_rec_setattr_sa_attr_flags = -1;
550 static int hf_lustre_mdt_rec_setattr_sa_mode = -1;
551 static int hf_lustre_mdt_rec_setattr_sa_padding_2 = -1;
552 static int hf_lustre_mdt_rec_setattr_sa_padding_3 = -1;
553 static int hf_lustre_mdt_rec_setattr_sa_padding_4 = -1;
554 static int hf_lustre_mdt_rec_setattr_sa_padding_5 = -1;
555
556 static int hf_lustre_mdt_rec_create = -1 ;
557 static int hf_lustre_mdt_rec_create_cr_opcode = -1;
558 static int hf_lustre_mdt_rec_create_cr_cap = -1;
559 static int hf_lustre_mdt_rec_create_cr_fsuid = -1;
560 static int hf_lustre_mdt_rec_create_cr_fsuid_h = -1;
561 static int hf_lustre_mdt_rec_create_cr_fsgid = -1;
562 static int hf_lustre_mdt_rec_create_cr_fsgid_h = -1;
563 static int hf_lustre_mdt_rec_create_cr_suppgid1 = -1;
564 static int hf_lustre_mdt_rec_create_cr_suppgid1_h = -1;
565 static int hf_lustre_mdt_rec_create_cr_suppgid2 = -1;
566 static int hf_lustre_mdt_rec_create_cr_suppgid2_h = -1;
567 static int hf_lustre_mdt_rec_create_cr_fid1 = -1;
568 static int hf_lustre_mdt_rec_create_cr_fid2 = -1;
569 static int hf_lustre_mdt_rec_create_cr_old_handle = -1;
570 static int hf_lustre_mdt_rec_create_cr_time = -1;
571 static int hf_lustre_mdt_rec_create_cr_rdev = -1;
572 static int hf_lustre_mdt_rec_create_cr_ioepoch = -1;
573 static int hf_lustre_mdt_rec_create_cr_padding_1 = -1;
574 static int hf_lustre_mdt_rec_create_cr_mode = -1;
575 static int hf_lustre_mdt_rec_create_cr_bias = -1;
576 static int hf_lustre_mdt_rec_create_cr_flags_l = -1;
577 static int hf_lustre_mdt_rec_create_cr_flags_h = -1;
578 static int hf_lustre_mdt_rec_create_cr_umask = -1;
579 static int hf_lustre_mdt_rec_create_cr_padding_4 = -1;
580
581 static int hf_lustre_mdt_rec_link = -1 ;
582 static int hf_lustre_mdt_rec_link_lk_opcode = -1;
583 static int hf_lustre_mdt_rec_link_lk_cap = -1;
584 static int hf_lustre_mdt_rec_link_lk_fsuid = -1;
585 static int hf_lustre_mdt_rec_link_lk_fsuid_h = -1;
586 static int hf_lustre_mdt_rec_link_lk_fsgid = -1;
587 static int hf_lustre_mdt_rec_link_lk_fsgid_h = -1;
588 static int hf_lustre_mdt_rec_link_lk_suppgid1 = -1;
589 static int hf_lustre_mdt_rec_link_lk_suppgid1_h = -1;
590 static int hf_lustre_mdt_rec_link_lk_suppgid2 = -1;
591 static int hf_lustre_mdt_rec_link_lk_suppgid2_h = -1;
592 static int hf_lustre_mdt_rec_link_lk_fid1 = -1;
593 static int hf_lustre_mdt_rec_link_lk_fid2 = -1;
594 static int hf_lustre_mdt_rec_link_lk_time = -1;
595 static int hf_lustre_mdt_rec_link_lk_padding_1 = -1;
596 static int hf_lustre_mdt_rec_link_lk_padding_2 = -1;
597 static int hf_lustre_mdt_rec_link_lk_padding_3 = -1;
598 static int hf_lustre_mdt_rec_link_lk_padding_4 = -1;
599 static int hf_lustre_mdt_rec_link_lk_bias = -1;
600 static int hf_lustre_mdt_rec_link_lk_padding_5 = -1;
601 static int hf_lustre_mdt_rec_link_lk_padding_6 = -1;
602 static int hf_lustre_mdt_rec_link_lk_padding_7 = -1;
603 static int hf_lustre_mdt_rec_link_lk_padding_8 = -1;
604 static int hf_lustre_mdt_rec_link_lk_padding_9 = -1;
605
606 static int hf_lustre_mdt_rec_unlink = -1 ;
607 static int hf_lustre_mdt_rec_unlink_ul_opcode = -1;
608 static int hf_lustre_mdt_rec_unlink_ul_cap = -1;
609 static int hf_lustre_mdt_rec_unlink_ul_fsuid = -1;
610 static int hf_lustre_mdt_rec_unlink_ul_fsuid_h = -1;
611 static int hf_lustre_mdt_rec_unlink_ul_fsgid = -1;
612 static int hf_lustre_mdt_rec_unlink_ul_fsgid_h = -1;
613 static int hf_lustre_mdt_rec_unlink_ul_suppgid1 = -1;
614 static int hf_lustre_mdt_rec_unlink_ul_suppgid1_h = -1;
615 static int hf_lustre_mdt_rec_unlink_ul_suppgid2 = -1;
616 static int hf_lustre_mdt_rec_unlink_ul_suppgid2_h = -1;
617 static int hf_lustre_mdt_rec_unlink_ul_fid1 = -1;
618 static int hf_lustre_mdt_rec_unlink_ul_fid2 = -1;
619 static int hf_lustre_mdt_rec_unlink_ul_time = -1;
620 static int hf_lustre_mdt_rec_unlink_ul_padding_2 = -1;
621 static int hf_lustre_mdt_rec_unlink_ul_padding_3 = -1;
622 static int hf_lustre_mdt_rec_unlink_ul_padding_4 = -1;
623 static int hf_lustre_mdt_rec_unlink_ul_padding_5 = -1;
624 static int hf_lustre_mdt_rec_unlink_ul_bias = -1;
625 static int hf_lustre_mdt_rec_unlink_ul_mode = -1;
626 static int hf_lustre_mdt_rec_unlink_ul_padding_6 = -1;
627 static int hf_lustre_mdt_rec_unlink_ul_padding_7 = -1;
628 static int hf_lustre_mdt_rec_unlink_ul_padding_8 = -1;
629 static int hf_lustre_mdt_rec_unlink_ul_padding_9 = -1;
630
631 static int hf_lustre_mdt_rec_rename = -1 ;
632 static int hf_lustre_mdt_rec_rename_rn_opcode = -1;
633 static int hf_lustre_mdt_rec_rename_rn_cap = -1;
634 static int hf_lustre_mdt_rec_rename_rn_fsuid = -1;
635 static int hf_lustre_mdt_rec_rename_rn_fsuid_h = -1;
636 static int hf_lustre_mdt_rec_rename_rn_fsgid = -1;
637 static int hf_lustre_mdt_rec_rename_rn_fsgid_h = -1;
638 static int hf_lustre_mdt_rec_rename_rn_suppgid1 = -1;
639 static int hf_lustre_mdt_rec_rename_rn_suppgid1_h = -1;
640 static int hf_lustre_mdt_rec_rename_rn_suppgid2 = -1;
641 static int hf_lustre_mdt_rec_rename_rn_suppgid2_h = -1;
642 static int hf_lustre_mdt_rec_rename_rn_fid1 = -1;
643 static int hf_lustre_mdt_rec_rename_rn_fid2 = -1;
644 static int hf_lustre_mdt_rec_rename_rn_time = -1;
645 static int hf_lustre_mdt_rec_rename_rn_padding_1 = -1;
646 static int hf_lustre_mdt_rec_rename_rn_padding_2 = -1;
647 static int hf_lustre_mdt_rec_rename_rn_padding_3 = -1;
648 static int hf_lustre_mdt_rec_rename_rn_padding_4 = -1;
649 static int hf_lustre_mdt_rec_rename_rn_bias = -1;
650 static int hf_lustre_mdt_rec_rename_rn_mode = -1;
651 static int hf_lustre_mdt_rec_rename_rn_padding_5 = -1;
652 static int hf_lustre_mdt_rec_rename_rn_padding_6 = -1;
653 static int hf_lustre_mdt_rec_rename_rn_padding_7 = -1;
654 static int hf_lustre_mdt_rec_rename_rn_padding_8 = -1;
655
656 static int hf_lustre_mdt_rec_setxattr = -1 ;
657 static int hf_lustre_mdt_rec_setxattr_sx_opcode = -1;
658 static int hf_lustre_mdt_rec_setxattr_sx_cap = -1;
659 static int hf_lustre_mdt_rec_setxattr_sx_fsuid = -1;
660 static int hf_lustre_mdt_rec_setxattr_sx_fsuid_h = -1;
661 static int hf_lustre_mdt_rec_setxattr_sx_fsgid = -1;
662 static int hf_lustre_mdt_rec_setxattr_sx_fsgid_h = -1;
663 static int hf_lustre_mdt_rec_setxattr_sx_suppgid1 = -1;
664 static int hf_lustre_mdt_rec_setxattr_sx_suppgid1_h = -1;
665 static int hf_lustre_mdt_rec_setxattr_sx_suppgid2 = -1;
666 static int hf_lustre_mdt_rec_setxattr_sx_suppgid2_h = -1;
667 static int hf_lustre_mdt_rec_setxattr_sx_fid = -1;
668 static int hf_lustre_mdt_rec_setxattr_sx_padding_1 = -1;
669 static int hf_lustre_mdt_rec_setxattr_sx_padding_2 = -1;
670 static int hf_lustre_mdt_rec_setxattr_sx_padding_3 = -1;
671 static int hf_lustre_mdt_rec_setxattr_sx_valid = -1;
672 static int hf_lustre_mdt_rec_setxattr_sx_time = -1;
673 static int hf_lustre_mdt_rec_setxattr_sx_padding_5 = -1;
674 static int hf_lustre_mdt_rec_setxattr_sx_padding_6 = -1;
675 static int hf_lustre_mdt_rec_setxattr_sx_padding_7 = -1;
676 static int hf_lustre_mdt_rec_setxattr_sx_size = -1;
677 static int hf_lustre_mdt_rec_setxattr_sx_flags = -1;
678 static int hf_lustre_mdt_rec_setxattr_sx_padding_8 = -1;
679 static int hf_lustre_mdt_rec_setxattr_sx_padding_9 = -1;
680 static int hf_lustre_mdt_rec_setxattr_sx_padding_10 = -1;
681 static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -1;
682
683 static int hf_lustre_seq_opc = -1;
684 static int hf_lustre_seq_range = -1;
685 static int hf_lustre_seq_range_start = -1;
686 static int hf_lustre_seq_range_end = -1;
687 static int hf_lustre_seq_range_index = -1;
688 static int hf_lustre_seq_range_flags = -1;
689
690 static int hf_lustre_fld_opc = -1;
691 static int hf_lustre_fld_range = -1;
692 static int hf_lustre_fld_range_start = -1;
693 static int hf_lustre_fld_range_end = -1;
694 static int hf_lustre_fld_range_index = -1;
695 static int hf_lustre_fld_range_flags = -1;
696
697 static int hf_lustre_mdt_ioepoch = -1;
698 static int hf_lustre_mdt_ioepoch_handle = -1;
699 static int hf_lustre_mdt_ioepoch_ioepoch = -1;
700 static int hf_lustre_mdt_ioepoch_flags = -1;
701 static int hf_lustre_mdt_ioepoch_padding = -1;
702
703 static int hf_lustre_capa = -1;
704 static int hf_lustre_capa_fid = -1;
705 static int hf_lustre_capa_opc = -1;
706 static int hf_lustre_capa_uid = -1;
707 static int hf_lustre_capa_gid = -1;
708 static int hf_lustre_capa_flags = -1;
709 static int hf_lustre_capa_keyid = -1;
710 static int hf_lustre_capa_timeout = -1;
711 static int hf_lustre_capa_expiry = -1;
712 static int hf_lustre_capa_hmac = -1;
713
714 static int hf_lustre_acl = -1;
715
716 static int hf_lustre_lustre_handle_cookie = -1;
717 static int hf_lustre_ptlrpc_body_pb_last_committed = -1;
718 static int hf_lustre_ptlrpc_body_pb_version = -1;
719 static int hf_lustre_lustre_msg_v1_lm_bufcount = -1;
720 static int hf_lustre_obd_ioobj_ioo_id = -1;
721 static int hf_lustre_ptlrpc_body_pb_slv = -1;
722 static int hf_lustre_ptlrpc_body_pb_pre_version = -1;
723 static int hf_lustre_ptlrpc_body_pb_padding = -1;
724 static int hf_lustre_ptlrpc_body_pb_jobid = -1;
725 static int hf_lustre_lustre_msg_v1_lm_handle = -1;
726 static int hf_lustre_ost_lvb_lvb_atime = -1;
727 static int hf_lustre_ptlrpc_body_pb_timeout = -1;
728 static int hf_lustre_obd_statfs_os_bavail = -1;
729 static int hf_lustre_obd_statfs_os_bsize = -1;
730 static int hf_lustre_lustre_msg_v2_lm_repsize = -1;
731 static int hf_lustre_lov_mds_md_v1_lmm_stripe_size = -1;
732 static int hf_lustre_lustre_msg_v1_lm_last_xid = -1;
733 static int hf_lustre_ll_fid_f_type = -1;
734 static int hf_lustre_lustre_msg_v2_lm_cksum = -1;
735 static int hf_lustre_lustre_msg_v2_lm_buflens = -1;
736 static int hf_lustre_lustre_msg_v1_lm_status = -1;
737 static int hf_lustre_lustre_msg_v1_lm_type = -1;
738 static int hf_lustre_niobuf_remote_len = -1;
739 static int hf_lustre_lov_mds_md_v1_lmm_magic = -1;
740 static int hf_lustre_ptlrpc_body_pb_op_flags = -1;
741 static int hf_lustre_ost_lvb_lvb_ctime = -1;
742 static int hf_lustre_ptlrpc_body_pb_type = -1;
743 static int hf_lustre_obd_connect_data_ocd_nllg = -1;
744 static int hf_lustre_obd_connect_data_ocd_nllu = -1;
745 static int hf_lustre_ll_fid_generation = -1;
746 static int hf_lustre_ost_lvb_lvb_mtime = -1;
747 static int hf_lustre_obd_connect_data_ocd_ibits_known = -1;
748 static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1;
749 static int hf_lustre_ptlrpc_body_pb_flags = -1;
750 static int hf_lustre_obd_statfs_os_spare4 = -1;
751 static int hf_lustre_obd_connect_data_ocd_group = -1;
752 static int hf_lustre_lov_ost_data_v1_l_object_seq = -1;
753 static int hf_lustre_lov_mds_md_v1_lmm_object_seq = -1;
754 static int hf_lustre_obd_connect_data_ocd_brw_size = -1;
755 static int hf_lustre_ptlrpc_body_pb_limit = -1;
756 static int hf_lustre_obd_statfs_os_maxbytes = -1;
757 static int hf_lustre_obd_statfs_os_spare5 = -1;
758 static int hf_lustre_lustre_msg_v2_lm_flags = -1;
759 static int hf_lustre_obd_statfs_os_ffree = -1;
760 static int hf_lustre_obd_statfs_os_files = -1;
761 static int hf_lustre_lov_mds_md_v1_lmm_stripe_count = -1;
762 static int hf_lustre_lustre_msg_v1_lm_flags = -1;
763 static int hf_lustre_lustre_msg_v1_lm_last_committed = -1;
764 static int hf_lustre_obd_statfs_os_spare9 = -1;
765 static int hf_lustre_obd_connect_data_ocd_index = -1;
766 static int hf_lustre_opnum = -1;
767 static int hf_lustre_lustre_msg_v1_lm_buflens = -1;
768 static int hf_lustre_obd_statfs_os_spare1 = -1;
769 static int hf_lustre_obd_statfs_os_spare8 = -1;
770 static int hf_lustre_lustre_msg_v1_lm_conn_cnt = -1;
771 static int hf_lustre_ptlrpc_body_pb_transno = -1;
772 static int hf_lustre_ptlrpc_body_pb_service_time = -1;
773 static int hf_lustre_ptlrpc_body_pb_conn_cnt = -1;
774 static int hf_lustre_ptlrpc_body_pb_opc = -1;
775 static int hf_lustre_obd_connect_data_ocd_connect_flags = -1;
776 static int hf_lustre_lov_ost_data_v1_l_object_id = -1;
777 static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1;
778 static int hf_lustre_obd_statfs_os_bfree = -1;
779 static int hf_lustre_obd_connect_data_ocd_version = -1;
780 static int hf_lustre_lov_mds_md_v1_lmm_objects = -1;
781 static int hf_lustre_obd_statfs_os_namelen = -1;
782 static int hf_lustre_obd_statfs_os_blocks = -1;
783 static int hf_lustre_lustre_msg_v2_lm_secflvr = -1;
784 static int hf_lustre_lustre_msg_v1_lm_transno = -1;
785 static int hf_lustre_lov_mds_md_v1_lmm_pattern = -1;
786 static int hf_lustre_lustre_msg_v1_lm_opc = -1;
787 static int hf_lustre_obd_connect_data_ocd_grant = -1;
788 static int hf_lustre_obd_ioobj_ioo_bufcnt = -1;
789 static int hf_lustre_lustre_msg_v1_lm_version = -1;
790 static int hf_lustre_obd_statfs_os_spare7 = -1;
791 static int hf_lustre_obd_statfs_os_fsid = -1;
792 static int hf_lustre_obd_connect_data_ocd_cksum_types = -1;
793 static int hf_lustre_ost_lvb_lvb_size = -1;
794 static int hf_lustre_obd_statfs_os_type = -1;
795 static int hf_lustre_obd_statfs_os_spare6 = -1;
796 static int hf_lustre_obd_statfs_os_state = -1;
797 static int hf_lustre_obd_statfs_os_spare3 = -1;
798 static int hf_lustre_lustre_msg_v2_lm_magic = -1;
799 static int hf_lustre_lov_mds_md_v1_lmm_object_id = -1;
800 static int hf_lustre_ptlrpc_body_pb_last_seen = -1;
801 static int hf_lustre_obd_ioobj_ioo_max_brw = -1;
802 static int hf_lustre_ptlrpc_body_pb_last_xid = -1;
803 static int hf_lustre_ptlrpc_body_pb_status = -1;
804 static int hf_lustre_niobuf_remote_flags = -1;
805 static int hf_lustre_ll_fid_id = -1;
806 static int hf_lustre_ost_lvb_lvb_blocks = -1;
807 static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1;
808 static int hf_lustre_obd_connect_data_padding1 = -1;
809 static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1;
810 static int hf_lustre_obd_connect_data_padding2 = -1;
811 static int hf_lustre_obd_ioobj_ioo_seq = -1;
812 static int hf_lustre_niobuf_remote_offset=-1;
813 static int hf_lustre_obd_statfs_os_spare2 = -1;
814 static int hf_lustre_lustre_msg_v2_lm_bufcount = -1;
815 static int hf_lustre_ptlrpc_body_pb_handle = -1;
816 static int hf_lustre_obd_connect_data_ocd_transno = -1;
817 static int hf_lustre_lustre_msg_v1_lm_magic = -1;
818 static int hf_lustre_llog_unlink_rec_lur_tail = -1;
819 static int hf_lustre_llog_size_change_rec_lsc_io_epoch = -1;
820 static int hf_lustre_mgs_target_info_mti_flags = -1;
821 static int hf_lustre_ldlm_reply_lock_policy_res1 = -1;
822 static int hf_lustre_llogd_body_lgd_len = -1;
823 static int hf_lustre_qunit_data_old_qd_id = -1;
824 static int hf_lustre_llog_logid_rec_padding1 = -1;
825 static int hf_lustre_quota_adjust_qunit_padding1 = -1;
826 static int hf_lustre_llog_size_change_rec_lsc_fid = -1;
827 static int hf_lustre_llog_rec_hdr_padding = -1;
828 static int hf_lustre_obdo_o_nlink = -1;
829 static int hf_lustre_ldlm_extent_gid = -1;
830 static int hf_lustre_obdo_o_uid = -1;
831 static int hf_lustre_obdo_o_valid = -1;
832 static int hf_lustre_ldlm_reply_lock_flags = -1;
833 static int hf_lustre_obdo_o_misc = -1;
834
835 static int hf_lustre_ldlm_request_lock_handle = -1;
836 static int hf_lustre_llog_logid_lgl_oid = -1;
837 static int hf_lustre_ldlm_inodebits_bits = -1;
838 static int hf_lustre_llog_log_hdr_llh_count = -1;
839 static int hf_lustre_llog_gen_rec_lgr_tail = -1;
840 static int hf_lustre_llog_catid_lci_padding3 = -1;
841 static int hf_lustre_qunit_data_qd_qunit = -1;
842 static int hf_lustre_llog_setattr_rec_padding = -1;
843 static int hf_lustre_llog_cookie_lgc_lgl = -1;
844 static int hf_lustre_obd_quotactl_qc_dqinfo = -1;
845 static int hf_lustre_llog_log_hdr_llh_bitmap = -1;
846 static int hf_lustre_obd_quotactl_qc_stat = -1;
847 static int hf_lustre_qunit_data_old2_qd_id = -1;
848 static int hf_lustre_llog_logid_rec_padding2 = -1;
849 static int hf_lustre_llog_logid_rec_padding5 = -1;
850 static int hf_lustre_ldlm_intent_opc = -1;
851 static int hf_lustre_llog_rec_hdr_lrh_type = -1;
852 static int hf_lustre_llog_rec_hdr_lrh_len = -1;
853 static int hf_lustre_llog_setattr_rec_lsr_uid = -1;
854 static int hf_lustre_lov_desc_ld_padding_1 = -1;
855 static int hf_lustre_obdo_o_padding_4 = -1;
856 static int hf_lustre_mgs_target_info_padding = -1;
857 static int hf_lustre_obd_quotactl_qc_dqblk = -1;
858 static int hf_lustre_llogd_conn_body_lgdc_gen = -1;
859 static int hf_lustre_llog_log_hdr_llh_tail = -1;
860 static int hf_lustre_obdo_o_size = -1;
861 static int hf_lustre_ldlm_extent_start = -1;
862 static int hf_lustre_llog_size_change_rec_lsc_hdr = -1;
863 static int hf_lustre_llog_logid_lgl_oseq = -1;
864 static int hf_lustre_llog_cookie_lgc_padding = -1;
865 static int hf_lustre_qunit_data_old_qd_type = -1;
866 static int hf_lustre_ldlm_flock_blocking_export = -1;
867 static int hf_lustre_lov_desc_ld_pattern = -1;
868 static int hf_lustre_qunit_data_qd_id = -1;
869 static int hf_lustre_mgs_target_info_mti_fsname = -1;
870 static int hf_lustre_ldlm_request_lock_flags = -1;
871 static int hf_lustre_obdo_o_mode = -1;
872 static int hf_lustre_mgs_target_info_mti_svname = -1;
873 static int hf_lustre_llogd_body_lgd_logid = -1;
874 static int hf_lustre_llog_log_hdr_llh_size = -1;
875 static int hf_lustre_obdo_o_handle = -1;
876 static int hf_lustre_obdo_o_atime = -1;
877 static int hf_lustre_quota_adjust_qunit_qaq_id = -1;
878 static int hf_lustre_ldlm_lock_desc_l_policy_data = -1;
879 static int hf_lustre_obd_quotactl_qc_cmd = -1;
880 static int hf_lustre_qunit_data_padding = -1;
881 static int hf_lustre_quota_adjust_qunit_qaq_flags = -1;
882 static int hf_lustre_ldlm_lock_desc_l_granted_mode = -1;
883 static int hf_lustre_obdo_o_seq = -1;
884 static int hf_lustre_obdo_o_gid = -1;
885 static int hf_lustre_llog_catid_lci_logid = -1;
886 static int hf_lustre_llog_rec_tail_lrt_index = -1;
887 static int hf_lustre_lov_desc_ld_default_stripe_count = -1;
888 static int hf_lustre_ldlm_resource_desc_lr_padding = -1;
889 static int hf_lustre_cfg_marker_cm_vers = -1;
890 static int hf_lustre_llog_unlink_rec_lur_hdr = -1;
891 static int hf_lustre_llogd_body_lgd_index = -1;
892 static int hf_lustre_cfg_marker_cm_tgtname = -1;
893 static int hf_lustre_llog_setattr_rec_lsr_ogen = -1;
894 static int hf_lustre_llog_logid_rec_lid_hdr = -1;
895 static int hf_lustre_obdo_o_ioepoch = -1;
896 static int hf_lustre_ost_body_oa = -1;
897 static int hf_lustre_llog_logid_rec_padding3 = -1;
898 static int hf_lustre_llog_log_hdr_llh_flags = -1;
899 static int hf_lustre_llog_setattr_rec_lsr_oid = -1;
900 static int hf_lustre_llog_size_change_rec_padding = -1;
901 static int hf_lustre_mgs_target_info_mti_config_ver = -1;
902 static int hf_lustre_cfg_marker_cm_createtime = -1;
903 static int hf_lustre_qunit_data_old_qd_count = -1;
904 static int hf_lustre_llog_catid_lci_padding1 = -1;
905 static int hf_lustre_lov_desc_ld_active_tgt_count = -1;
906 static int hf_lustre_obdo_o_lcookie = -1;
907 static int hf_lustre_llog_gen_rec_lgr_gen = -1;
908 static int hf_lustre_obdo_o_id = -1;
909 static int hf_lustre_mgs_target_info_mti_uuid = -1;
910 static int hf_lustre_llog_rec_hdr_lrh_index = -1;
911 static int hf_lustre_llog_setattr_rec_lsr_hdr = -1;
912 static int hf_lustre_mgs_target_info_mti_stripe_index = -1;
913 static int hf_lustre_llog_gen_conn_cnt = -1;
914 static int hf_lustre_obdo_o_padding_6 = -1;
915 static int hf_lustre_llog_cookie_lgc_index = -1;
916 static int hf_lustre_lov_desc_ld_uuid = -1;
917 static int hf_lustre_ldlm_reply_lock_desc = -1;
918 static int hf_lustre_lov_desc_ld_padding_0 = -1;
919 static int hf_lustre_llog_unlink_rec_lur_ogen = -1;
920 static int hf_lustre_cfg_marker_cm_flags = -1;
921 static int hf_lustre_obdo_o_padding_3 = -1;
922 static int hf_lustre_ldlm_request_lock_desc = -1;
923 static int hf_lustre_obdo_o_flags = -1;
924 static int hf_lustre_mgs_target_info_mti_params = -1;
925 static int hf_lustre_llog_logid_lgl_ogen = -1;
926 static int hf_lustre_cfg_marker_cm_comment = -1;
927 static int hf_lustre_llog_unlink_rec_lur_oid = -1;
928 static int hf_lustre_qunit_data_qd_count = -1;
929 static int hf_lustre_obdo_o_mtime = -1;
930 static int hf_lustre_obdo_o_blksize = -1;
931 static int hf_lustre_ldlm_res_id_name = -1;
932 static int hf_lustre_ldlm_reply_lock_handle = -1;
933 static int hf_lustre_llogd_body_lgd_saved_index = -1;
934 static int hf_lustre_qunit_data_old_qd_isblk = -1;
935 static int hf_lustre_obdo_o_blocks = -1;
936 static int hf_lustre_lov_desc_ld_padding_2 = -1;
937 static int hf_lustre_llog_logid_rec_lid_tail = -1;
938 static int hf_lustre_obdo_o_grant = -1;
939 static int hf_lustre_obdo_o_uid_h = -1;
940 static int hf_lustre_obdo_o_gid_h = -1;
941 static int hf_lustre_quota_adjust_qunit_qaq_iunit_sz = -1;
942 static int hf_lustre_llog_unlink_rec_padding = -1;
943 static int hf_lustre_ldlm_lock_desc_l_req_mode = -1;
944 static int hf_lustre_ldlm_extent_end = -1;
945 static int hf_lustre_llog_gen_rec_lgr_hdr = -1;
946 static int hf_lustre_llogd_body_lgd_llh_flags = -1;
947 static int hf_lustre_llog_log_hdr_llh_cat_idx = -1;
948 static int hf_lustre_llog_log_hdr_llh_bitmap_offset=-1;
949 static int hf_lustre_ldlm_reply_lock_padding = -1;
950 static int hf_lustre_obd_quotactl_qc_id = -1;
951 static int hf_lustre_llog_logid_rec_padding4 = -1;
952 static int hf_lustre_llog_setattr_rec_lsr_gid = -1;
953 static int hf_lustre_obd_quotactl_qc_type = -1;
954 static int hf_lustre_cfg_marker_padding = -1;
955 static int hf_lustre_mgs_target_info_mti_nids = -1;
956 static int hf_lustre_obdo_o_stripe_idx = -1;
957 static int hf_lustre_llogd_conn_body_lgdc_logid = -1;
958 static int hf_lustre_ldlm_flock_blocking_pid = -1;
959 static int hf_lustre_lov_desc_ld_tgt_count = -1;
960 static int hf_lustre_llogd_body_lgd_cur_offset=-1;
961 static int hf_lustre_qunit_data_old2_qd_count = -1;
962 static int hf_lustre_qunit_data_old2_qd_flags = -1;
963 static int hf_lustre_ldlm_flock_start = -1;
964 static int hf_lustre_quota_adjust_qunit_qaq_bunit_sz = -1;
965 static int hf_lustre_ldlm_flock_pid = -1;
966 static int hf_lustre_lov_desc_ld_default_stripe_size = -1;
967 static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1;
968 static int hf_lustre_cfg_marker_cm_step = -1;
969 static int hf_lustre_mgs_send_param_mgs_param = -1;
970 static int hf_lustre_lov_desc_ld_default_stripe_offset=-1;
971 static int hf_lustre_ldlm_resource_desc_lr_name = -1;
972 static int hf_lustre_llog_rec_tail_lrt_len = -1;
973 static int hf_lustre_llog_log_hdr_llh_timestamp = -1;
974 static int hf_lustre_llog_catid_lci_padding2 = -1;
975 static int hf_lustre_llogd_conn_body_lgdc_ctxt_idx = -1;
976 static int hf_lustre_cfg_marker_cm_canceltime = -1;
977 static int hf_lustre_mgs_target_info_mti_lustre_ver = -1;
978 static int hf_lustre_obdo_o_parent_ver = -1;
979 static int hf_lustre_qunit_data_qd_flags = -1;
980 static int hf_lustre_llog_logid_rec_lid_id = -1;
981 static int hf_lustre_obdo_o_parent_oid = -1;
982 static int hf_lustre_llog_gen_mnt_cnt = -1;
983 static int hf_lustre_llog_size_change_rec_lsc_tail = -1;
984 static int hf_lustre_obdo_o_padding_5 = -1;
985 static int hf_lustre_ldlm_lock_desc_l_resource = -1;
986 static int hf_lustre_obdo_o_parent_seq = -1;
987 static int hf_lustre_ldlm_request_lock_count = -1;
988 static int hf_lustre_ldlm_flock_end = -1;
989 static int hf_lustre_mgs_target_info_mti_nid_count = -1;
990 static int hf_lustre_obdo_o_ctime = -1;
991 static int hf_lustre_ldlm_reply_lock_policy_res2 = -1;
992 static int hf_lustre_llogd_body_lgd_ctxt_idx = -1;
993 static int hf_lustre_lov_desc_ld_qos_maxage = -1;
994 static int hf_lustre_ldlm_resource_desc_lr_type = -1;
995 static int hf_lustre_llog_setattr_rec_lsr_tail = -1;
996 static int hf_lustre_llog_cookie_lgc_subsys = -1;
997 static int hf_lustre_llog_log_hdr_llh_hdr = -1;
998 static int hf_lustre_llog_log_hdr_llh_reserved = -1;
999
1000 /* Header field declarations for field from lustre_user.h*/
1001 static int hf_lustre_obd_dqinfo_dqi_valid = -1;
1002 static int hf_lustre_obd_dqblk_dqb_isoftlimit = -1;
1003 static int hf_lustre_obd_dqblk_dqb_bhardlimit = -1;
1004 static int hf_lustre_obd_dqblk_dqb_curspace = -1;
1005 static int hf_lustre_obd_dqblk_dqb_itime = -1;
1006 static int hf_lustre_obd_dqblk_dqb_valid = -1;
1007 static int hf_lustre_obd_dqinfo_dqi_igrace = -1;
1008 static int hf_lustre_obd_dqinfo_dqi_bgrace = -1;
1009 static int hf_lustre_obd_dqblk_padding = -1;
1010 static int hf_lustre_obd_dqblk_dqb_curinodes = -1;
1011 static int hf_lustre_obd_dqblk_dqb_bsoftlimit = -1;
1012 static int hf_lustre_obd_dqinfo_dqi_flags = -1;
1013 static int hf_lustre_obd_dqblk_dqb_btime = -1;
1014 static int hf_lustre_obd_dqblk_dqb_ihardlimit = -1;
1015 static int hf_lustre_ldlm_intent_opc_open     = -1 ;
1016 static int hf_lustre_ldlm_intent_opc_creat    = -1;
1017 static int hf_lustre_ldlm_intent_opc_readdir  = -1;
1018 static int hf_lustre_ldlm_intent_opc_getattr  = -1;
1019 static int hf_lustre_ldlm_intent_opc_lookup   = -1;
1020 static int hf_lustre_ldlm_intent_opc_unlink   = -1;
1021 static int hf_lustre_ldlm_intent_opc_getxattr = -1;
1022 static int hf_lustre_ldlm_intent_opc_exec     = -1;
1023 static int hf_lustre_ldlm_intent_opc_pin      = -1;
1024 static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1;
1025 static int hf_lustre_llog_hdr_llh_flag_is_cat = -1;
1026 static int hf_lustre_llog_hdr_llh_flag_is_play = -1;
1027 static int hf_lustre_lu_ladvise = -1;
1028 static int hf_lustre_lu_ladvise_lla_start = -1;
1029 static int hf_lustre_lu_ladvise_lla_end = -1;
1030 static int hf_lustre_lu_ladvise_lla_advice = -1;
1031 static int hf_lustre_lu_ladvise_lla_padding = -1;
1032 /* --------------------------------------------------------------------*/
1033
1034
1035 /* proto declaration */
1036 static gint proto_lustre = -1;
1037
1038 typedef int (dissect_func)(
1039     tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree,
1040     int hfindex);
1041
1042 static dissect_func dissect_uint64, dissect_uint32, dissect_uint16, dissect_uint8;
1043
1044 #define  WSHARK_HEAD
1045 #include "lustre_dlm_flags_wshark.c"
1046 #undef   WSHARK_HEAD
1047
1048 static int ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) ;
1049 static int add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) ;
1050
1051
1052 /* ======================================================================== */
1053 /*the value_string*/
1054 const value_string lustre_ldlm_opcode[] = {
1055   { IT_OPEN    ,   "IT_OPEN    "},
1056   { IT_CREAT   ,   "IT_CREAT   "},
1057   { IT_READDIR ,   "IT_READDIR "},
1058   { IT_GETATTR ,   "IT_GETATTR "},
1059   { IT_LOOKUP  ,   "IT_LOOKUP  "},
1060   { IT_UNLINK  ,   "IT_UNLINK  "},
1061   { IT_GETXATTR,   "IT_GETXATTR"},
1062   { IT_EXEC    ,   "IT_EXEC    "},
1063   { IT_PIN     ,   "IT_PIN     "},
1064   { 0, NULL }
1065 };
1066
1067 const value_string lustre_lov_magic[] = {
1068   { LOV_MAGIC_V1,   "LOV_MAGIC_V1" },
1069   {0, NULL}
1070 };
1071
1072 const value_string lustre_llog_op_type[] = {
1073   {LLOG_PAD_MAGIC   ,"LLOG_PAD_MAGIC  "},
1074   {OST_SZ_REC       ,"OST_SZ_REC      "},
1075   {OST_RAID1_REC    ,"OST_RAID1_REC   "},
1076   {MDS_UNLINK_REC   ,"MDS_UNLINK_REC  "},
1077   {MDS_SETATTR_REC  ,"MDS_SETATTR_REC "},
1078   {OBD_CFG_REC      ,"OBD_CFG_REC     "},
1079   {PTL_CFG_REC      ,"PTL_CFG_REC     "},
1080   {LLOG_GEN_REC     ,"LLOG_GEN_REC    "},
1081   {LLOG_JOIN_REC    ,"LLOG_JOIN_REC   "},
1082   {LLOG_HDR_MAGIC   ,"LLOG_HDR_MAGIC  "},
1083   {LLOG_LOGID_MAGIC ,"LLOG_LOGID_MAGIC"},
1084   { 0, NULL }
1085 };
1086
1087 const value_string lustre_llog_hdr_llh_flags[]= {
1088   {LLOG_F_ZAP_WHEN_EMPTY , "LLOhdr_llh_G_F_ZAP_WHEN_EMPTY"},
1089   {LLOG_F_IS_CAT         , "LLOhdr_llh_G_F_IS_CAT"},
1090   {LLOG_F_IS_PLAIN       , "LLOG_F_IS_PLAIN"},
1091   { 0, NULL }
1092 };
1093
1094 const value_string lustre_mds_flags_vals[] = {
1095   {0x00000008, "LUSTRE_SYNC_FL        "},   /* Synchronous updates */
1096   {0x00000010, "LUSTRE_IMMUTABLE_FL   "},   /* Immutable file */
1097   {0x00000020, "LUSTRE_APPEND_FL      "},   /* writes to file may only append */
1098   {0x00000040, "LUSTRE_NODUMP_FL      "},   /* do not dump file */
1099   {0x00000080, "LUSTRE_NOATIME_FL     "},   /* do not update atime */
1100   {0x00001000, "LUSTRE_INDEX_FL       "},   /* hash-indexed directory */
1101   {0x00010000, "LUSTRE_DIRSYNC_FL     "},   /* dirsync behaviour (dir only) */
1102   {0x00020000, "LUSTRE_TOPDIR_FL      "},   /* Top of directory hierarchies */
1103   {0x00100000, "LUSTRE_DIRECTIO_FL    "},   /* Use direct i/o */
1104   {0x10000000, "LUSTRE_INLINE_DATA_FL "},   /* Inode has inline data. */
1105   { 0, NULL }
1106 };
1107
1108 const value_string lustre_mgs_config_body_types[] = {
1109   { 0,  "CONFIG" },
1110   { 1,  "SPTLRPC" },
1111   { 2,  "RECOVER" },
1112   { 3,  "MAX" },
1113   { 0, NULL }
1114 };
1115
1116 const value_string lustre_LMTypes[] = {
1117   { PTL_RPC_MSG_REQUEST, "request"},
1118   { PTL_RPC_MSG_ERR , "error"},
1119   { PTL_RPC_MSG_REPLY , "reply"},
1120   { 0, NULL }
1121 };
1122
1123 const value_string lustre_mds_reint_t_vals[] = {
1124   { REINT_SETATTR, "REINT_SETATTR" },
1125   { REINT_CREATE, "REINT_CREATE" },
1126   { REINT_LINK, "REINT_LINK" },
1127   { REINT_UNLINK, "REINT_UNLINK" },
1128   { REINT_RENAME, "REINT_RENAME" },
1129   { REINT_OPEN, "REINT_OPEN" },
1130   { REINT_SETXATTR, "REINT_SETXATTR" },
1131   { REINT_RMENTRY, "REINT_RMENTRY" },
1132   { REINT_MIGRATE, "REINT_MIGRATE" },
1133   { 0, NULL }
1134 };
1135 const value_string lustre_op_codes[] = {
1136   /*OST Opcodes*/
1137   {0 , "OST_REPLY"},
1138   {1 , "OST_GETATTR"},
1139   {2 , "OST_SETATTR"},
1140   {3 , "OST_READ"},
1141   {4 , "OST_WRITE"},
1142   {5 , "OST_CREATE"},
1143   {6 , "OST_DESTROY"},
1144   {7 , "OST_GET_INFO"},
1145   {8 , "OST_CONNECT"},
1146   {9 , "OST_DISCONNECT"},
1147   {10 , "OST_PUNCH"},
1148   {11 , "OST_OPEN"},
1149   {12 , "OST_CLOSE"},
1150   {13 , "OST_STATFS"},
1151   {14 , "OST_SAN_READ(deprecated)"},
1152   {15 , "OST_SAN_WRITE(deprecated)"},
1153   {16 , "OST_SYNC"},
1154   {17 , "OST_SET_INFO"},
1155   {18 , "OST_QUOTACHECK"},
1156   {19 , "OST_QUOTACTL"},
1157   {20 , "OST_QUOTA_ADJUST_QUNIT"},
1158   {21 , "OST_LADVISE"},
1159   {22 , "OST_LAST_OPC"},
1160   /*MDS Opcodes*/
1161   {33 , "MDS_GETATTR"},
1162   {34 , "MDS_GETATTR_NAME"},
1163   {35 , "MDS_CLOSE"},
1164   {36 , "MDS_REINT"},
1165   {37 , "MDS_READPAGE"},
1166   {38 , "MDS_CONNECT"},
1167   {39 , "MDS_DISCONNECT"},
1168   {40 , "MDS_GET_ROOT"},
1169   {41 , "MDS_STATFS"},
1170   {42 , "MDS_PIN"},
1171   {43 , "MDS_UNPIN"},
1172   {44 , "MDS_SYNC"},
1173   {45 , "MDS_DONE_WRITING"},
1174   {46 , "MDS_SET_INFO"},
1175   {47 , "MDS_QUOTACHECK"},
1176   {48 , "MDS_QUOTACTL"},
1177   {49 , "MDS_GETXATTR"},
1178   {50 , "MDS_SETXATTR"},
1179   {51 , "MDS_WRITEPAGE"},
1180   {52 , "MDS_IS_SUBDIR"},
1181   {53 , "MDS_GET_INFO"},
1182   {54 , "MDS_HSM_STATE_GET"},
1183   {55 , "MDS_HSM_STATE_SET"},
1184   {56 , "MDS_HSM_ACTION"},
1185   {57 , "MDS_HSM_PROGRESS"},
1186   {58 , "MDS_HSM_REQUEST"},
1187   {59 , "MDS_HSM_CT_REGISTER"},
1188   {60 , "MDS_HSM_CT_UNREGISTER"},
1189   {61 , "MDS_SWAP_LAYOUTS"},
1190   {62 , "MDS_LAST_OPC"},
1191   /*LDLM Opcodes*/
1192   {101 , "LDLM_ENQUEUE"},
1193   {102 , "LDLM_CONVERT"},
1194   {103 , "LDLM_CANCEL"},
1195   {104 , "LDLM_BL_CALLBACK"},
1196   {105 , "LDLM_CP_CALLBACK"},
1197   {106 , "LDLM_GL_CALLBACK"},
1198   {107 , "LDLM_LAST_OPC"},
1199   /*MGS Opcodes*/
1200   {250 , "MGS_CONNECT"},
1201   {251 , "MGS_DISCONNECT"},
1202   {252 , "MGS_EXCEPTION"},
1203   {253 , "MGS_TARGET_REG"},
1204   {254 , "MGS_TARGET_DEL"},
1205   {255 , "MGS_SET_INFO"},
1206   {256 , "MGS_CONFIG_READ"},
1207   {257 , "MGS_LAST_OPC"},
1208   /*OBD Opcodes*/
1209   {400 , "OBD_PING"},
1210   {401 , "OBD_LOG_CANCEL"},
1211   {402 , "OBD_QC_CALLBACK"},
1212   {403 , "OBD_LAST_OPC"},
1213   /* LLOG opcodes */
1214   { 501, "LLOG_ORIGIN_HANDLE_CREATE"},
1215   { 502, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK"},
1216   { 503, "LLOG_ORIGIN_HANDLE_READ_HEADER"},
1217   { 504, "LLOG_ORIGIN_HANDLE_WRITE_REC"},
1218   { 505, "LLOG_ORIGIN_HANDLE_CLOSE"},
1219   { 506, "LLOG_ORIGIN_CONNECT"},
1220   { 507, "LLOG_CATINFO"},
1221   { 508, "LLOG_ORIGIN_HANDLE_PREV_BLOCK"},
1222   { 509, "LLOG_ORIGIN_HANDLE_DESTROY"},
1223   /* SEQ RPC opcodes */
1224   { 700, "SEQ_QUERY"},
1225   { 701, "SEQ_LAST_OPC"},
1226   /* FLD RPC opcodes */
1227   { 900, "FLD_QUERY"},
1228   { 901, "FLD_LAST_OPC"},
1229   { 0, NULL }
1230 };
1231 /*const value_string lustre_ldlm_mode_vals[] = {*/
1232 /*    { LCK_MINMODE, "MINMODE" },*/
1233 /*    { LCK_EX, "EX" },*/
1234 /*    { LCK_PW, "PW" },*/
1235 /*    { LCK_PR, "PR" },*/
1236 /*    { LCK_CW, "CW" },*/
1237 /*    { LCK_CR, "CR" },*/
1238 /*    { LCK_NL, "NL" },*/
1239 /*    { LCK_GROUP, "GROUP" },*/
1240 /*    { 0, NULL }*/
1241 /*};*/
1242
1243 /* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */
1244 const value_string lustre_ldlm_mode_vals[] = {
1245   { LCK_MINMODE, "MINMODE" },
1246   { LCK_EX, "Exclusive" },
1247   { LCK_PW, "Protected Write" },
1248   { LCK_PR, "Protected Read" },
1249   { LCK_CW, "Concurrent Write" },
1250   { LCK_CR, "Concurrent Read" },
1251   { LCK_NL, "Null" },
1252   { LCK_GROUP, "GROUP" },
1253   { 0, NULL }
1254 };
1255
1256 const value_string lustre_ldlm_type_vals[] = {
1257   { LDLM_PLAIN, "LDLM_PLAIN" },
1258   { LDLM_EXTENT,"LDLM_EXTENT" },
1259   { LDLM_FLOCK, "LDLM_FLOCK" },
1260   { LDLM_IBITS, "LDLM_IBITS" },
1261   { 0, NULL }
1262 };
1263
1264
1265 const value_string lustre_llog_cmd_t_vals[] = {
1266   { LLOG_ORIGIN_HANDLE_CREATE, "LLOG_ORIGIN_HANDLE_CREATE" },
1267   { LLOG_ORIGIN_HANDLE_NEXT_BLOCK, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK" },
1268   { LLOG_ORIGIN_HANDLE_READ_HEADER, "LLOG_ORIGIN_HANDLE_READ_HEADER" },
1269   { LLOG_ORIGIN_HANDLE_WRITE_REC, "LLOG_ORIGIN_HANDLE_WRITE_REC" },
1270   { LLOG_ORIGIN_HANDLE_CLOSE, "LLOG_ORIGIN_HANDLE_CLOSE" },
1271   { LLOG_ORIGIN_CONNECT, "LLOG_ORIGIN_CONNECT" },
1272   { LLOG_CATINFO, "LLOG_CATINFO" },
1273   { LLOG_ORIGIN_HANDLE_PREV_BLOCK, "LLOG_ORIGIN_HANDLE_PREV_BLOCK" },
1274   { LLOG_ORIGIN_HANDLE_DESTROY, "LLOG_ORIGIN_HANDLE_DESTROY" },
1275   { 0, NULL }
1276 };
1277
1278 #ifndef ENABLE_STATIC
1279 const gchar version[] = VERSION;
1280
1281 /* Start the functions we need for the plugin stuff */
1282
1283 void
1284 plugin_register(void)
1285 {
1286         extern void proto_register_dcerpc_lustre(void);
1287
1288         proto_register_dcerpc_lustre();
1289 }
1290
1291 void
1292 plugin_reg_handoff(void)
1293 {
1294         extern void proto_reg_handoff_lustre(void);
1295
1296         proto_reg_handoff_lustre();
1297 }
1298 #endif
1299
1300
1301 /* ------------------------------------------------------------------- */
1302 /*                display  functions                                   */
1303 /* ------------------------------------------------------------------- */
1304 /* display str in left corner and in COL */
1305 /* @gint col :  the col where we add the information */
1306 static void display_info_str(proto_item *pi, column_info *cinfo, gint col,
1307                              const gchar *str)
1308 {
1309   if (NULL !=pi)
1310     proto_item_append_text(pi, str);
1311
1312   if (NULL !=cinfo)
1313     if (check_col(cinfo, col))
1314       col_append_str(cinfo, col, str);
1315 }
1316
1317 /*
1318  * Need to be (re)written
1319  */
1320 static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, const char* format, const gchar * str){
1321
1322   if (NULL !=pi){
1323     //va_start(ap, format);
1324     proto_item_append_text(pi, format, str);
1325     //va_end(ap);
1326   }
1327
1328   if (NULL !=cinfo){
1329     if (check_col(cinfo, col)){
1330       //   va_list ap;
1331       //  va_start(ap, format);
1332       col_append_fstr(cinfo, col,  format, str);
1333       // va_end(ap);
1334     }
1335   }
1336 }
1337
1338
1339 /* ------------------------------ basic dissect functions ------------------------      */
1340 static int
1341 dissect_uint64
1342 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1343 {
1344   proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE);
1345   return offset+8;
1346 }
1347
1348 static int
1349 dissect_uint32
1350 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1351 {
1352   proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE);
1353   return offset+4;
1354 }
1355
1356 static int
1357 dissect_uint16
1358 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1359 {
1360   proto_tree_add_item(tree, hfindex, tvb, offset, 2, TRUE);
1361   return offset+2;
1362 }
1363
1364 static int
1365 dissect_uint8
1366 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
1367 {
1368   proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE);
1369   return offset+1;
1370 }
1371 /* -------------------------------------------------------------------------    */
1372
1373 /* dissect raw data */
1374 static int
1375 lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_,
1376                             packet_info *pinfo _U_, proto_tree *parent_tree _U_,
1377                             int hf_index _U_, guint32 buf_num)
1378 {
1379   proto_item *item = NULL;
1380
1381   guint32 data_len;
1382   int old_offset;
1383
1384   old_offset = offset;
1385
1386   data_len = LUSTRE_BUFFER_LEN(buf_num);
1387   if (data_len == 0)
1388     return offset;
1389
1390   proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
1391
1392   offset += data_len;
1393   proto_item_set_len(item, offset-old_offset);
1394   offset = add_extra_padding(tvb, offset, pinfo, parent_tree);
1395
1396   return offset;
1397 }
1398
1399 int
1400 lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
1401                            proto_tree *parent_tree _U_, int hf_index _U_, int max_length)
1402 {
1403   int i;
1404   int val;
1405   proto_item *item = NULL;
1406
1407   item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 0, TRUE);
1408   for (i=0; i < max_length; ++i) {
1409     val = tvb_get_guint8(tvb, offset+i);
1410     proto_item_append_text(item, (i) ? "%02x" : ": %#02x", val);
1411   }
1412
1413   offset += max_length;
1414   proto_item_set_len(item, max_length);
1415   return offset;
1416 }
1417
1418 /* ------------------------------------------------------------------------ */
1419
1420
1421
1422 /* IDL: struct lustre_handle { */
1423 /* IDL:         uint64 cookie; */
1424 /* IDL: } */
1425
1426 static int
1427 lustre_dissect_element_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1428 {
1429   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_handle_cookie);
1430
1431   return offset;
1432 }
1433
1434 int
1435 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_)
1436 {
1437   proto_item *item = NULL;
1438   proto_tree *tree = NULL;
1439   int old_offset;
1440
1441   old_offset=offset;
1442
1443   if (parent_tree) {
1444     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1445     tree = proto_item_add_subtree(item, ett_lustre_lustre_handle_cookie);
1446   }
1447
1448   offset=lustre_dissect_element_handle_cookie(tvb, offset, pinfo, tree);
1449
1450
1451   proto_item_set_len(item, offset-old_offset);
1452
1453   return offset;
1454 }
1455
1456 /* IDL: struct obd_connect_data { */
1457 /* IDL:         uint64 ocd_connect_flags; */
1458 /* IDL:         uint32 ocd_version; */
1459 /* IDL:         uint32 ocd_grant; */
1460 /* IDL:         uint32 ocd_index; */
1461 /* IDL:         uint32 ocd_brw_size; */
1462 /* IDL:         uint64 ocd_ibits_known; */
1463 /* IDL:         uint32 ocd_nllu; */
1464 /* IDL:         uint32 ocd_nllg; */
1465 /* IDL:         uint64 ocd_transno; */
1466 /* IDL:         uint32 ocd_group; */
1467 /* IDL:         uint32 ocd_cksum_types; */
1468 /* IDL:         uint64 padding1; */
1469 /* IDL:         uint64 padding2; */
1470 /* IDL: } */
1471
1472 static int
1473 lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1474 {
1475   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags);
1476
1477   return offset;
1478 }
1479
1480 static int
1481 lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1482 {
1483   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_version);
1484
1485   return offset;
1486 }
1487
1488 static int
1489 lustre_dissect_element_obd_connect_data_ocd_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1490 {
1491   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_grant);
1492
1493   return offset;
1494 }
1495
1496 static int
1497 lustre_dissect_element_obd_connect_data_ocd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1498 {
1499   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_index);
1500
1501   return offset;
1502 }
1503
1504 static int
1505 lustre_dissect_element_obd_connect_data_ocd_brw_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1506 {
1507   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_brw_size);
1508
1509   return offset;
1510 }
1511
1512 static int
1513 lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1514 {
1515   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_ibits_known);
1516
1517   return offset;
1518 }
1519
1520 static int
1521 lustre_dissect_element_obd_connect_data_ocd_nllu(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1522 {
1523   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllu);
1524
1525   return offset;
1526 }
1527
1528 static int
1529 lustre_dissect_element_obd_connect_data_ocd_nllg(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1530 {
1531   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg);
1532
1533   return offset;
1534 }
1535
1536 static int
1537 lustre_dissect_element_obd_connect_data_ocd_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1538 {
1539   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno);
1540
1541   return offset;
1542 }
1543
1544 static int
1545 lustre_dissect_element_obd_connect_data_ocd_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1546 {
1547   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group);
1548
1549   return offset;
1550 }
1551
1552 static int
1553 lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1554 {
1555   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types);
1556
1557   return offset;
1558 }
1559
1560 static int
1561 lustre_dissect_element_obd_connect_data_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1562 {
1563   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding1);
1564
1565   return offset;
1566 }
1567
1568 static int
1569 lustre_dissect_element_obd_connect_data_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1570 {
1571   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding2);
1572
1573   return offset;
1574 }
1575
1576 static int
1577 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_)
1578 {
1579   proto_item *item = NULL;
1580   proto_tree *tree = NULL;
1581   int old_offset;
1582
1583
1584
1585   old_offset=offset;
1586
1587   if (parent_tree) {
1588     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1589     tree = proto_item_add_subtree(item, ett_lustre_obd_connect_data);
1590   }
1591
1592   offset=lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, offset, pinfo, tree);
1593
1594   offset=lustre_dissect_element_obd_connect_data_ocd_version(tvb, offset, pinfo, tree);
1595
1596   offset=lustre_dissect_element_obd_connect_data_ocd_grant(tvb, offset, pinfo, tree);
1597
1598   offset=lustre_dissect_element_obd_connect_data_ocd_index(tvb, offset, pinfo, tree);
1599
1600   offset=lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, offset, pinfo, tree);
1601
1602   offset=lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, offset, pinfo, tree);
1603
1604   offset=lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree);
1605
1606   offset=lustre_dissect_element_obd_connect_data_ocd_nllg(tvb, offset, pinfo, tree);
1607
1608   offset=lustre_dissect_element_obd_connect_data_ocd_transno(tvb, offset, pinfo, tree);
1609
1610   offset=lustre_dissect_element_obd_connect_data_ocd_group(tvb, offset, pinfo, tree);
1611
1612   offset=lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree);
1613
1614   offset=lustre_dissect_element_obd_connect_data_padding1(tvb, offset, pinfo, tree);
1615
1616   offset=lustre_dissect_element_obd_connect_data_padding2(tvb, offset, pinfo, tree);
1617
1618
1619   proto_item_set_len(item, offset-old_offset);
1620
1621   return offset;
1622 }
1623
1624
1625 /* IDL: struct lov_ost_data_v1 { */
1626 /* IDL:         uint64 l_object_id; */
1627 /* IDL:         uint64 l_object_seq; */
1628 /* IDL:         uint32 l_ost_gen; */
1629 /* IDL:         uint32 l_ost_idx; */
1630 /* IDL: } */
1631
1632 static int
1633 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_)
1634 {
1635   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_id);
1636
1637   return offset;
1638 }
1639
1640 static int
1641 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_)
1642 {
1643   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_seq);
1644
1645   return offset;
1646 }
1647
1648 static int
1649 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_)
1650 {
1651   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_gen);
1652
1653   return offset;
1654 }
1655
1656 static int
1657 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_)
1658 {
1659   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_idx);
1660
1661   return offset;
1662 }
1663
1664 int
1665 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_)
1666 {
1667   proto_item *item = NULL;
1668   proto_tree *tree = NULL;
1669   int old_offset;
1670
1671
1672
1673   old_offset=offset;
1674
1675   if (parent_tree) {
1676     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1677     tree = proto_item_add_subtree(item, ett_lustre_lov_ost_data_v1);
1678   }
1679
1680   offset=lustre_dissect_element_lov_ost_data_v1_l_object_id(tvb, offset, pinfo, tree);
1681
1682   offset=lustre_dissect_element_lov_ost_data_v1_l_object_seq(tvb, offset, pinfo, tree);
1683
1684   offset=lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvb, offset, pinfo, tree);
1685
1686   offset=lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvb, offset, pinfo, tree);
1687
1688
1689   proto_item_set_len(item, offset-old_offset);
1690
1691   return offset;
1692 }
1693
1694 /* IDL: struct lov_mds_md_v1 { */
1695 /* IDL:         uint32 lmm_magic; */
1696 /* IDL:         uint32 lmm_pattern; */
1697 /* IDL:         uint64 lmm_object_id; */
1698 /* IDL:         uint64 lmm_object_seq; */
1699 /* IDL:         uint32 lmm_stripe_size; */
1700 /* IDL:         uint32 lmm_stripe_count; */
1701 /* IDL:         struct lov_ost_data_v1 { */
1702 /* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */
1703 /* IDL: } */
1704
1705 static int
1706 lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1707 {
1708   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_magic);
1709
1710   return offset;
1711 }
1712
1713 static int
1714 lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1715 {
1716   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_pattern);
1717
1718   return offset;
1719 }
1720
1721 static int
1722 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_)
1723 {
1724   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_id);
1725
1726   return offset;
1727 }
1728
1729 static int
1730 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_)
1731 {
1732   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_seq);
1733
1734   return offset;
1735 }
1736
1737 static int
1738 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_)
1739 {
1740   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_size);
1741
1742   return offset;
1743 }
1744
1745 static int
1746 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_)
1747 {
1748   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_count);
1749
1750   return offset;
1751 }
1752
1753 static int
1754 lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1755 {
1756   offset=lustre_dissect_struct_lov_ost_data_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1_lmm_objects);
1757   return offset;
1758 }
1759
1760 static int
1761 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)
1762 {
1763   int i;
1764   /*g_print("num = %d", num);*/
1765   for (i = 0; i < num; i++){
1766     offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvb, offset, pinfo, tree);
1767   }
1768
1769   return offset;
1770 }
1771
1772
1773
1774 int
1775 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_)
1776 {
1777   proto_item *item = NULL;
1778   proto_tree *tree = NULL;
1779   int old_offset;
1780
1781   guint32 stripe_count ;
1782
1783
1784   old_offset=offset;
1785
1786   if (parent_tree) {
1787     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
1788     tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1);
1789   }
1790
1791   offset=lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvb, offset, pinfo, tree);
1792
1793   offset=lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvb, offset, pinfo, tree);
1794
1795   offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvb, offset, pinfo, tree);
1796
1797   offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_seq(tvb, offset, pinfo, tree);
1798
1799   offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvb, offset, pinfo, tree);
1800
1801   stripe_count = tvb_get_letohl(tvb,offset);
1802   offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvb, offset, pinfo, tree);
1803
1804   offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvb, offset, pinfo, tree, stripe_count);
1805
1806
1807   proto_item_set_len(item, offset-old_offset);
1808
1809   return offset;
1810 }
1811
1812 int
1813 lustre_dissect_struct_lov_mds_md(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
1814                                  proto_tree *parent_tree _U_,
1815                                  int hf_index _U_, int buff_num _U_)
1816 {
1817   int magic;
1818
1819   if(LUSTRE_BUFFER_LEN(buff_num) == 0)
1820     return offset;
1821
1822   magic=tvb_get_letohl(tvb, offset); /* TODO : replace this with a macro */
1823   switch(magic) {
1824   case LOV_MAGIC_V1:
1825     offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,parent_tree,
1826                                                hf_index);
1827     break;
1828   default:
1829     offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree,
1830                                        hf_lustre_extra_padding, buff_num);
1831     break;
1832   };
1833
1834   return offset;
1835 }
1836
1837
1838
1839 /* IDL: struct obd_statfs { */
1840 /* IDL:         uint64 os_type; */
1841 /* IDL:         uint64 os_blocks; */
1842 /* IDL:         uint64 os_bfree; */
1843 /* IDL:         uint64 os_bavail; */
1844 /* IDL:         uint64 os_files; */
1845 /* IDL:         uint64 os_ffree; */
1846 /* IDL:         uint8 os_fsid[40]; */
1847 /* IDL:         uint32 os_bsize; */
1848 /* IDL:         uint32 os_namelen; */
1849 /* IDL:         uint64 os_maxbytes; */
1850 /* IDL:         uint32 os_state; */
1851 /* IDL:         uint32 os_spare1; */
1852 /* IDL:         uint32 os_spare2; */
1853 /* IDL:         uint32 os_spare3; */
1854 /* IDL:         uint32 os_spare4; */
1855 /* IDL:         uint32 os_spare5; */
1856 /* IDL:         uint32 os_spare6; */
1857 /* IDL:         uint32 os_spare7; */
1858 /* IDL:         uint32 os_spare8; */
1859 /* IDL:         uint32 os_spare9; */
1860 /* IDL: } */
1861
1862 static int
1863 lustre_dissect_element_obd_statfs_os_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1864 {
1865   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_type);
1866
1867   return offset;
1868 }
1869
1870 static int
1871 lustre_dissect_element_obd_statfs_os_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1872 {
1873   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_blocks);
1874
1875   return offset;
1876 }
1877
1878 static int
1879 lustre_dissect_element_obd_statfs_os_bfree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1880 {
1881   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bfree);
1882
1883   return offset;
1884 }
1885
1886 static int
1887 lustre_dissect_element_obd_statfs_os_bavail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1888 {
1889   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bavail);
1890
1891   return offset;
1892 }
1893
1894 static int
1895 lustre_dissect_element_obd_statfs_os_files(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1896 {
1897   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_files);
1898
1899   return offset;
1900 }
1901
1902 static int
1903 lustre_dissect_element_obd_statfs_os_ffree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1904 {
1905   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_ffree);
1906
1907   return offset;
1908 }
1909
1910 static int
1911 lustre_dissect_element_obd_statfs_os_fsid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1912 {
1913   offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_fsid);
1914
1915   return offset;
1916 }
1917
1918 static int
1919 lustre_dissect_element_obd_statfs_os_fsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1920 {
1921   int i;
1922   for (i = 0; i < 40; i++)
1923     offset=lustre_dissect_element_obd_statfs_os_fsid_(tvb, offset, pinfo, tree);
1924
1925   return offset;
1926 }
1927
1928
1929
1930 static int
1931 lustre_dissect_element_obd_statfs_os_bsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1932 {
1933   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bsize);
1934
1935   return offset;
1936 }
1937
1938 static int
1939 lustre_dissect_element_obd_statfs_os_namelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1940 {
1941   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_namelen);
1942
1943   return offset;
1944 }
1945
1946 static int
1947 lustre_dissect_element_obd_statfs_os_maxbytes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1948 {
1949   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_maxbytes);
1950
1951   return offset;
1952 }
1953
1954 static int
1955 lustre_dissect_element_obd_statfs_os_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1956 {
1957   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_state);
1958
1959   return offset;
1960 }
1961
1962 static int
1963 lustre_dissect_element_obd_statfs_os_spare1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1964 {
1965   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare1);
1966
1967   return offset;
1968 }
1969
1970 static int
1971 lustre_dissect_element_obd_statfs_os_spare2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1972 {
1973   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare2);
1974
1975   return offset;
1976 }
1977
1978 static int
1979 lustre_dissect_element_obd_statfs_os_spare3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1980 {
1981   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare3);
1982
1983   return offset;
1984 }
1985
1986 static int
1987 lustre_dissect_element_obd_statfs_os_spare4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1988 {
1989   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare4);
1990
1991   return offset;
1992 }
1993
1994 static int
1995 lustre_dissect_element_obd_statfs_os_spare5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
1996 {
1997   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare5);
1998
1999   return offset;
2000 }
2001
2002 static int
2003 lustre_dissect_element_obd_statfs_os_spare6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2004 {
2005   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare6);
2006
2007   return offset;
2008 }
2009
2010 static int
2011 lustre_dissect_element_obd_statfs_os_spare7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2012 {
2013   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare7);
2014
2015   return offset;
2016 }
2017
2018 static int
2019 lustre_dissect_element_obd_statfs_os_spare8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2020 {
2021   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare8);
2022
2023   return offset;
2024 }
2025
2026 static int
2027 lustre_dissect_element_obd_statfs_os_spare9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2028 {
2029   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare9);
2030
2031   return offset;
2032 }
2033
2034 int
2035 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_)
2036 {
2037   proto_item *item = NULL;
2038   proto_tree *tree = NULL;
2039   int old_offset;
2040
2041
2042
2043   old_offset=offset;
2044
2045   if (parent_tree) {
2046     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2047     tree = proto_item_add_subtree(item, ett_lustre_obd_statfs);
2048   }
2049
2050   offset=lustre_dissect_element_obd_statfs_os_type(tvb, offset, pinfo, tree);
2051
2052   offset=lustre_dissect_element_obd_statfs_os_blocks(tvb, offset, pinfo, tree);
2053
2054   offset=lustre_dissect_element_obd_statfs_os_bfree(tvb, offset, pinfo, tree);
2055
2056   offset=lustre_dissect_element_obd_statfs_os_bavail(tvb, offset, pinfo, tree);
2057
2058   offset=lustre_dissect_element_obd_statfs_os_files(tvb, offset, pinfo, tree);
2059
2060   offset=lustre_dissect_element_obd_statfs_os_ffree(tvb, offset, pinfo, tree);
2061
2062   offset=lustre_dissect_element_obd_statfs_os_fsid(tvb, offset, pinfo, tree);
2063
2064   offset=lustre_dissect_element_obd_statfs_os_bsize(tvb, offset, pinfo, tree);
2065
2066   offset=lustre_dissect_element_obd_statfs_os_namelen(tvb, offset, pinfo, tree);
2067
2068   offset=lustre_dissect_element_obd_statfs_os_maxbytes(tvb, offset, pinfo, tree);
2069
2070   offset=lustre_dissect_element_obd_statfs_os_state(tvb, offset, pinfo, tree);
2071
2072   offset=lustre_dissect_element_obd_statfs_os_spare1(tvb, offset, pinfo, tree);
2073
2074   offset=lustre_dissect_element_obd_statfs_os_spare2(tvb, offset, pinfo, tree);
2075
2076   offset=lustre_dissect_element_obd_statfs_os_spare3(tvb, offset, pinfo, tree);
2077
2078   offset=lustre_dissect_element_obd_statfs_os_spare4(tvb, offset, pinfo, tree);
2079
2080   offset=lustre_dissect_element_obd_statfs_os_spare5(tvb, offset, pinfo, tree);
2081
2082   offset=lustre_dissect_element_obd_statfs_os_spare6(tvb, offset, pinfo, tree);
2083
2084   offset=lustre_dissect_element_obd_statfs_os_spare7(tvb, offset, pinfo, tree);
2085
2086   offset=lustre_dissect_element_obd_statfs_os_spare8(tvb, offset, pinfo, tree);
2087
2088   offset=lustre_dissect_element_obd_statfs_os_spare9(tvb, offset, pinfo, tree);
2089
2090
2091   proto_item_set_len(item, offset-old_offset);
2092
2093   return offset;
2094 }
2095
2096 /* IDL: struct obd_ioobj { */
2097 /* IDL:         uint64 ioo_id; */
2098 /* IDL:         uint64 ioo_seq; */
2099 /* IDL:         uint32 ioo_max_brw; */
2100 /* IDL:         uint32 ioo_bufcnt; */
2101 /* IDL: } */
2102
2103 static int
2104 lustre_dissect_element_obd_ioobj_ioo_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2105 {
2106   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_id);
2107
2108   return offset;
2109 }
2110
2111 static int
2112 lustre_dissect_element_obd_ioobj_ioo_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2113 {
2114   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_seq);
2115
2116   return offset;
2117 }
2118
2119 static int
2120 lustre_dissect_element_obd_ioobj_ioo_max_brw(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2121 {
2122   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_max_brw);
2123
2124   return offset;
2125 }
2126
2127 static int
2128 lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2129 {
2130   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_bufcnt);
2131
2132   return offset;
2133 }
2134
2135 int
2136 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_)
2137 {
2138   proto_item *item = NULL;
2139   proto_tree *tree = NULL;
2140   int old_offset;
2141
2142
2143
2144   old_offset=offset;
2145
2146   if (parent_tree) {
2147     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2148     tree = proto_item_add_subtree(item, ett_lustre_obd_ioobj);
2149   }
2150
2151   offset=lustre_dissect_element_obd_ioobj_ioo_id(tvb, offset, pinfo, tree);
2152
2153   offset=lustre_dissect_element_obd_ioobj_ioo_seq(tvb, offset, pinfo, tree);
2154
2155   offset=lustre_dissect_element_obd_ioobj_ioo_max_brw(tvb, offset, pinfo, tree);
2156
2157   offset=lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvb, offset, pinfo, tree);
2158
2159
2160   proto_item_set_len(item, offset-old_offset);
2161
2162   return offset;
2163 }
2164
2165 /* IDL: struct niobuf_remote { */
2166 /* IDL:         uint64 offset; */
2167 /* IDL:         uint32 len; */
2168 /* IDL:         uint32 flags; */
2169 /* IDL: } */
2170
2171 static int
2172 lustre_dissect_element_niobuf_remote_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2173 {
2174   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_offset);
2175
2176   return offset;
2177 }
2178
2179 static int
2180 lustre_dissect_element_niobuf_remote_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2181 {
2182   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_len);
2183
2184   return offset;
2185 }
2186
2187 static int
2188 lustre_dissect_element_niobuf_remote_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2189 {
2190   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_flags);
2191
2192   return offset;
2193 }
2194
2195 int
2196 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_)
2197 {
2198   proto_item *item = NULL;
2199   proto_tree *tree = NULL;
2200   int old_offset;
2201
2202
2203
2204   old_offset=offset;
2205
2206   if (parent_tree) {
2207     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2208     tree = proto_item_add_subtree(item, ett_lustre_niobuf_remote);
2209   }
2210
2211   offset=lustre_dissect_element_niobuf_remote_offset(tvb, offset, pinfo, tree);
2212
2213   offset=lustre_dissect_element_niobuf_remote_len(tvb, offset, pinfo, tree);
2214
2215   offset=lustre_dissect_element_niobuf_remote_flags(tvb, offset, pinfo, tree);
2216
2217
2218   proto_item_set_len(item, offset-old_offset);
2219
2220   return offset;
2221 }
2222
2223 /* IDL: struct ost_lvb { */
2224 /* IDL:         uint64 lvb_size; */
2225 /* IDL:         uint64 lvb_mtime; */
2226 /* IDL:         uint64 lvb_atime; */
2227 /* IDL:         uint64 lvb_ctime; */
2228 /* IDL:         uint64 lvb_blocks; */
2229 /* IDL: } */
2230
2231 static int
2232 lustre_dissect_element_ost_lvb_lvb_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2233 {
2234   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size);
2235
2236   return offset;
2237 }
2238
2239 static int
2240 lustre_dissect_element_ost_lvb_lvb_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2241 {
2242   nstime_t ns;
2243   /* timestamp */
2244   ns.secs = tvb_get_letohl(tvb,offset);
2245   ns.nsecs=0;
2246   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_mtime, tvb, offset, 8, &ns );
2247   offset+=8;
2248   return offset;
2249 }
2250
2251 static int
2252 lustre_dissect_element_ost_lvb_lvb_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2253 {
2254   nstime_t ns;
2255   /* timestamp */
2256   ns.secs = tvb_get_letohl(tvb,offset);
2257   ns.nsecs=0;
2258   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_atime, tvb, offset, 8, &ns );
2259   offset+=8;
2260
2261   return offset;
2262 }
2263
2264 static int
2265 lustre_dissect_element_ost_lvb_lvb_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2266 {
2267   nstime_t ns;
2268   /* timestamp */
2269   ns.secs = tvb_get_letohl(tvb,offset);
2270   ns.nsecs=0;
2271   proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_ctime, tvb, offset, 8, &ns );
2272   offset+=8;
2273
2274   return offset;
2275 }
2276
2277 static int
2278 lustre_dissect_element_ost_lvb_lvb_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2279 {
2280   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks);
2281
2282   return offset;
2283 }
2284
2285 int
2286 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_)
2287 {
2288   proto_item *item = NULL;
2289   proto_tree *tree = NULL;
2290   int old_offset;
2291
2292
2293
2294   old_offset=offset;
2295
2296   if (parent_tree) {
2297     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2298     tree = proto_item_add_subtree(item, ett_lustre_ost_lvb);
2299   }
2300
2301   offset=lustre_dissect_element_ost_lvb_lvb_size(tvb, offset, pinfo, tree);
2302
2303   offset=lustre_dissect_element_ost_lvb_lvb_mtime(tvb, offset, pinfo, tree);
2304
2305   offset=lustre_dissect_element_ost_lvb_lvb_atime(tvb, offset, pinfo, tree);
2306
2307   offset=lustre_dissect_element_ost_lvb_lvb_ctime(tvb, offset, pinfo, tree);
2308
2309   offset=lustre_dissect_element_ost_lvb_lvb_blocks(tvb, offset, pinfo, tree);
2310
2311
2312   proto_item_set_len(item, offset-old_offset);
2313
2314   return offset;
2315 }
2316
2317
2318 /* IDL: struct ll_fid { */
2319 /* IDL:         uint64 id; */
2320 /* IDL:         uint32 generation; */
2321 /* IDL:         uint32 f_type; */
2322 /* IDL: } */
2323
2324 static int
2325 lustre_dissect_element_ll_fid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2326 {
2327   offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ll_fid_id);
2328
2329   return offset;
2330 }
2331
2332 static int
2333 lustre_dissect_element_ll_fid_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2334 {
2335   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_generation);
2336
2337   return offset;
2338 }
2339
2340 static int
2341 lustre_dissect_element_ll_fid_f_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2342 {
2343   offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_f_type);
2344
2345   return offset;
2346 }
2347
2348 int
2349 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_)
2350 {
2351   proto_item *item = NULL;
2352   proto_tree *tree = NULL;
2353   int old_offset;
2354
2355   old_offset=offset;
2356
2357   if (parent_tree) {
2358     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2359     tree = proto_item_add_subtree(item, ett_lustre_ll_fid);
2360   }
2361
2362   offset=lustre_dissect_element_ll_fid_id(tvb, offset, pinfo, tree);
2363
2364   offset=lustre_dissect_element_ll_fid_generation(tvb, offset, pinfo, tree);
2365
2366   offset=lustre_dissect_element_ll_fid_f_type(tvb, offset, pinfo, tree);
2367
2368
2369   proto_item_set_len(item, offset-old_offset);
2370
2371   return offset;
2372 }
2373
2374 /* IDL: struct obd_dqinfo { */
2375 /* IDL:   uint64 dqi_bgrace; */
2376 /* IDL:   uint64 dqi_igrace; */
2377 /* IDL:   uint32 dqi_flags; */
2378 /* IDL:   uint32 dqi_valid; */
2379 /* IDL: } */
2380
2381 static int
2382 lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2383 {
2384   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_bgrace);
2385
2386   return offset;
2387 }
2388
2389 static int
2390 lustre_dissect_element_obd_dqinfo_dqi_igrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2391 {
2392   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_igrace);
2393
2394   return offset;
2395 }
2396
2397 static int
2398 lustre_dissect_element_obd_dqinfo_dqi_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2399 {
2400   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_flags);
2401
2402   return offset;
2403 }
2404
2405 static int
2406 lustre_dissect_element_obd_dqinfo_dqi_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2407 {
2408   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_valid);
2409
2410   return offset;
2411 }
2412
2413 int
2414 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_)
2415 {
2416   proto_item *item = NULL;
2417   proto_tree *tree = NULL;
2418   int old_offset;
2419
2420
2421
2422   old_offset = offset;
2423
2424   if (parent_tree) {
2425     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2426     tree = proto_item_add_subtree(item, ett_lustre_obd_dqinfo);
2427   }
2428
2429   offset = lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvb, offset, pinfo, tree);
2430
2431   offset = lustre_dissect_element_obd_dqinfo_dqi_igrace(tvb, offset, pinfo, tree);
2432
2433   offset = lustre_dissect_element_obd_dqinfo_dqi_flags(tvb, offset, pinfo, tree);
2434
2435   offset = lustre_dissect_element_obd_dqinfo_dqi_valid(tvb, offset, pinfo, tree);
2436
2437
2438   proto_item_set_len(item, offset-old_offset);
2439
2440   return offset;
2441 }
2442
2443 /* IDL: struct obd_dqblk { */
2444 /* IDL:         uint64 dqb_bhardlimit; */
2445 /* IDL:         uint64 dqb_bsoftlimit; */
2446 /* IDL:         uint64 dqb_curspace; */
2447 /* IDL:         uint64 dqb_ihardlimit; */
2448 /* IDL:         uint64 dqb_isoftlimit; */
2449 /* IDL:         uint64 dqb_curinodes; */
2450 /* IDL:         uint64 dqb_btime; */
2451 /* IDL:         uint64 dqb_itime; */
2452 /* IDL:         uint32 dqb_valid; */
2453 /* IDL:         uint32 padding; */
2454 /* IDL: } */
2455
2456 static int
2457 lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2458 {
2459   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bhardlimit);
2460
2461   return offset;
2462 }
2463
2464 static int
2465 lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2466 {
2467   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bsoftlimit);
2468
2469   return offset;
2470 }
2471
2472 static int
2473 lustre_dissect_element_obd_dqblk_dqb_curspace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2474 {
2475   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curspace);
2476
2477   return offset;
2478 }
2479
2480 static int
2481 lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2482 {
2483   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_ihardlimit);
2484
2485   return offset;
2486 }
2487
2488 static int
2489 lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2490 {
2491   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_isoftlimit);
2492
2493   return offset;
2494 }
2495
2496 static int
2497 lustre_dissect_element_obd_dqblk_dqb_curinodes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2498 {
2499   offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curinodes);
2500
2501   return offset;
2502 }
2503
2504 static int
2505 lustre_dissect_element_obd_dqblk_dqb_btime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2506 {
2507
2508   nstime_t ns;
2509   /* timestamp */
2510   ns.secs = tvb_get_letohl(tvb,offset);
2511   ns.nsecs=0;
2512   proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_btime, tvb, offset, 8, &ns );
2513   offset+=8;
2514   return offset;
2515 }
2516
2517 static int
2518 lustre_dissect_element_obd_dqblk_dqb_itime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2519 {
2520   nstime_t ns;
2521   /* timestamp */
2522   ns.secs = tvb_get_letohl(tvb,offset);
2523   ns.nsecs=0;
2524   proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_itime, tvb, offset, 8, &ns );
2525   offset+=8;
2526
2527   return offset;
2528 }
2529
2530 static int
2531 lustre_dissect_element_obd_dqblk_dqb_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2532 {
2533   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_valid);
2534
2535   return offset;
2536 }
2537
2538 static int
2539 lustre_dissect_element_obd_dqblk_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2540 {
2541   offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_padding);
2542
2543   return offset;
2544 }
2545
2546 int
2547 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_)
2548 {
2549   proto_item *item = NULL;
2550   proto_tree *tree = NULL;
2551   int old_offset;
2552
2553
2554
2555   old_offset = offset;
2556
2557   if (parent_tree) {
2558     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2559     tree = proto_item_add_subtree(item, ett_lustre_obd_dqblk);
2560   }
2561
2562   offset = lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvb, offset, pinfo, tree);
2563
2564   offset = lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvb, offset, pinfo, tree);
2565
2566   offset = lustre_dissect_element_obd_dqblk_dqb_curspace(tvb, offset, pinfo, tree);
2567
2568   offset = lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvb, offset, pinfo, tree);
2569
2570   offset = lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvb, offset, pinfo, tree);
2571
2572   offset = lustre_dissect_element_obd_dqblk_dqb_curinodes(tvb, offset, pinfo, tree);
2573
2574   offset = lustre_dissect_element_obd_dqblk_dqb_btime(tvb, offset, pinfo, tree);
2575
2576   offset = lustre_dissect_element_obd_dqblk_dqb_itime(tvb, offset, pinfo, tree);
2577
2578   offset = lustre_dissect_element_obd_dqblk_dqb_valid(tvb, offset, pinfo, tree);
2579
2580   offset = lustre_dissect_element_obd_dqblk_padding(tvb, offset, pinfo, tree);
2581
2582
2583   proto_item_set_len(item, offset-old_offset);
2584
2585   return offset;
2586 }
2587
2588
2589 /* IDL: struct obd_quotactl { */
2590 /* IDL:         uint32 qc_cmd; */
2591 /* IDL:         uint32 qc_type; */
2592 /* IDL:         uint32 qc_id; */
2593 /* IDL:         uint32 qc_stat; */
2594 /* IDL:         struct obd_dqinfo { */
2595 /* IDL: } qc_dqinfo; */
2596 /* IDL:         struct obd_dqblk { */
2597 /* IDL: } qc_dqblk; */
2598 /* IDL: } */
2599
2600 static int
2601 lustre_dissect_element_obd_quotactl_qc_cmd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2602 {
2603   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_cmd);
2604
2605   return offset;
2606 }
2607
2608 static int
2609 lustre_dissect_element_obd_quotactl_qc_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2610 {
2611   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_type);
2612
2613   return offset;
2614 }
2615
2616 static int
2617 lustre_dissect_element_obd_quotactl_qc_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2618 {
2619   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_id);
2620
2621   return offset;
2622 }
2623
2624 static int
2625 lustre_dissect_element_obd_quotactl_qc_stat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2626 {
2627   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_stat);
2628
2629   return offset;
2630 }
2631
2632
2633
2634 static int
2635 lustre_dissect_element_obd_quotactl_qc_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2636 {
2637   offset=lustre_dissect_struct_obd_dqblk(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqblk);
2638   return offset;
2639 }
2640
2641 static int
2642 lustre_dissect_element_obd_quotactl_qc_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2643 {
2644   offset=lustre_dissect_struct_obd_dqinfo(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqinfo);
2645   return offset;
2646 }
2647
2648 int
2649 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_)
2650 {
2651   proto_item *item = NULL;
2652   proto_tree *tree = NULL;
2653   int old_offset;
2654
2655   old_offset=offset;
2656
2657   if (parent_tree) {
2658     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2659     tree = proto_item_add_subtree(item, ett_lustre_obd_quotactl);
2660   }
2661
2662   offset=lustre_dissect_element_obd_quotactl_qc_cmd(tvb, offset, pinfo, tree);
2663
2664   offset=lustre_dissect_element_obd_quotactl_qc_type(tvb, offset, pinfo, tree);
2665
2666   offset=lustre_dissect_element_obd_quotactl_qc_id(tvb, offset, pinfo, tree);
2667
2668   offset=lustre_dissect_element_obd_quotactl_qc_stat(tvb, offset, pinfo, tree);
2669
2670   offset=lustre_dissect_element_obd_quotactl_qc_dqinfo(tvb, offset, pinfo, tree);
2671
2672   offset=lustre_dissect_element_obd_quotactl_qc_dqblk(tvb, offset, pinfo, tree);
2673
2674
2675   proto_item_set_len(item, offset-old_offset);
2676
2677   return offset;
2678 }
2679
2680
2681 /* IDL: struct quota_adjust_qunit { */
2682 /* IDL:         uint32 qaq_flags; */
2683 /* IDL:         uint32 qaq_id; */
2684 /* IDL:         uint64 qaq_bunit_sz; */
2685 /* IDL:         uint64 qaq_iunit_sz; */
2686 /* IDL:         uint64 padding1; */
2687 /* IDL: } */
2688
2689 static int
2690 lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2691 {
2692   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_flags);
2693
2694   return offset;
2695 }
2696
2697 static int
2698 lustre_dissect_element_quota_adjust_qunit_qaq_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2699 {
2700   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_id);
2701
2702   return offset;
2703 }
2704
2705 static int
2706 lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2707 {
2708   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_bunit_sz);
2709
2710   return offset;
2711 }
2712
2713 static int
2714 lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2715 {
2716   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_iunit_sz);
2717
2718   return offset;
2719 }
2720
2721 static int
2722 lustre_dissect_element_quota_adjust_qunit_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2723 {
2724   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_padding1);
2725
2726   return offset;
2727 }
2728
2729 int
2730 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_)
2731 {
2732   proto_item *item = NULL;
2733   proto_tree *tree = NULL;
2734   int old_offset;
2735
2736
2737
2738   old_offset=offset;
2739
2740   if (parent_tree) {
2741     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
2742     tree = proto_item_add_subtree(item, ett_lustre_quota_adjust_qunit);
2743   }
2744
2745   offset=lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvb, offset, pinfo, tree);
2746
2747   offset=lustre_dissect_element_quota_adjust_qunit_qaq_id(tvb, offset, pinfo, tree);
2748
2749   offset=lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvb, offset, pinfo, tree);
2750
2751   offset=lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvb, offset, pinfo, tree);
2752
2753   offset=lustre_dissect_element_quota_adjust_qunit_padding1(tvb, offset, pinfo, tree);
2754
2755
2756   proto_item_set_len(item, offset-old_offset);
2757
2758   return offset;
2759 }
2760
2761 /* IDL: struct mdt_body { */
2762 /* IDL:         struct lu_fid { */
2763 /* IDL: } fid1; */
2764 /* IDL:         struct lu_fid { */
2765 /* IDL: } fid2; */
2766 /* IDL:         struct lustre_handle { */
2767 /* IDL: } handle; */
2768 /* IDL:         uint64 valid; */
2769 /* IDL:         uint64 size; */
2770 /* IDL:         uint64 mtime; */
2771 /* IDL:         uint64 atime; */
2772 /* IDL:         uint64 ctime; */
2773 /* IDL:         uint64 blocks; */
2774 /* IDL:         uint64 ioepoch; */
2775 /* IDL:         uint64 ino; */
2776 /* IDL:         uint32 fsuid; */
2777 /* IDL:         uint32 fsgid; */
2778 /* IDL:         uint32 capability; */
2779 /* IDL:         uint32 mode; */
2780 /* IDL:         uint32 uid; */
2781 /* IDL:         uint32 gid; */
2782 /* IDL:         uint32 flags; */
2783 /* IDL:         uint32 rdev; */
2784 /* IDL:         uint32 nlink; */
2785 /* IDL:         uint32 generation; */
2786 /* IDL:         uint32 suppgid; */
2787 /* IDL:         uint32 eadatasize; */
2788 /* IDL:         uint32 aclsize; */
2789 /* IDL:         uint32 max_mdsize; */
2790 /* IDL:         uint32 max_cookiesize; */
2791 /* IDL:         uint32 uid_h; */
2792 /* IDL:         uint32 gid_h; */
2793 /* IDL:         uint32 padding_5; */
2794 /* IDL:         uint64 padding_6; */
2795 /* IDL:         uint64 padding_7; */
2796 /* IDL:         uint64 padding_8; */
2797 /* IDL:         uint64 padding_9; */
2798 /* IDL:         uint64 padding_10; */
2799 /* IDL: } */
2800
2801 static int
2802 lustre_dissect_element_mdt_body_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2803 {
2804   offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid1);
2805   return offset;
2806 }
2807
2808 static int
2809 lustre_dissect_element_mdt_body_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2810 {
2811   offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid2);
2812   return offset;
2813 }
2814
2815 static int
2816 lustre_dissect_element_mdt_body_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2817 {
2818   offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mdt_body_handle);
2819
2820   return offset;
2821 }
2822
2823 static int
2824 lustre_dissect_element_mdt_body_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2825 {
2826   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_valid);
2827
2828   return offset;
2829 }
2830
2831 static int
2832 lustre_dissect_element_mdt_body_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2833 {
2834   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_size);
2835
2836   return offset;
2837 }
2838
2839 static int
2840 lustre_dissect_element_mdt_body_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2841 {
2842   nstime_t ns;
2843   /* timestamp */
2844   ns.secs = tvb_get_letohl(tvb,offset);
2845   ns.nsecs=0;
2846   proto_tree_add_time(tree, hf_lustre_mdt_body_mtime, tvb, offset, 8, &ns );
2847   offset+=8;
2848   return offset;
2849 }
2850
2851 static int
2852 lustre_dissect_element_mdt_body_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2853 {
2854   nstime_t ns;
2855   /* timestamp */
2856   ns.secs = tvb_get_letohl(tvb,offset);
2857   ns.nsecs=0;
2858   proto_tree_add_time(tree, hf_lustre_mdt_body_atime, tvb, offset, 8, &ns );
2859   offset+=8;
2860
2861   return offset;
2862 }
2863
2864 static int
2865 lustre_dissect_element_mdt_body_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2866 {
2867   nstime_t ns;
2868   /* timestamp */
2869   ns.secs = tvb_get_letohl(tvb,offset);
2870   ns.nsecs=0;
2871   proto_tree_add_time(tree, hf_lustre_mdt_body_ctime, tvb, offset, 8, &ns );
2872   offset+=8;
2873   return offset;
2874 }
2875
2876 static int
2877 lustre_dissect_element_mdt_body_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2878 {
2879   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_blocks);
2880
2881   return offset;
2882 }
2883
2884 static int
2885 lustre_dissect_element_mdt_body_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2886 {
2887   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_ioepoch);
2888
2889   return offset;
2890 }
2891
2892 static int
2893 lustre_dissect_element_mdt_body_ino(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2894 {
2895   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_ino);
2896
2897   return offset;
2898 }
2899
2900 static int
2901 lustre_dissect_element_mdt_body_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2902 {
2903   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_fsuid);
2904
2905   return offset;
2906 }
2907
2908 static int
2909 lustre_dissect_element_mdt_body_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2910 {
2911   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_fsgid);
2912
2913   return offset;
2914 }
2915
2916 static int
2917 lustre_dissect_element_mdt_body_capability(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2918 {
2919   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_capability);
2920
2921   return offset;
2922 }
2923
2924 static int
2925 lustre_dissect_element_mdt_body_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2926 {
2927   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_mode);
2928
2929   return offset;
2930 }
2931
2932 static int
2933 lustre_dissect_element_mdt_body_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2934 {
2935   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_uid);
2936
2937   return offset;
2938 }
2939
2940 static int
2941 lustre_dissect_element_mdt_body_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2942 {
2943   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_gid);
2944
2945   return offset;
2946 }
2947
2948 static int
2949 lustre_dissect_element_mdt_body_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2950 {
2951   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_flags);
2952
2953   return offset;
2954 }
2955
2956 static int
2957 lustre_dissect_element_mdt_body_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2958 {
2959   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_rdev);
2960
2961   return offset;
2962 }
2963
2964 static int
2965 lustre_dissect_element_mdt_body_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2966 {
2967   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_nlink);
2968
2969   return offset;
2970 }
2971
2972 static int
2973 lustre_dissect_element_mdt_body_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2974 {
2975   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_generation);
2976
2977   return offset;
2978 }
2979
2980 static int
2981 lustre_dissect_element_mdt_body_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2982 {
2983   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_suppgid);
2984
2985   return offset;
2986 }
2987
2988 static int
2989 lustre_dissect_element_mdt_body_eadatasize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2990 {
2991   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_eadatasize);
2992
2993   return offset;
2994 }
2995
2996 static int
2997 lustre_dissect_element_mdt_body_aclsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
2998 {
2999   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_aclsize);
3000
3001   return offset;
3002 }
3003
3004 static int
3005 lustre_dissect_element_mdt_body_max_mdsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3006 {
3007   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_max_mdsize);
3008
3009   return offset;
3010 }
3011
3012 static int
3013 lustre_dissect_element_mdt_body_max_cookiesize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3014 {
3015   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_max_cookiesize);
3016
3017   return offset;
3018 }
3019
3020 static int
3021 lustre_dissect_element_mdt_body_uid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3022 {
3023   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_uid_h);
3024
3025   return offset;
3026 }
3027
3028 static int
3029 lustre_dissect_element_mdt_body_gid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3030 {
3031   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_gid_h);
3032
3033   return offset;
3034 }
3035
3036 static int
3037 lustre_dissect_element_mdt_body_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3038 {
3039   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_5);
3040
3041   return offset;
3042 }
3043
3044 static int
3045 lustre_dissect_element_mdt_body_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3046 {
3047   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_6);
3048
3049   return offset;
3050 }
3051
3052 static int
3053 lustre_dissect_element_mdt_body_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3054 {
3055   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_7);
3056
3057   return offset;
3058 }
3059
3060 static int
3061 lustre_dissect_element_mdt_body_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3062 {
3063   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_8);
3064
3065   return offset;
3066 }
3067
3068 static int
3069 lustre_dissect_element_mdt_body_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3070 {
3071   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_9);
3072
3073   return offset;
3074 }
3075
3076 static int
3077 lustre_dissect_element_mdt_body_padding_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3078 {
3079   offset= dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_body_padding_10);
3080
3081   return offset;
3082 }
3083
3084 int
3085 lustre_dissect_struct_mdt_body(tvbuff_t *tvb _U_, int offset _U_,
3086                                packet_info *pinfo _U_,
3087                                proto_tree *parent_tree _U_,
3088                                int hf_index _U_)
3089 {
3090   proto_item *item = NULL;
3091   proto_tree *tree = NULL;
3092   int old_offset;
3093
3094
3095   old_offset=offset;
3096
3097   if (parent_tree) {
3098     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3099     tree = proto_item_add_subtree(item, ett_lustre_mdt_body);
3100   }
3101
3102   offset=lustre_dissect_element_mdt_body_fid1(tvb, offset, pinfo, tree);
3103
3104   offset=lustre_dissect_element_mdt_body_fid2(tvb, offset, pinfo, tree);
3105
3106   offset=lustre_dissect_element_mdt_body_handle(tvb, offset, pinfo, tree);
3107
3108   offset=lustre_dissect_element_mdt_body_valid(tvb, offset, pinfo, tree);
3109
3110   offset=lustre_dissect_element_mdt_body_size(tvb, offset, pinfo, tree);
3111
3112   offset=lustre_dissect_element_mdt_body_mtime(tvb, offset, pinfo, tree);
3113
3114   offset=lustre_dissect_element_mdt_body_atime(tvb, offset, pinfo, tree);
3115
3116   offset=lustre_dissect_element_mdt_body_ctime(tvb, offset, pinfo, tree);
3117
3118   offset=lustre_dissect_element_mdt_body_blocks(tvb, offset, pinfo, tree);
3119
3120   offset=lustre_dissect_element_mdt_body_ioepoch(tvb, offset, pinfo, tree);
3121
3122   offset=lustre_dissect_element_mdt_body_ino(tvb, offset, pinfo, tree);
3123
3124   offset=lustre_dissect_element_mdt_body_fsuid(tvb, offset, pinfo, tree);
3125
3126   offset=lustre_dissect_element_mdt_body_fsgid(tvb, offset, pinfo, tree);
3127
3128   offset=lustre_dissect_element_mdt_body_capability(tvb, offset, pinfo, tree);
3129
3130   offset=lustre_dissect_element_mdt_body_mode(tvb, offset, pinfo, tree);
3131
3132   offset=lustre_dissect_element_mdt_body_uid(tvb, offset, pinfo, tree);
3133
3134   offset=lustre_dissect_element_mdt_body_gid(tvb, offset, pinfo, tree);
3135
3136   offset=lustre_dissect_element_mdt_body_flags(tvb, offset, pinfo, tree);
3137
3138   offset=lustre_dissect_element_mdt_body_rdev(tvb, offset, pinfo, tree);
3139
3140   offset=lustre_dissect_element_mdt_body_nlink(tvb, offset, pinfo, tree);
3141
3142   offset=lustre_dissect_element_mdt_body_generation(tvb, offset, pinfo, tree);
3143
3144   offset=lustre_dissect_element_mdt_body_suppgid(tvb, offset, pinfo, tree);
3145
3146   offset=lustre_dissect_element_mdt_body_eadatasize(tvb, offset, pinfo, tree);
3147
3148   offset=lustre_dissect_element_mdt_body_aclsize(tvb, offset, pinfo, tree);
3149
3150   offset=lustre_dissect_element_mdt_body_max_mdsize(tvb, offset, pinfo, tree);
3151
3152   offset=lustre_dissect_element_mdt_body_max_cookiesize(tvb, offset, pinfo, tree);
3153
3154   offset=lustre_dissect_element_mdt_body_uid_h(tvb, offset, pinfo, tree);
3155
3156   offset=lustre_dissect_element_mdt_body_gid_h(tvb, offset, pinfo, tree);
3157
3158   offset=lustre_dissect_element_mdt_body_padding_5(tvb, offset, pinfo, tree);
3159
3160   offset=lustre_dissect_element_mdt_body_padding_6(tvb, offset, pinfo, tree);
3161
3162   offset=lustre_dissect_element_mdt_body_padding_7(tvb, offset, pinfo, tree);
3163
3164   offset=lustre_dissect_element_mdt_body_padding_8(tvb, offset, pinfo, tree);
3165
3166   offset=lustre_dissect_element_mdt_body_padding_9(tvb, offset, pinfo, tree);
3167
3168   offset=lustre_dissect_element_mdt_body_padding_10(tvb, offset, pinfo, tree);
3169
3170
3171   proto_item_set_len(item, offset-old_offset);
3172
3173   return offset;
3174 }
3175
3176 /* I don't find where this struct appear on wire.. need to search mdc_setattr_pack() */
3177 /* IDL: struct mdt_rec_setattr { */
3178 /* IDL:         uint32 sa_opcode; */
3179 /* IDL:         uint32 sa_cap; */
3180 /* IDL:         uint32 sa_fsuid; */
3181 /* IDL:         uint32 sa_fsuid_h; */
3182 /* IDL:         uint32 sa_fsgid; */
3183 /* IDL:         uint32 sa_fsgid_h; */
3184 /* IDL:         uint32 sa_suppgid; */
3185 /* IDL:         uint32 sa_suppgid_h; */
3186 /* IDL:         uint32 sa_padding_1; */
3187 /* IDL:         uint32 sa_padding_1_h; */
3188 /* IDL:         struct lu_fid { */
3189 /* IDL: } sa_fid; */
3190 /* IDL:         uint64 sa_valid; */
3191 /* IDL:         uint32 sa_uid; */
3192 /* IDL:         uint32 sa_gid; */
3193 /* IDL:         uint64 sa_size; */
3194 /* IDL:         uint64 sa_blocks; */
3195 /* IDL:         uint64 sa_mtime; */
3196 /* IDL:         uint64 sa_atime; */
3197 /* IDL:         uint64 sa_ctime; */
3198 /* IDL:         uint32 sa_attr_flags; */
3199 /* IDL:         uint32 sa_mode; */
3200 /* IDL:         uint32 sa_padding_2; */
3201 /* IDL:         uint32 sa_padding_3; */
3202 /* IDL:         uint32 sa_padding_4; */
3203 /* IDL:         uint32 sa_padding_5; */
3204 /* IDL: } */
3205
3206 static int
3207 lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3208 {
3209   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_opcode);
3210
3211   return offset;
3212 }
3213
3214 static int
3215 lustre_dissect_element_mdt_rec_setattr_sa_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3216 {
3217   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_cap);
3218
3219   return offset;
3220 }
3221
3222 static int
3223 lustre_dissect_element_mdt_rec_setattr_sa_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3224 {
3225   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_fsuid);
3226
3227   return offset;
3228 }
3229
3230 static int
3231 lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3232 {
3233   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_fsuid_h);
3234
3235   return offset;
3236 }
3237
3238 static int
3239 lustre_dissect_element_mdt_rec_setattr_sa_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3240 {
3241   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_fsgid);
3242
3243   return offset;
3244 }
3245
3246 static int
3247 lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3248 {
3249   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_fsgid_h);
3250
3251   return offset;
3252 }
3253
3254 static int
3255 lustre_dissect_element_mdt_rec_setattr_sa_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3256 {
3257   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_suppgid);
3258
3259   return offset;
3260 }
3261
3262 static int
3263 lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3264 {
3265   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_suppgid_h);
3266
3267   return offset;
3268 }
3269
3270 static int
3271 lustre_dissect_element_mdt_rec_setattr_sa_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3272 {
3273   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_1);
3274
3275   return offset;
3276 }
3277
3278 static int
3279 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_)
3280 {
3281   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_1_h);
3282
3283   return offset;
3284 }
3285
3286 static int
3287 lustre_dissect_element_mdt_rec_setattr_sa_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3288 {
3289   offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_setattr_sa_fid);
3290
3291   return offset;
3292 }
3293
3294 static int
3295 lustre_dissect_element_mdt_rec_setattr_sa_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3296 {
3297   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_valid);
3298
3299   return offset;
3300 }
3301
3302 static int
3303 lustre_dissect_element_mdt_rec_setattr_sa_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3304 {
3305   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_uid);
3306
3307   return offset;
3308 }
3309
3310 static int
3311 lustre_dissect_element_mdt_rec_setattr_sa_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3312 {
3313   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_gid);
3314
3315   return offset;
3316 }
3317
3318 static int
3319 lustre_dissect_element_mdt_rec_setattr_sa_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3320 {
3321   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_size);
3322
3323   return offset;
3324 }
3325
3326 static int
3327 lustre_dissect_element_mdt_rec_setattr_sa_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3328 {
3329   offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_blocks);
3330
3331   return offset;
3332 }
3333
3334 static int
3335 lustre_dissect_element_mdt_rec_setattr_sa_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3336 {
3337
3338   nstime_t ns;
3339   /* timestamp */
3340   ns.secs = tvb_get_letohl(tvb,offset);
3341   ns.nsecs=0;
3342   proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_mtime, tvb, offset, 8, &ns );
3343   offset+=8;
3344   return offset;
3345 }
3346
3347 static int
3348 lustre_dissect_element_mdt_rec_setattr_sa_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3349 {
3350   nstime_t ns;
3351   /* timestamp */
3352   ns.secs = tvb_get_letohl(tvb,offset);
3353   ns.nsecs=0;
3354   proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_atime, tvb, offset, 8, &ns );
3355   offset+=8;
3356   return offset;
3357 }
3358
3359 static int
3360 lustre_dissect_element_mdt_rec_setattr_sa_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3361 {
3362   nstime_t ns;
3363   /* timestamp */
3364   ns.secs = tvb_get_letohl(tvb,offset);
3365   ns.nsecs=0;
3366   proto_tree_add_time(tree, hf_lustre_mdt_rec_setattr_sa_ctime, tvb, offset, 8, &ns );
3367   offset+=8;
3368   return offset;
3369 }
3370
3371 static int
3372 lustre_dissect_element_mdt_rec_setattr_sa_attr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3373 {
3374   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_attr_flags);
3375
3376   return offset;
3377 }
3378
3379 static int
3380 lustre_dissect_element_mdt_rec_setattr_sa_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3381 {
3382   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_mode);
3383
3384   return offset;
3385 }
3386
3387 static int
3388 lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3389 {
3390   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_2);
3391
3392   return offset;
3393 }
3394
3395 static int
3396 lustre_dissect_element_mdt_rec_setattr_sa_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3397 {
3398   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_3);
3399
3400   return offset;
3401 }
3402
3403 static int
3404 lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3405 {
3406   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_4);
3407
3408   return offset;
3409 }
3410
3411 static int
3412 lustre_dissect_element_mdt_rec_setattr_sa_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3413 {
3414   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_setattr_sa_padding_5);
3415
3416   return offset;
3417 }
3418
3419 int
3420 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_)
3421 {
3422   proto_item *item = NULL;
3423   proto_tree *tree = NULL;
3424   int old_offset;
3425
3426   guint32 sa_opcode ;
3427
3428
3429   old_offset=offset;
3430
3431   if (parent_tree) {
3432     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
3433     tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setattr);
3434   }
3435   sa_opcode=tvb_get_letohl(tvb,offset);
3436   display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_t_vals, "Unknown sa_opc"));
3437
3438   offset=lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvb, offset, pinfo, tree);
3439
3440   offset=lustre_dissect_element_mdt_rec_setattr_sa_cap(tvb, offset, pinfo, tree);
3441
3442   offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid(tvb, offset, pinfo, tree);
3443
3444   offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvb, offset, pinfo, tree);
3445
3446   offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid(tvb, offset, pinfo, tree);
3447
3448   offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvb, offset, pinfo, tree);
3449
3450   offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid(tvb, offset, pinfo, tree);
3451
3452   offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvb, offset, pinfo, tree);
3453
3454   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1(tvb, offset, pinfo, tree);
3455
3456   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1_h(tvb, offset, pinfo, tree);
3457
3458   offset=lustre_dissect_element_mdt_rec_setattr_sa_fid(tvb, offset, pinfo, tree);
3459
3460   offset=lustre_dissect_element_mdt_rec_setattr_sa_valid(tvb, offset, pinfo, tree);
3461
3462   offset=lustre_dissect_element_mdt_rec_setattr_sa_uid(tvb, offset, pinfo, tree);
3463
3464   offset=lustre_dissect_element_mdt_rec_setattr_sa_gid(tvb, offset, pinfo, tree);
3465
3466   offset=lustre_dissect_element_mdt_rec_setattr_sa_size(tvb, offset, pinfo, tree);
3467
3468   offset=lustre_dissect_element_mdt_rec_setattr_sa_blocks(tvb, offset, pinfo, tree);
3469
3470   offset=lustre_dissect_element_mdt_rec_setattr_sa_mtime(tvb, offset, pinfo, tree);
3471
3472   offset=lustre_dissect_element_mdt_rec_setattr_sa_atime(tvb, offset, pinfo, tree);
3473
3474   offset=lustre_dissect_element_mdt_rec_setattr_sa_ctime(tvb, offset, pinfo, tree);
3475
3476   offset=lustre_dissect_element_mdt_rec_setattr_sa_attr_flags(tvb, offset, pinfo, tree);
3477
3478   offset=lustre_dissect_element_mdt_rec_setattr_sa_mode(tvb, offset, pinfo, tree);
3479
3480   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvb, offset, pinfo, tree);
3481
3482   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_3(tvb, offset, pinfo, tree);
3483
3484   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvb, offset, pinfo, tree);
3485
3486   offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_5(tvb, offset, pinfo, tree);
3487
3488
3489   proto_item_set_len(item, offset-old_offset);
3490
3491   return offset;
3492 }
3493
3494 /* IDL: struct mdt_rec_create { */
3495 /* IDL:         uint32 cr_opcode; */
3496 /* IDL:         uint32 cr_cap; */
3497 /* IDL:         uint32 cr_fsuid; */
3498 /* IDL:         uint32 cr_fsuid_h; */
3499 /* IDL:         uint32 cr_fsgid; */
3500 /* IDL:         uint32 cr_fsgid_h; */
3501 /* IDL:         uint32 cr_suppgid1; */
3502 /* IDL:         uint32 cr_suppgid1_h; */
3503 /* IDL:         uint32 cr_suppgid2; */
3504 /* IDL:         uint32 cr_suppgid2_h; */
3505 /* IDL:         struct lu_fid { */
3506 /* IDL: } cr_fid1; */
3507 /* IDL:         struct lu_fid { */
3508 /* IDL: } cr_fid2; */
3509 /* IDL:         struct lustre_handle { */
3510 /* IDL: } cr_old_handle; */
3511 /* IDL:         uint64 cr_time; */
3512 /* IDL:         uint64 cr_rdev; */
3513 /* IDL:         uint64 cr_ioepoch; */
3514 /* IDL:         uint64 cr_padding_1; */
3515 /* IDL:         uint32 cr_mode; */
3516 /* IDL:         uint32 cr_bias; */
3517 /* IDL:         uint32 cr_flags_l; */
3518 /* IDL:         uint32 cr_flags_h; */
3519 /* IDL:         uint32 cr_umask; */
3520 /* IDL:         uint32 cr_padding_4; */
3521 /* IDL: } */
3522
3523 static int
3524 lustre_dissect_element_mdt_rec_create_cr_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3525 {
3526   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_opcode);
3527
3528   return offset;
3529 }
3530
3531 static int
3532 lustre_dissect_element_mdt_rec_create_cr_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3533 {
3534   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_cap);
3535
3536   return offset;
3537 }
3538
3539 static int
3540 lustre_dissect_element_mdt_rec_create_cr_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3541 {
3542   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_fsuid);
3543
3544   return offset;
3545 }
3546
3547 static int
3548 lustre_dissect_element_mdt_rec_create_cr_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3549 {
3550   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_fsuid_h);
3551
3552   return offset;
3553 }
3554
3555 static int
3556 lustre_dissect_element_mdt_rec_create_cr_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3557 {
3558   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_fsgid);
3559
3560   return offset;
3561 }
3562
3563 static int
3564 lustre_dissect_element_mdt_rec_create_cr_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3565 {
3566   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_fsgid_h);
3567
3568   return offset;
3569 }
3570
3571 static int
3572 lustre_dissect_element_mdt_rec_create_cr_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3573 {
3574   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_suppgid1);
3575
3576   return offset;
3577 }
3578
3579 static int
3580 lustre_dissect_element_mdt_rec_create_cr_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3581 {
3582   offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mdt_rec_create_cr_suppgid1_h);
3583