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