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