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