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