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