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