Whamcloud - gitweb
b=17603
authormaxim <maxim>
Wed, 26 Nov 2008 12:32:02 +0000 (12:32 +0000)
committermaxim <maxim>
Wed, 26 Nov 2008 12:32:02 +0000 (12:32 +0000)
Wireshark plugins for dissecting LNET/Lustre 1.6 packets.
(contributed by Stephane Thiell)

lustre/contrib/packet-lnet.c [new file with mode: 0644]
lustre/contrib/packet-lustre.c [new file with mode: 0644]

diff --git a/lustre/contrib/packet-lnet.c b/lustre/contrib/packet-lnet.c
new file mode 100644 (file)
index 0000000..32feb95
--- /dev/null
@@ -0,0 +1,783 @@
+/* packet-lnet.c 
+ * Lnet packet dissection 
+ * Author: Laurent George <george@ocre.cea.fr>
+ * based on packet-agentx.c and packet-afs.c
+ * 20080903
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <time.h>
+#include <string.h>
+#include <glib.h>
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/prefs.h>
+#include <epan/emem.h>
+
+#include <epan/dissectors/packet-tcp.h>
+
+/* how much data has at least to be available to be able to determine the
+ * length of the lnet message */
+#define LNET_HEADER_LEN 52
+#define LNET_NID_DEST_OFFSET 24
+#define LNET_NID_SRC_OFFSET 32
+#define LNET_MSG_TYPE_OFFSET 48
+
+static guint global_lnet_tcp_port = 988;
+static guint lnet_tcp_port = 988;
+
+void proto_reg_handoff_lnet(void);
+
+#define LNET_PTL_INDEX_OFFSET_PUT 88
+
+/* Define the lnet proto */
+static int proto_lnet = -1;
+
+static int hf_lnet_src_nid = -1 ;
+static int hf_lnet_src_nid_addr = -1 ;
+static int hf_lnet_src_nid_lnet_type = -1 ; 
+static int hf_lnet_src_nid_interface = -1  ;
+
+static int hf_lnet_ksm_type = -1 ;
+static int hf_lnet_ksm_csum= -1;       
+static int hf_lnet_ksm_zc_req_cookie=-1;
+static int hf_lnet_ksm_zc_ack_cookie=-1; 
+
+static int hf_lnet_dest_nid = -1 ;
+static int hf_lnet_dest_nid_addr = -1 ;
+static int hf_lnet_dest_nid_lnet_type = -1 ; 
+static int hf_lnet_dest_nid_interface = -1 ;
+
+static int hf_lnet_dest_pid = -1 ; 
+static int hf_lnet_src_pid = -1 ;
+
+static int hf_lnet_msg_type = -1 ;
+static int hf_lnet_payload_length = -1;
+static int hf_lnet_payload = -1 ;
+static int hf_lnet_msg_header = -1 ; 
+static int hf_lnet_msg_filler = -1 ;
+
+static int hf_dst_wmd = -1 ;   
+static int hf_dst_wmd_interface = -1 ;   
+static int hf_dst_wmd_object = -1 ;   
+
+static int hf_match_bits = -1 ; 
+static int hf_mlength = -1 ; 
+
+static int hf_hdr_data = -1 ;
+static int hf_ptl_index = -1 ;
+static int hf_offset = -1 ;
+static gint ett_lnet = -1;
+
+static int hf_src_offset = -1;
+static int hf_sink_length = -1;
+
+static int hf_hello_incarnation = -1 ;
+static int hf_hello_type = -1 ; 
+
+static gint ett_lnet_dest_nid= -1;
+static gint ett_lnet_src_nid= -1;
+
+tvbuff_t *next_tvb;
+
+/*static heur_dissector_list_t heur_subdissector_list; */
+static dissector_table_t subdissector_table;
+
+static const value_string lnetnames[] = {
+       { 1, "QSWLND   "},
+       { 2, "SOCKLND  "},
+       { 3, "GMLND    "},
+       { 4, "PTLLND   "},
+       { 5, "O2IBLND  "},
+       { 6, "CIBLND   "},
+       { 7, "OPENIBLND"}, 
+       { 8, "IIBLND   "},
+       { 9, "LOLND    "},
+       { 10,"RALND    "},
+       { 11,"VIBLND   "},
+       { 12,"MXLND    "} 
+};
+
+enum MSG_type{
+       LNET_MSG_ACK = 0,
+       LNET_MSG_PUT,
+       LNET_MSG_GET,
+       LNET_MSG_REPLY,
+       LNET_MSG_HELLO,
+} ;
+
+static const value_string lnet_msg_type_t[] = {
+       { LNET_MSG_ACK  , "ACK"},  
+       { LNET_MSG_PUT  , "PUT"},  
+       { LNET_MSG_GET  , "GET"},  
+       { LNET_MSG_REPLY, "REPLY"},  
+       { LNET_MSG_HELLO, "HELLO"} 
+};
+
+/* defined in lustre/include/lustre/lustre_idl.h */
+static const value_string portal_indices[] = {
+       { 1 , "CONNMGR_REQUEST_PORTAL"},
+       { 2 , "CONNMGR_REPLY_PORTAL"},
+       { 3 , "OSC_REQUEST_PORTAL(obsolete)"},
+       { 4 , "OSC_REPLY_PORTAL"},
+       { 5 , "OSC_BULK_PORTAL(obsolete)"},
+       { 6 , "OST_IO_PORTAL"},
+       { 7 , "OST_CREATE_PORTAL"},
+       { 8 , "OST_BULK_PORTAL"},
+       { 9 , "MDC_REQUEST_PORTAL(obsolete)"},
+       { 10 , "MDC_REPLY_PORTAL"},
+       { 11 , "MDC_BULK_PORTAL(obsolete)"},
+       { 12 , "MDS_REQUEST_PORTAL"},
+       { 13 , "MDS_REPLY_PORTAL(obsolete)"},
+       { 14 , "MDS_BULK_PORTAL"},
+       { 15 , "LDLM_CB_REQUEST_PORTAL"},
+       { 16 , "LDLM_CB_REPLY_PORTAL"},
+       { 17 , "LDLM_CANCEL_REQUEST_PORTAL"},
+       { 18 , "LDLM_CANCEL_REPLY_PORTAL"},
+       { 19 , "PTLBD_REQUEST_PORTAL(obsolete)"},
+       { 20 , "PTLBD_REPLY_PORTAL(obsolete)"},
+       { 21 , "PTLBD_BULK_PORTAL(obsolete)"},
+       { 22 , "MDS_SETATTR_PORTAL"},
+       { 23 , "MDS_READPAGE_PORTAL"},
+       { 25 , "MGC_REPLY_PORTAL"},
+       { 26 , "MGS_REQUEST_PORTAL"},
+       { 27 , "MGS_REPLY_PORTAL"},
+       { 28 , "OST_REQUEST_PORTAL"}
+};
+
+#define KSOCK_MSG_NOOP          0xc0            /* ksm_u empty */ 
+#define KSOCK_MSG_LNET          0xc1            /* lnet msg */
+
+static const value_string ksm_type_t[] = {
+       {0xc0, "KSOCK_MSG_NOOP"},/* ksm_u empty */ 
+       {0xc1, "KSOCK_MSG_LNET"} /* lnet msg */
+};
+
+
+static int dissect_csum(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       guint32 csum;
+       csum = tvb_get_letohl(tvb, offset);
+       if (!csum)
+               proto_tree_add_text(tree, tvb, offset, 4, "checksum disabled");
+       else
+               proto_tree_add_item(tree, hf_lnet_ksm_csum, tvb, offset, 4, TRUE);
+
+       offset+=4;
+       return offset;
+}
+
+
+static int dissect_req_cookie(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       guint32 req;
+       req= tvb_get_letoh64(tvb, offset);
+       if (!req)
+               proto_tree_add_text(tree, tvb, offset, 8, "ack not required");
+       else
+               proto_tree_add_item(tree, hf_lnet_ksm_zc_req_cookie, tvb, offset, 8, TRUE);
+       offset+=8;
+       return offset;
+}
+
+static int dissect_ack_cookie(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       guint32 ack;
+       ack= tvb_get_letoh64(tvb, offset);
+       if (!ack)
+               proto_tree_add_text(tree, tvb, offset, 8, "not ack");
+       else
+               proto_tree_add_item(tree, hf_lnet_ksm_zc_ack_cookie, tvb, offset, 8, TRUE);
+       offset+=8;
+       return offset;
+}
+
+static void 
+dissect_ksock_msg_noop( tvbuff_t * tvb, packet_info *pinfo _U_ , proto_tree *tree)
+{
+       guint32 offset;
+       offset=0;
+       proto_tree_add_item(tree, hf_lnet_ksm_type, tvb, offset, 4, TRUE);offset+=4;
+       offset=dissect_csum(tvb,tree,offset);
+       offset=dissect_req_cookie(tvb, tree, offset);
+       offset=dissect_ack_cookie(tvb,tree,offset);
+}
+
+
+static int dissect_ksock_msg(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       proto_tree_add_item(tree, hf_lnet_ksm_type, tvb, offset, 4, TRUE);offset+=4;
+       offset=dissect_csum(tvb,tree,offset);
+       offset=dissect_req_cookie(tvb, tree, offset);
+       offset=dissect_ack_cookie(tvb,tree,offset);
+       return offset;
+}
+
+static int dissect_dest_nid(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       proto_tree_add_item(tree, hf_lnet_dest_nid_addr, tvb, offset, 4, TRUE);offset+=4;
+       proto_tree_add_item(tree, hf_lnet_dest_nid_interface, tvb, offset, 2, TRUE);offset+=2;
+       proto_tree_add_item(tree, hf_lnet_dest_nid_lnet_type, tvb, offset, 2, TRUE);offset+=2;
+       return offset;
+}
+
+
+static int dissect_src_nid(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       proto_tree_add_item(tree, hf_lnet_src_nid_addr, tvb, offset, 4, TRUE);offset+=4;
+       proto_tree_add_item(tree, hf_lnet_src_nid_interface, tvb, offset, 2, TRUE);offset+=2;
+       proto_tree_add_item(tree, hf_lnet_src_nid_lnet_type, tvb, offset, 2, TRUE);offset+=2;
+       return offset;
+}
+
+static int dissect_lnet_put(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_)
+{
+       /* typedef struct lnet_put {
+                lnet_handle_wire_t  ack_wmd;
+                __u64               match_bits;
+                __u64               hdr_data;
+                __u32               ptl_index;
+                __u32               offset;
+                } WIRE_ATTR lnet_put_t; */
+
+       gboolean little_endian=TRUE ;
+
+       proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,little_endian); offset+=8;
+       proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,little_endian);offset+=8;
+
+       proto_tree_add_item(tree,hf_match_bits,tvb,offset,8,little_endian);offset+=8;
+       proto_tree_add_item(tree,hf_hdr_data,tvb,offset,8,little_endian);offset+=8;
+       if (check_col(pinfo->cinfo, COL_INFO)) 
+               col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(tvb_get_letohl(tvb,offset), portal_indices, "Unknow")); /* add some nice value  */
+       proto_item_append_text(tree, ", %s" , val_to_str(tvb_get_letohl(tvb,offset), portal_indices, "Unknow")); /* print ptl_index */
+       proto_tree_add_item(tree,hf_ptl_index,tvb,offset,4,little_endian);offset+=4;
+       proto_tree_add_item(tree,hf_offset,tvb,offset,4,little_endian);offset+=4;
+       return offset ; 
+}
+
+static int dissect_lnet_get(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_)
+{
+       /* typedef struct lnet_get {
+                lnet_handle_wire_t  return_wmd;
+                __u64               match_bits;
+                __u32               ptl_index;
+                __u32               src_offset;
+                __u32               sink_length;
+                } WIRE_ATTR lnet_get_t; */
+
+       gboolean little_endian=TRUE ;
+       proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,little_endian);offset+=8;
+       proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,little_endian);offset+=8;
+       /*if (check_col(pinfo->cinfo, COL_INFO))*/
+       /*        col_prepend_fence_fstr(pinfo->cinfo, COL_INFO, " %" G_GINT64_MODIFIER "u ", tvb_get_letoh64(tvb,offset) );*/
+
+       proto_tree_add_item(tree,hf_match_bits,tvb,offset,8,little_endian);offset+=8;
+       if (check_col(pinfo->cinfo, COL_INFO)) 
+               col_append_sep_str(pinfo->cinfo, COL_INFO, ", ", val_to_str(tvb_get_letohl(tvb,offset), portal_indices, "Unknow")); 
+       proto_item_append_text(tree, ", %s" , val_to_str(tvb_get_letohl(tvb,offset), portal_indices, "Unknow")); /* print ptl_index */
+       proto_tree_add_item(tree,hf_ptl_index,tvb,offset,4,little_endian);offset+=4;
+       proto_tree_add_item(tree,hf_src_offset,tvb,offset,4,little_endian);offset+=4;
+       proto_tree_add_item(tree,hf_sink_length,tvb,offset,4,little_endian);offset+=4;
+       return offset; 
+}
+
+static int dissect_lnet_reply(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       /* typedef struct lnet_reply {
+                lnet_handle_wire_t  dst_wmd;
+                } WIRE_ATTR lnet_reply_t; */
+
+       gboolean little_endian=TRUE ;
+       proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,little_endian);offset+=8; 
+       proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,little_endian);offset+=8;
+
+       return offset;
+}
+
+
+static int dissect_lnet_hello(tvbuff_t * tvb, proto_tree *tree, int offset)
+{
+       /* typedef struct lnet_hello {
+                __u64              incarnation;
+                __u32              type;
+                } WIRE_ATTR lnet_hello_t; */
+
+       gboolean little_endian=TRUE ;
+       proto_tree_add_item(tree,hf_hello_incarnation,tvb,offset,8,little_endian); offset+=8;
+       proto_tree_add_item(tree,hf_hello_type,tvb,offset,4,little_endian); offset+=4;
+       return offset; 
+}
+
+static int dissect_lnet_ack(tvbuff_t * tvb, proto_tree *tree, int offset, packet_info *pinfo _U_)
+{
+       /* typedef struct lnet_ack {
+                lnet_handle_wire_t  dst_wmd;
+                __u64               match_bits;
+                __u32               mlength;
+                } WIRE_ATTR lnet_ack_t; */
+
+       proto_tree_add_item(tree,hf_dst_wmd_interface,tvb,offset,8,TRUE); offset+=8;
+       proto_tree_add_item(tree,hf_dst_wmd_object,tvb,offset,8,TRUE);offset+=8;
+       proto_tree_add_item(tree,hf_match_bits,tvb,offset,8,TRUE);offset+=8;
+       proto_tree_add_item(tree,hf_mlength, tvb,offset,4,TRUE); offset+=4;
+       return offset ; 
+} 
+
+static void dissect_lnet_message(tvbuff_t * tvb, packet_info *pinfo, proto_tree *tree); 
+/* return the pdu length */ 
+static guint 
+get_lnet_message_len(packet_info  __attribute__((__unused__))*pinfo, tvbuff_t *tvb, int offset) 
+{ 
+       /*
+        * Get the payload length
+        */
+       guint32 plen;
+       plen = tvb_get_letohl(tvb,offset+28+24); /*24 = ksm header, 28 = le reste des headers*/
+
+       /*
+        * That length doesn't include the header; add that in.
+        */
+       return plen + 72 +24 ; /*  +24 == ksock msg header.. :D */
+
+}
+
+static guint
+get_noop_message_len(packet_info  __attribute__((__unused__))*pinfo, tvbuff_t *tvb _U_ , int offset _U_) 
+{
+       return 24;
+}
+
+static void 
+dissect_lnet(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)  
+{
+       /* TODO : correct this, now we do a difference between packet with NOOP and others ..
+                but I don't find how to use pdu_dissect with a variable length<=LNET_HEADER_LEN */
+       switch(tvb_get_letohl(tvb,0)){
+               case KSOCK_MSG_NOOP:
+                       /*g_print("ksock noop %d \n", pinfo->fd->num);*/
+                       tcp_dissect_pdus(tvb,pinfo,tree,TRUE,0, get_noop_message_len,dissect_ksock_msg_noop);
+                       break;
+               case KSOCK_MSG_LNET:
+                       tcp_dissect_pdus(tvb,pinfo,tree,TRUE,LNET_HEADER_LEN, get_lnet_message_len,dissect_lnet_message);
+                       break;
+       }
+
+}
+
+typedef struct t_nid {
+       guint32 addr;
+       guint16 interface;
+       guint16 proto;
+} t_nid ;
+
+static t_nid get_nid(tvbuff_t *tvb, gint offset)
+{
+       t_nid nid ;
+       nid.addr = g_htonl(tvb_get_ipv4(tvb,offset));
+       nid.interface = tvb_get_letohs(tvb,offset+4);
+       nid.proto = tvb_get_letohs(tvb,offset+6);
+       return nid ;
+       /* example : 
+        * get_nid(tvb, LNET_NID_DEST_OFFSET);
+        * get_nid(tvb, LNET_NID_SRC_OFFSET); 
+        * */
+}
+
+/*----------------------------------------------------------- */
+/* For the conversation */
+
+typedef struct {
+       guint64 match_bits;
+} my_entry_t;
+
+
+typedef struct lnet_request_key {
+       guint64 match_bits ;
+       guint32 conversation;
+} lnet_request_key_t;
+
+typedef struct lnet_request_val {
+       guint64 match_bits;
+       guint32 packet_num_parent;
+} lnet_request_val_t;
+
+
+static GHashTable *lnet_request_hash = NULL;
+
+/*
+ * Hash Functions
+ */
+static gint
+lnet_equal(gconstpointer v, gconstpointer w)
+{
+       const struct lnet_request_key *v1 = (const struct lnet_request_key *)v;
+       const struct lnet_request_key *v2 = (const struct lnet_request_key *)w;
+
+       if (v1 -> conversation == v2 -> conversation &&
+                       v1 -> match_bits == v2 -> match_bits)
+       {
+
+               return 1;
+       }
+
+       return 0;
+}
+
+static guint
+lnet_hash (gconstpointer v)
+{
+       const struct lnet_request_key *key = (const struct lnet_request_key *)v;
+       guint val;
+
+       val = key -> conversation + key -> match_bits ;
+
+       return val;
+}
+
+
+static void
+lnet_init_protocol(void)
+{
+       if (lnet_request_hash)
+               g_hash_table_destroy(lnet_request_hash);
+
+       lnet_request_hash = g_hash_table_new(lnet_hash, lnet_equal);
+}
+
+
+static lnet_request_val_t*
+get_lnet_conv(packet_info * pinfo , GHashTable * lnet_hash_table,  guint64 match_bits )
+{
+       conversation_t *  conversation ; 
+       lnet_request_key_t request_key, *new_request_key;
+       lnet_request_val_t *request_val=NULL ;
+
+       conversation = find_conversation(pinfo->fd->num, &pinfo->src, &pinfo->dst, pinfo->ptype, pinfo->srcport, pinfo->destport, 0);
+
+
+       if (NULL == conversation)
+               /* It's not part of any conversation - create a new one. */
+               conversation = conversation_new(pinfo->fd->num,  &pinfo->src, &pinfo->dst, proto_lnet,
+                               pinfo->srcport, pinfo->destport, 0);
+
+       request_key.conversation = conversation->index;
+       request_key.match_bits = match_bits;
+
+       request_val = (struct lnet_request_val * ) g_hash_table_lookup(lnet_hash_table, &request_key);
+       if(!request_val){
+               new_request_key = se_alloc(sizeof(struct lnet_request_key));
+               *new_request_key = request_key;
+               request_val = se_alloc(sizeof(struct lnet_request_val));
+               request_val -> match_bits = match_bits;
+               request_val -> packet_num_parent = pinfo->fd->num ;
+               /*request_val -> filename = "test" ; */
+               g_hash_table_insert(lnet_hash_table, new_request_key, request_val);
+
+       }
+
+       return request_val ;
+
+}
+
+
+
+/*----------------------------------------------------------- */
+static void
+dissect_lnet_message(tvbuff_t * tvb, packet_info *pinfo, proto_tree *tree)
+{
+
+       guint64 match;
+       guint32 msg_type;
+
+       lnet_request_val_t* conversation_val ;
+
+
+       if (check_col(pinfo->cinfo, COL_PROTOCOL)) {
+               col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lnet");
+       }
+
+       if (check_col(pinfo->cinfo, COL_INFO)) {
+               /* t_nid dest_nid ; */
+               /*t_nid src_nid ; */
+               /*guint32 msg_type;*/
+               /*[> col_clear(pinfo->cinfo, COL_INFO); <]*/
+               /*dest_nid = get_nid(tvb, LNET_NID_DEST_OFFSET);*/
+               /*src_nid = get_nid(tvb, LNET_NID_SRC_OFFSET);*/
+
+               /*[> col_add_fstr(pinfo->cinfo, COL_INFO, "%s@tcp%d > %s@tcp%d",
+                       ip_to_str((guint8 *) &src_nid.addr), src_nid.interface,
+                       ip_to_str((guint8 *) & dest_nid.addr), dest_nid.interface); */
+
+               msg_type = tvb_get_letohl(tvb, LNET_MSG_TYPE_OFFSET );
+               /* We delete the entire line and add LNET  + msg_type */
+               col_add_fstr(pinfo->cinfo, COL_INFO, "LNET_%s", (msg_type < sizeof(lnet_msg_type_t)/sizeof(value_string)) ? lnet_msg_type_t[msg_type].strptr : "Unknow") ; 
+       }
+
+       if (tree) {
+               t_nid dest_nid ; /* nid value */
+               t_nid src_nid ; 
+
+
+               proto_item *ti = NULL; /* principal  node */
+               proto_tree *lnet_tree = NULL ; /* principal tree */
+               proto_tree *lnet_nid_src_tree= NULL ; /*subtree for the nids*/
+               proto_tree *lnet_nid_dest_tree= NULL ; 
+               proto_item *ti_src_nid ; /* node for the nids */
+               proto_item *ti_dest_nid ; 
+
+               gint offset = 0 ; 
+
+               guint32 msg_type ;
+               guint32 payload_length; 
+               guint32 msg_filler_length;
+
+
+               ti = proto_tree_add_item(tree,proto_lnet,tvb,0,-1,FALSE); /* principal node */ 
+               /*      ti=proto_tree_add_protocol_format(tree, proto_lnet, tvb, 0, -1, "Lnet"); */
+
+               lnet_tree = proto_item_add_subtree(ti,ett_lnet); /* add the subtree*/
+
+               /* dissect the 24first bytes (ksock_msg_t in lnet/socklnd.h */
+               offset=dissect_ksock_msg(tvb,lnet_tree,offset);
+
+               /* dest nid */
+               dest_nid = get_nid(tvb, LNET_NID_DEST_OFFSET);
+               ti_dest_nid = proto_tree_add_text(lnet_tree, tvb, offset, 8, "dest_nid = %s@tcp%d", ip_to_str((guint8 *) &dest_nid.addr), dest_nid.interface);
+               lnet_nid_dest_tree = proto_item_add_subtree(ti_dest_nid,ett_lnet_dest_nid) ; 
+               offset=dissect_dest_nid(tvb,lnet_nid_dest_tree,offset); 
+
+               /* same for src_nid */
+               src_nid = get_nid(tvb, LNET_NID_SRC_OFFSET);
+               ti_src_nid = proto_tree_add_text(lnet_tree, tvb, offset, 8, "src_nid = %s@tcp%d", ip_to_str((guint8 *) &src_nid.addr), src_nid.interface);
+               lnet_nid_src_tree = proto_item_add_subtree(ti_src_nid,ett_lnet_src_nid) ; 
+               offset=dissect_src_nid(tvb,lnet_nid_src_tree,offset);
+
+               /* pid */
+               proto_tree_add_item(lnet_tree, hf_lnet_src_pid, tvb, offset, 4, TRUE); offset+=4;
+               proto_tree_add_item(lnet_tree, hf_lnet_dest_pid, tvb, offset, 4, TRUE); offset+=4;
+
+               /* message_type (32 bits) */
+               msg_type = tvb_get_letohl(tvb, offset+0);
+               /* put some nice info on lnet line */ 
+               proto_item_append_text(ti," %s", (msg_type < sizeof(lnet_msg_type_t)/sizeof(value_string)) ? lnet_msg_type_t[msg_type].strptr : "Unknow") ;  /* rajout de l'info dans l'arbre */
+               proto_tree_add_item(lnet_tree, hf_lnet_msg_type, tvb, offset, 4, TRUE); offset+=4;
+
+               /* payload data (to follow) length :*/
+               payload_length = tvb_get_letohl(tvb,offset+0);  
+               proto_tree_add_item(lnet_tree, hf_lnet_payload_length, tvb, offset, 4, TRUE); offset+=4;
+
+               /* here offset = 24+8+8+4+4+4+4 = 56 */
+               match = 0 ;
+               switch(msg_type) {
+                       case LNET_MSG_ACK:
+                               offset=dissect_lnet_ack(tvb,lnet_tree,offset,pinfo);
+                               match = tvb_get_letoh64(tvb,72 );
+                               break;
+                       case LNET_MSG_PUT:
+                               offset=dissect_lnet_put(tvb,lnet_tree,offset,pinfo);
+                               match = tvb_get_letoh64(tvb, 72);
+                               break;
+                       case LNET_MSG_GET:
+                               offset=dissect_lnet_get(tvb,lnet_tree,offset,pinfo);
+                               match = tvb_get_letoh64(tvb, 72);
+                               break;
+                       case LNET_MSG_REPLY:
+                               offset=dissect_lnet_reply(tvb,lnet_tree,offset);
+                               break;
+                       case LNET_MSG_HELLO:
+                               offset=dissect_lnet_hello(tvb,lnet_tree,offset);
+                               break;
+                       default:
+                               break;
+               }
+
+
+               conversation_val = get_lnet_conv(pinfo , lnet_request_hash, match );
+               /*      proto_tree_add_text(tree, tvb, 0 , 0, "match = %" G_GINT64_MODIFIER "u parent = %d", conversation_val -> match_bits , conversation_val -> packet_num_parent); */
+
+
+               /* padding */
+               msg_filler_length = 72 - offset + 24 ; 
+               if ( msg_filler_length > 72)
+                       return ;
+               /*  +24 : ksosck_message take 24bytes, and allready in offset  */
+
+               proto_tree_add_item(lnet_tree, hf_lnet_msg_filler, tvb, offset, msg_filler_length, TRUE);
+               offset+=msg_filler_length;
+
+               if (payload_length>0)
+               {
+
+                       /* display of payload */ 
+                       proto_tree_add_item(lnet_tree,hf_lnet_payload, tvb, offset, payload_length, TRUE); 
+
+                       next_tvb = tvb_new_subset (tvb, offset, payload_length, payload_length);
+                       if(msg_type==LNET_MSG_PUT)
+                               dissector_try_port(subdissector_table, tvb_get_letohl(tvb,LNET_PTL_INDEX_OFFSET_PUT), next_tvb, pinfo, tree);
+
+               }
+
+               offset+=payload_length;
+       } 
+}
+
+void
+proto_register_lnet(void)
+{
+       static hf_register_info hf[] = {
+               { &hf_lnet_ksm_type           , 
+                       { "Type of socklnd message"   , "lnet.ksm_type"                , FT_UINT32 , BASE_HEX     , VALS(ksm_type_t)      , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_ksm_csum           , 
+                       { "Checksum"                  , "lnet.ksm_csum"                , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_ksm_zc_req_cookie  , 
+                       { "Ack required"              , "lnet.ksm_zc_req_cookie"       , FT_UINT64 , BASE_HEX     , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_ksm_zc_ack_cookie  , 
+                       { "Ack"                       , "lnet.ksm_zc_ack_cookie"       , FT_UINT64 , BASE_HEX     , NULL                  , 0x0 , ""         , HFILL }} , 
+
+               { &hf_lnet_src_nid            , 
+                       { "Src nid"                   , "lnet.src_nid"                 , FT_UINT64 , BASE_HEX     , NULL                  , 0x0 , "src nid"  , HFILL }} , 
+               { &hf_lnet_src_nid_addr       , 
+                       { "Src nid"                   , "lnet.src_nid_addr"            , FT_IPv4   , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_src_nid_lnet_type  , 
+                       { "lnd network type"          , "lnet.src_nid_type"            , FT_UINT16 , BASE_DEC     , VALS(lnetnames)       , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_src_nid_interface  , 
+                       { "lnd network interface"     , "lnet.src_nid_net_interface"   , FT_UINT16 , BASE_DEC     , NULL                  , 0x0 , NULL       , HFILL }} , 
+
+               { &hf_lnet_dest_nid           , 
+                       { "Dest nid"                  , "lnet.dest_nid"                , FT_UINT64 , BASE_HEX     , NULL                  , 0x0 , ""         , HFILL }} , 
+
+               { &hf_lnet_dest_nid_addr      , 
+                       { "Destination nid"           , "lnet.dest_nid_addr"           , FT_IPv4   , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_dest_nid_lnet_type , 
+                       { "lnd network type"          , "lnet.dest_nid_type"           , FT_UINT16 , BASE_DEC     , VALS(lnetnames)       , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_dest_nid_interface , 
+                       { "lnd network interface"     , "lnet.dest_nid_net_interface"  , FT_UINT16 , BASE_DEC     , NULL                  , 0x0 , NULL       , HFILL }} , 
+
+               { &hf_lnet_dest_pid           , 
+                       { "Dest pid"                  , "lnet.dest_pid"                , FT_UINT32 , BASE_DEC_HEX , NULL                  , 0x0 , "dest pid" , HFILL }} , 
+               { &hf_lnet_src_pid            , 
+                       { "Src pid"                   , "lnet.src_pid"                 , FT_UINT32 , BASE_DEC_HEX , NULL                  , 0x0 , "src nid"  , HFILL }} , 
+
+               { &hf_lnet_msg_type           , 
+                       { "Message type"              , "lnet.msg_type"                , FT_UINT32 , BASE_DEC     , VALS(lnet_msg_type_t) , 0x0 , "msg type" , HFILL }} , 
+               { &hf_lnet_payload_length     , 
+                       { "Payload length"            , "lnet.payload_length"          , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_lnet_payload            , 
+                       { "Payload"                   , "lnet.payload"                 , FT_NONE   , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL }} , 
+
+               {&hf_dst_wmd                  , 
+                       { "DST MD index "             , "lnet.msg_dst_cookie"          , FT_BYTES  , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_dst_wmd_interface       , 
+                       { "DST MD index interface"    , "lnet.msg_dst_inteface_cookie" , FT_UINT64 , BASE_HEX_DEC , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_dst_wmd_object          , 
+                       { "DST MD index object"       , "lnet.msg_dst_object_cookie"   , FT_UINT64 , BASE_HEX_DEC , NULL                  , 0x0 , ""         , HFILL }} , 
+               { &hf_match_bits              , 
+                       { "Match bits"                , "lnet.msg_dst_match_bits"      , FT_UINT64 , BASE_HEX_DEC , NULL                  , 0x0 , ""         , HFILL}}  , 
+               { &hf_mlength                 , 
+                       { "Message length"            , "lnet.msg_length"              , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+
+               /* Put */
+               { &hf_hdr_data                , 
+                       { "hdr data"                  , "lnet.msg_hdr_data"            , FT_UINT64 , BASE_HEX_DEC , NULL                  , 0x0 , ""         , HFILL}}  , 
+               { &hf_ptl_index               , 
+                       { "ptl index"                 , "lnet.ptl_index"               , FT_UINT32 , BASE_DEC     , VALS(portal_indices)  , 0x0 , ""         , HFILL}}  , 
+               { &hf_offset                  , 
+                       { "offset"                    , "lnet.offset"                  , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+               /* Get*/
+               { &hf_src_offset              , 
+                       { "src offset"                , "lnet.src_offset"              , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL}}  , 
+               { &hf_sink_length             , 
+                       { "sink length"               , "lnet.sink_length"             , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+               /* Hello*/
+               { &hf_hello_incarnation       , 
+                       { "hello incarnation "        , "lnet.hello_incarnation"       , FT_UINT64 , BASE_HEX_DEC , NULL                  , 0x0 , ""         , HFILL}}  , 
+               { &hf_hello_type              , 
+                       { "hello type"                , "lnet.hello_type"              , FT_UINT32 , BASE_DEC     , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+               { &hf_lnet_msg_header         , 
+                       { "ptl header"                , "lnet.ptl_header"              , FT_NONE   , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+               { &hf_lnet_msg_filler         , 
+                       { "msg filler (padding)"      , "lnet.ptl_filler"              , FT_NONE   , BASE_NONE    , NULL                  , 0x0 , ""         , HFILL}}  , 
+
+               /* Add more fields here */
+       };
+
+       static gint *ett[] = {
+               &ett_lnet,
+               &ett_lnet_dest_nid,
+               &ett_lnet_src_nid
+       };
+
+
+       module_t *lnet_module;
+
+       proto_lnet = proto_register_protocol("Lnet", /*name*/
+                       "Lnet",  /*short name*/
+                       "lnet"); /*abbrev*/
+
+       proto_register_field_array(proto_lnet, hf, array_length(hf));
+       proto_register_subtree_array(ett, array_length(ett));
+
+       lnet_module = prefs_register_protocol(proto_lnet, proto_reg_handoff_lnet);
+
+       prefs_register_uint_preference(lnet_module, "tcp.lnet_port",
+                       "Lnet listener TCP Port",
+                       "Set the TCP port for Lnet"
+                       "(if other than the default of 988)",
+                       10, &global_lnet_tcp_port);
+
+       subdissector_table = register_dissector_table("lnet.ptl_index", "lnet portal index", FT_UINT32 , BASE_DEC);
+
+       register_init_routine(&lnet_init_protocol);
+
+}
+
+
+/* The registration hand-off routine */
+void
+proto_reg_handoff_lnet(void)
+{
+       static int lnet_prefs_initialized = FALSE;
+       static dissector_handle_t lnet_handle;
+
+       if(!lnet_prefs_initialized) {
+               lnet_handle = create_dissector_handle(dissect_lnet, proto_lnet);
+               lnet_prefs_initialized = TRUE;
+       }
+       else {
+               dissector_delete("tcp.port",global_lnet_tcp_port, lnet_handle);
+       }
+
+       lnet_tcp_port = global_lnet_tcp_port;
+
+       dissector_add("tcp.port", lnet_tcp_port, lnet_handle);
+}
diff --git a/lustre/contrib/packet-lustre.c b/lustre/contrib/packet-lustre.c
new file mode 100644 (file)
index 0000000..3d34cb2
--- /dev/null
@@ -0,0 +1,10146 @@
+/* packet-lustre.c 
+ * Lustre 1.6 dissection (http://www.lustre.org/)
+ * Author: Laurent George <george@ocre.cea.fr>
+ * based on packet-agentx.c and packet-afs.c
+ * partially generated by Pidl
+ * 20080903
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1999 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+
+#include <glib.h>
+#include <string.h>
+#include <epan/packet.h>
+
+#include <epan/dissectors/packet-windows-common.h>
+#include <plugins/lnet/packet-lnet.h>
+
+
+/* --------------------------------------------------------------------------------------- */
+/* def and macro to know where we are the the lustre payload */
+#define LUSTRE_MAGIC_OFFSET 8 
+#define LUSTRE_MSG_MAGIC_V1 0x0BD00BD0
+#define LUSTRE_MSG_MAGIC_V2 0x0BD00BD3
+
+#define LUSTRE_BUFCOUNT_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 0 : 60)
+#define LUSTRE_BUFCOUNT ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) \
+    ? (tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)) : ((tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF))) )
+/* remark : BUFLENOFF don't have the same meaning if it's for v1 or v2
+ * v1 : LUSTRE_BUFLEN_OFF = offset buflen[0] - 4 bytes.
+ * v2 : LUSTRE_BUFLEN_OFF = offset buflen[0]
+ */
+#define LUSTRE_BUFLEN_OFF ((tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET)== LUSTRE_MSG_MAGIC_V2) ? 32 : 60)  
+
+#define LUSTRE_REQ_REC_OFF                     1 /* normal request record offset */
+#define LUSTRE_REPLY_REC_OFF                   1 /* normal reply record offset */
+
+#define LUSTRE_DLM_INTENT_IT_OFF               2 /* intent lock it offset */
+#define LUSTRE_DLM_INTENT_REC_OFF              3 /* intent lock record offset */
+#define LUSTRE_DLM_LOCKREPLY_OFF               1 /* lockrep offset */
+#define LUSTRE_DLM_REPLY_REC_OFF               2 /* reply record offset */
+/* --------------------------------------------------------------------------------------- */
+
+
+#define LUSTRE_PTLRPC_MSG_VERSION  0x00000003
+#define LUSTRE_VERSION_MASK 0xffff0000
+#define LUSTRE_OBD_VERSION  0x00010000
+#define LUSTRE_MDS_VERSION  0x00020000
+#define LUSTRE_OST_VERSION  0x00030000
+#define LUSTRE_DLM_VERSION  0x00040000
+#define LUSTRE_LOG_VERSION  0x00050000
+#define LUSTRE_MGS_VERSION  0x00060000
+
+
+
+#define LOV_MAGIC_V1      0x0BD10BD0
+#define LOV_MAGIC         LOV_MAGIC_V1
+#define LOV_MAGIC_JOIN    0x0BD20BD0
+
+typedef enum {
+  OST_REPLY      =  0,       /* reply ? */
+  OST_GETATTR    =  1,
+  OST_SETATTR    =  2,
+  OST_READ       =  3,
+  OST_WRITE      =  4,
+  OST_CREATE     =  5,
+  OST_DESTROY    =  6,
+  OST_GET_INFO   =  7,
+  OST_CONNECT    =  8,
+  OST_DISCONNECT =  9,
+  OST_PUNCH      = 10,
+  OST_OPEN       = 11,
+  OST_CLOSE      = 12,
+  OST_STATFS     = 13,
+  /*      OST_SAN_READ   = 14,    deprecated */
+  /*      OST_SAN_WRITE  = 15,    deprecated */
+  OST_SYNC       = 16,
+  OST_SET_INFO   = 17,
+  OST_QUOTACHECK = 18,
+  OST_QUOTACTL   = 19,
+  OST_QUOTA_ADJUST_QUNIT = 20,
+  OST_LAST_OPC
+} ost_cmd_t ;
+
+
+typedef enum {
+  OBD_PING = 400,
+  OBD_LOG_CANCEL,
+  OBD_QC_CALLBACK,
+  OBD_LAST_OPC
+} obd_cmd_t;
+#define OBD_FIRST_OPC OBD_PING
+
+typedef enum {
+  MDS_GETATTR      = 33,
+  MDS_GETATTR_NAME = 34,
+  MDS_CLOSE        = 35,
+  MDS_REINT        = 36,
+  MDS_READPAGE     = 37,
+  MDS_CONNECT      = 38,
+  MDS_DISCONNECT   = 39,
+  MDS_GETSTATUS    = 40,
+  MDS_STATFS       = 41,
+  MDS_PIN          = 42,
+  MDS_UNPIN        = 43,
+  MDS_SYNC         = 44,
+  MDS_DONE_WRITING = 45,
+  MDS_SET_INFO     = 46,
+  MDS_QUOTACHECK   = 47,
+  MDS_QUOTACTL     = 48,
+  MDS_GETXATTR     = 49,
+  MDS_SETXATTR     = 50,
+  MDS_LAST_OPC
+} mds_cmd_t;
+
+#define IT_OPEN     0x0001
+#define IT_CREAT    0x0002
+#define IT_READDIR  0x0004
+#define IT_GETATTR  0x0008
+#define IT_LOOKUP   0x0010
+#define IT_UNLINK   0x0020
+#define IT_GETXATTR 0x0040
+#define IT_EXEC     0x0080
+#define IT_PIN      0x0100
+
+
+
+#define MDS_FIRST_OPC MDS_GETATTR  
+#define LDLM_FIRST_OPC LDLM_ENQUEUE
+
+typedef enum {
+  REINT_SETATTR  = 1,
+  REINT_CREATE   = 2,
+  REINT_LINK     = 3,
+  REINT_UNLINK   = 4,
+  REINT_RENAME   = 5,
+  REINT_OPEN     = 6,
+  //      REINT_CLOSE    = 7,
+  //      REINT_WRITE    = 8,
+  REINT_MAX
+} mds_reint_t;
+
+typedef enum {
+  LDLM_ENQUEUE     = 101,
+  LDLM_CONVERT     = 102,
+  LDLM_CANCEL      = 103,
+  LDLM_BL_CALLBACK = 104,
+  LDLM_CP_CALLBACK = 105,
+  LDLM_GL_CALLBACK = 106,
+  LDLM_LAST_OPC
+} ldlm_cmd_t;
+#define LDLM_FIRST_OPC LDLM_ENQUEUE
+
+#define LDLM_FL_LOCK_CHANGED                      0x000001  
+#define LDLM_FL_BLOCK_GRANTED                     0x000002  
+#define LDLM_FL_BLOCK_CONV                        0x000004  
+#define LDLM_FL_BLOCK_WAIT                        0x000008  
+#define LDLM_FL_CBPENDING                         0x000010  
+#define LDLM_FL_AST_SENT                          0x000020  
+#define LDLM_FL_WAIT_NOREPROC                     0x000040  
+#define LDLM_FL_CANCEL                            0x000080  
+#define LDLM_FL_REPLAY                            0x000100  
+#define LDLM_FL_INTENT_ONLY                       0x000200  
+#define LDLM_FL_LOCAL_ONLY                        0x000400  
+#define LDLM_FL_FAILED                            0x000800  
+#define LDLM_FL_HAS_INTENT                        0x001000  
+#define LDLM_FL_CANCELING                         0x002000  
+#define LDLM_FL_LOCAL                             0x004000  
+#define LDLM_FL_WARN                              0x008000  
+#define LDLM_FL_DISCARD_DATA                      0x010000  
+#define LDLM_FL_NO_TIMEOUT                        0x020000  
+#define LDLM_FL_BLOCK_NOWAIT                      0x040000  
+#define LDLM_FL_TEST_LOCK                         0x080000  
+#define LDLM_FL_LVB_READY                         0x100000  
+#define LDLM_FL_KMS_IGNORE                        0x200000  
+#define LDLM_FL_NO_LRU                            0x400000  
+#define LDLM_FL_CANCEL_ON_BLOCK                   0x800000  
+#define LDLM_FL_CP_REQD                          0x1000000 
+#define LDLM_FL_CLEANED                          0x2000000 
+#define LDLM_FL_ATOMIC_CB                        0x4000000 
+#define LDLM_FL_BL_AST                          0x10000000
+#define LDLM_FL_BL_DONE                         0x20000000
+#define LDLM_FL_DENY_ON_CONTENTION              0x40000000
+#define LDLM_AST_DISCARD_DATA                   0x80000000
+
+
+
+#define LDLM_ENQUEUE (101)
+#define LDLM_CONVERT (102)
+#define LDLM_CANCEL (103)
+#define LDLM_BL_CALLBACK (104)
+#define LDLM_CP_CALLBACK (105)
+#define LDLM_GL_CALLBACK (106)
+#define LCK_MINMODE (0)
+#define LCK_EX (1)
+#define LCK_PW (2)
+#define LCK_PR (4)
+#define LCK_CW (8)
+#define LCK_CR (16)
+#define LCK_NL (32)
+#define LCK_GROUP (64)
+#define LDLM_PLAIN (10)
+#define LDLM_EXTENT (11)
+#define LDLM_FLOCK (12)
+#define LDLM_IBITS (13)
+//#define MGS_CONNECT (250)
+#define OBD_PING (400)
+
+/*
+ * Opcodes for mountconf (mgs and mgc)
+ */
+typedef enum {
+  MGS_CONNECT = 250,
+  MGS_DISCONNECT,
+  MGS_EXCEPTION,         /* node died, etc. */
+  MGS_TARGET_REG,        /* whenever target starts up */
+  MGS_TARGET_DEL,
+  MGS_SET_INFO,
+  MGS_LAST_OPC
+} mgs_cmd_t;
+#define MGS_FIRST_OPC MGS_CONNECT
+
+/* llog protocol */
+typedef enum {
+  LLOG_ORIGIN_HANDLE_CREATE       = 501,
+  LLOG_ORIGIN_HANDLE_NEXT_BLOCK   = 502,
+  LLOG_ORIGIN_HANDLE_READ_HEADER  = 503,
+  LLOG_ORIGIN_HANDLE_WRITE_REC    = 504,
+  LLOG_ORIGIN_HANDLE_CLOSE        = 505,
+  LLOG_ORIGIN_CONNECT             = 506,
+  LLOG_CATINFO                    = 507,  /* for lfs catinfo */
+  LLOG_ORIGIN_HANDLE_PREV_BLOCK   = 508,
+  LLOG_ORIGIN_HANDLE_DESTROY      = 509,  /* for destroy llog object*/
+  LLOG_LAST_OPC
+} llog_cmd_t;
+
+#define LLOG_FIRST_OPC LLOG_ORIGIN_HANDLE_CREATE
+/*flag for the LLOG*/
+#define LLOG_OP_MAGIC 0x10600000
+#define LLOG_OP_MASK  0xfff00000
+
+typedef enum {
+  LLOG_PAD_MAGIC   = LLOG_OP_MAGIC | 0x00000,
+  OST_SZ_REC       = LLOG_OP_MAGIC | 0x00f00,
+  OST_RAID1_REC    = LLOG_OP_MAGIC | 0x01000,
+  MDS_UNLINK_REC   = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_UNLINK,
+  MDS_SETATTR_REC  = LLOG_OP_MAGIC | 0x10000 | (MDS_REINT << 8) | REINT_SETATTR,
+  OBD_CFG_REC      = LLOG_OP_MAGIC | 0x20000,
+  PTL_CFG_REC      = LLOG_OP_MAGIC | 0x30000, /* obsolete */
+  LLOG_GEN_REC     = LLOG_OP_MAGIC | 0x40000,
+  LLOG_JOIN_REC    = LLOG_OP_MAGIC | 0x50000,
+  LLOG_HDR_MAGIC   = LLOG_OP_MAGIC | 0x45539,
+  LLOG_LOGID_MAGIC = LLOG_OP_MAGIC | 0x4553b,
+} llog_op_type;
+
+/* LLOG flag */
+/*defined in lustre/include/lustre/lustre_idl.h*/
+#define LLOG_F_ZAP_WHEN_EMPTY   0x1
+#define LLOG_F_IS_CAT           0x2
+#define LLOG_F_IS_PLAIN         0x4
+
+#define PTL_RPC_MSG_REQUEST 4711
+#define PTL_RPC_MSG_ERR 4712
+#define PTL_RPC_MSG_REPLY 4713
+
+
+/* Ett declarations */
+static gint ett_lustre_llog_log_llh_flags = -1 ;
+static gint ett_lustre = -1;
+static gint ett_lustre_lustre_handle_cookie = -1;
+static gint ett_lustre_lustre_msg_v1 = -1;
+static gint ett_lustre_lustre_handle_v1 = -1;
+static gint ett_lustre_lustre_msg_v2 = -1;
+static gint ett_lustre_ptlrpc_body = -1;
+static gint ett_lustre_lustre_handle_v2 = -1;
+static gint ett_lustre_obd_connect_data = -1;
+static gint ett_lustre_lov_mds_md_v1 = -1;
+static gint ett_lustre_lov_ost_data_v1 = -1;
+static gint ett_lustre_obd_statfs = -1;
+static gint ett_lustre_obd_ioobj = -1;
+static gint ett_lustre_niobuf_remote = -1;
+static gint ett_lustre_ost_lvb = -1;
+static gint ett_lustre_ll_fid = -1;
+static gint ett_lustre_mds_status_req = -1;
+static gint ett_lustre_mds_body = -1;
+static gint ett_lustre_obd_quotactl = -1;
+static gint ett_lustre_obd_dqinfo = -1;
+static gint ett_lustre_obd_dqblk = -1;
+static gint ett_lustre_quota_adjust_qunit = -1;
+static gint ett_lustre_mds_rec_setattr = -1;
+static gint ett_lustre_mds_rec_create = -1;
+static gint ett_lustre_mds_rec_join = -1;
+static gint ett_lustre_mds_rec_link = -1;
+static gint ett_lustre_mds_rec_unlink = -1;
+static gint ett_lustre_mds_rec_rename = -1;
+static gint ett_lustre_lov_desc = -1;
+static gint ett_lustre_obd_uuid = -1;
+static gint ett_lustre_ldlm_res_id = -1;
+static gint ett_lustre_ldlm_extent = -1;
+static gint ett_lustre_ldlm_inodebits = -1;
+static gint ett_lustre_ldlm_flock = -1;
+static gint ett_lustre_ldlm_intent_opc = -1;
+static gint ett_lustre_ldlm_resource_desc = -1;
+static gint ett_lustre_ldlm_lock_desc = -1;
+static gint ett_lustre_ldlm_request = -1;
+static gint ett_lustre_lustre_handle = -1;
+static gint ett_lustre_ldlm_reply = -1;
+static gint ett_lustre_mgs_send_param = -1;
+static gint ett_lustre_mgs_target_info = -1;
+static gint ett_lustre_cfg_marker = -1;
+static gint ett_lustre_llog_catid = -1;
+static gint ett_lustre_lov_mds_md_join = -1;
+static gint ett_lustre_llog_rec_hdr = -1;
+static gint ett_lustre_llog_logid_rec = -1;
+static gint ett_lustre_llog_logid = -1;
+static gint ett_lustre_llog_rec_tail = -1;
+static gint ett_lustre_lov_mds_md = -1;
+static gint ett_lustre_llog_array_rec = -1;
+static gint ett_lustre_mds_extent_desc = -1;
+static gint ett_lustre_llog_create_rec = -1;
+static gint ett_lustre_llog_orphan_rec = -1;
+static gint ett_lustre_llog_unlink_rec = -1;
+static gint ett_lustre_llog_setattr_rec = -1;
+static gint ett_lustre_llog_size_change_rec = -1;
+static gint ett_lustre_llog_gen_rec = -1;
+static gint ett_lustre_llog_log_hdr = -1;
+static gint ett_lustre_llog_cookie = -1;
+static gint ett_lustre_llogd_body = -1;
+static gint ett_lustre_llogd_conn_body = -1;
+static gint ett_lustre_llog_gen = -1;
+static gint ett_lustre_lov_user_md_join = -1;
+static gint ett_lustre_lov_user_ost_data_join = -1;
+static gint ett_lustre_obdo = -1;
+static gint ett_lustre_ost_body = -1;
+static gint ett_lustre_qunit_data = -1;
+static gint ett_lustre_qunit_data_old2 = -1;
+static gint ett_lustre_qunit_data_old = -1;
+static gint ett_lustre_ldlm_lock_flags = -1 ;
+
+/* -----------------------------------------------*/
+/* Header field declarations */
+static int hf_lustre_ptlrpc_body_pb = -1 ; 
+static int hf_lustre_mds_body = -1 ; 
+static int hf_lustre_ost_body = -1 ;
+static int hf_lustre_obd_statfs = -1 ; 
+static int hf_lustre_obd_quotactl = -1 ;
+static int hf_lustre_quota_adjust_qunit = -1 ;
+static int hf_lustre_extra_padding = -1 ;
+static int hf_lustre_ldlm_reply = -1 ;
+static int hf_lustre_ldlm_request = -1 ;
+static int hf_lustre_mds_rec_create = -1 ; 
+static int hf_lustre_mds_rec_link = -1 ;
+static int hf_lustre_mds_rec_unlink = -1 ;
+static int hf_lustre_obd_uuid = -1 ;
+static int hf_lustre_obd_connect_data = -1 ;
+static int hf_lustre_ldlm_intent = -1;
+static int hf_lustre_lov_user_md_join = -1 ;
+static int hf_lustre_obd_ioobj = -1 ;
+static int hf_lustre_niobuf_remote = -1 ;
+static int hf_lustre_ost_key = -1 ;
+static int hf_lustre_nio= -1 ;
+static int hf_lustre_ost_val= -1;
+static int hf_lustre_llogd_body = -1; 
+static int hf_lustre_llogd_log_hdr= -1; 
+static int hf_lustre_llog_logid_rec =-1 ;
+static int hf_lustre_llogd_chunk= -1; 
+static int hf_lustre_llogd_keyword= -1; 
+static int hf_lustre_llogd_client= -1; 
+static int hf_lustre_llogd_name= -1; 
+
+static int hf_lustre_mds_xattr_name = -1; 
+static int hf_lustre_lov_mds_md_v1= -1; 
+static int hf_lustre_llog_cookie= -1; 
+static int hf_lustre_mds_md_data= -1; 
+static int hf_lustre_mds_reint_opcode= -1; 
+static int hf_lustre_mds_xattr_eadata = -1;
+static int hf_lustre_lov_mds_md_join = -1 ;
+
+static int hf_lustre_reint_name= -1; 
+static int hf_lustre_reint_old_name= -1; 
+static int hf_lustre_reint_new_name= -1; 
+
+static int hf_lustre_mgs_target_info = -1 ; 
+static int hf_lustre_mgs_send_param = -1;  
+
+static int hf_lustre_ost_lvb = -1 ; 
+
+static int hf_lustre_ldlm_fl_lock_changed        = -1;
+static int hf_lustre_ldlm_fl_block_granted       = -1;
+static int hf_lustre_ldlm_fl_block_conv          = -1;
+static int hf_lustre_ldlm_fl_block_wait          = -1;
+static int hf_lustre_ldlm_fl_cbpending           = -1;
+static int hf_lustre_ldlm_fl_ast_sent            = -1;
+static int hf_lustre_ldlm_fl_wait_noreproc       = -1;
+static int hf_lustre_ldlm_fl_cancel              = -1;
+static int hf_lustre_ldlm_fl_replay              = -1;
+static int hf_lustre_ldlm_fl_intent_only         = -1;
+static int hf_lustre_ldlm_fl_local_only          = -1;
+static int hf_lustre_ldlm_fl_failed              = -1;
+static int hf_lustre_ldlm_fl_has_intent          = -1;
+static int hf_lustre_ldlm_fl_canceling           = -1;
+static int hf_lustre_ldlm_fl_local               = -1;
+static int hf_lustre_ldlm_fl_warn                = -1;
+static int hf_lustre_ldlm_fl_discard_data        = -1;
+static int hf_lustre_ldlm_fl_no_timeout          = -1;
+static int hf_lustre_ldlm_fl_block_nowait        = -1;
+static int hf_lustre_ldlm_fl_test_lock           = -1;
+static int hf_lustre_ldlm_fl_lvb_ready           = -1;
+static int hf_lustre_ldlm_fl_kms_ignore          = -1;
+static int hf_lustre_ldlm_fl_no_lru              = -1;
+static int hf_lustre_ldlm_fl_cancel_on_block     = -1;
+static int hf_lustre_ldlm_fl_cp_reqd             = -1;
+static int hf_lustre_ldlm_fl_cleaned             = -1;
+static int hf_lustre_ldlm_fl_atomic_cb           = -1;
+static int hf_lustre_ldlm_fl_bl_ast              = -1;
+static int hf_lustre_ldlm_fl_bl_done             = -1;
+static int hf_lustre_ldlm_fl_deny_on_contention  = -1;
+static int hf_lustre_ldlm_ast_discard_data       = -1;
+
+static int hf_lustre_mds_body_ctime = -1;
+static int hf_lustre_mds_body_fid1 = -1;
+static int hf_lustre_mds_body_nlink = -1;
+static int hf_lustre_mds_body_flags = -1;
+static int hf_lustre_mds_body_fsgid = -1;
+static int hf_lustre_mds_body_mtime = -1;
+static int hf_lustre_mds_body_uid = -1;
+static int hf_lustre_mds_body_mode = -1;
+static int hf_lustre_mds_body_max_cookiesize = -1;
+static int hf_lustre_mds_body_io_epoch = -1;
+static int hf_lustre_mds_body_ino = -1;
+static int hf_lustre_mds_body_fid2 = -1;
+static int hf_lustre_mds_body_padding_4 = -1;
+static int hf_lustre_mds_body_aclsize = -1;
+static int hf_lustre_mds_body_valid = -1;
+static int hf_lustre_mds_body_generation = -1;
+static int hf_lustre_mds_body_atime = -1;
+static int hf_lustre_mds_body_handle = -1;
+static int hf_lustre_mds_body_max_mdsize = -1;
+static int hf_lustre_mds_body_rdev = -1;
+static int hf_lustre_mds_body_blocks = -1;
+static int hf_lustre_mds_body_fsuid = -1;
+static int hf_lustre_mds_body_gid = -1;
+static int hf_lustre_lustre_handle_cookie = -1;
+static int hf_lustre_mds_body_suppgid = -1;
+static int hf_lustre_mds_body_size = -1;
+static int hf_lustre_mds_body_eadatasize = -1;
+static int hf_lustre_mds_body_capability = -1;
+
+static int hf_lustre_ptlrpc_body_pb_last_committed = -1;
+static int hf_lustre_ptlrpc_body_pb_version = -1;
+static int hf_lustre_lustre_msg_v1_lm_bufcount = -1;
+static int hf_lustre_obd_ioobj_ioo_id = -1;
+static int hf_lustre_ptlrpc_body_pb_slv = -1;
+static int hf_lustre_lustre_msg_v1_lm_handle = -1;
+static int hf_lustre_ost_lvb_lvb_atime = -1;
+static int hf_lustre_ptlrpc_body_pb_timeout = -1;
+static int hf_lustre_obd_statfs_os_bavail = -1;
+static int hf_lustre_obd_statfs_os_bsize = -1;
+static int hf_lustre_lustre_msg_v2_lm_repsize = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_stripe_size = -1;
+static int hf_lustre_lustre_msg_v1_lm_last_xid = -1;
+static int hf_lustre_ll_fid_f_type = -1;
+static int hf_lustre_lustre_msg_v2_lm_cksum = -1;
+static int hf_lustre_lustre_msg_v2_lm_buflens = -1;
+static int hf_lustre_lustre_msg_v1_lm_status = -1;
+static int hf_lustre_lustre_msg_v1_lm_type = -1;
+static int hf_lustre_niobuf_remote_len = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_magic = -1;
+static int hf_lustre_ptlrpc_body_pb_op_flags = -1;
+static int hf_lustre_ost_lvb_lvb_ctime = -1;
+static int hf_lustre_ptlrpc_body_pb_type = -1;
+static int hf_lustre_obd_connect_data_ocd_nllg = -1;
+static int hf_lustre_obd_connect_data_ocd_nllu = -1;
+static int hf_lustre_ll_fid_generation = -1;
+static int hf_lustre_ost_lvb_lvb_mtime = -1;
+static int hf_lustre_obd_connect_data_ocd_ibits_known = -1;
+static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1;
+static int hf_lustre_ptlrpc_body_pb_flags = -1;
+static int hf_lustre_obd_statfs_os_spare4 = -1;
+static int hf_lustre_obd_connect_data_ocd_group = -1;
+static int hf_lustre_lov_ost_data_v1_l_object_gr = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_object_gr = -1;
+static int hf_lustre_obd_connect_data_ocd_brw_size = -1;
+static int hf_lustre_ptlrpc_body_pb_limit = -1;
+static int hf_lustre_obd_statfs_os_maxbytes = -1;
+static int hf_lustre_obd_statfs_os_spare5 = -1;
+static int hf_lustre_lustre_msg_v2_lm_flags = -1;
+static int hf_lustre_obd_statfs_os_ffree = -1;
+static int hf_lustre_obd_statfs_os_files = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_stripe_count = -1;
+static int hf_lustre_lustre_msg_v1_lm_flags = -1;
+static int hf_lustre_lustre_msg_v1_lm_last_committed = -1;
+static int hf_lustre_obd_statfs_os_spare9 = -1;
+static int hf_lustre_obd_connect_data_ocd_index = -1;
+static int hf_lustre_opnum = -1;
+static int hf_lustre_lustre_msg_v1_lm_buflens = -1;
+static int hf_lustre_obd_statfs_os_spare1 = -1;
+static int hf_lustre_obd_statfs_os_spare8 = -1;
+static int hf_lustre_lustre_msg_v1_lm_conn_cnt = -1;
+static int hf_lustre_ptlrpc_body_pb_transno = -1;
+static int hf_lustre_ptlrpc_body_pb_service_time = -1;
+static int hf_lustre_ptlrpc_body_pb_conn_cnt = -1;
+static int hf_lustre_ptlrpc_body_pb_opc = -1;
+static int hf_lustre_obd_connect_data_ocd_connect_flags = -1;
+static int hf_lustre_lov_ost_data_v1_l_object_id = -1;
+static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1;
+static int hf_lustre_obd_statfs_os_bfree = -1;
+static int hf_lustre_obd_connect_data_ocd_version = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_objects = -1;
+static int hf_lustre_mds_status_req_flags = -1;
+static int hf_lustre_obd_statfs_os_namelen = -1;
+static int hf_lustre_obd_statfs_os_blocks = -1;
+static int hf_lustre_lustre_msg_v2_lm_secflvr = -1;
+static int hf_lustre_lustre_msg_v1_lm_transno = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_pattern = -1;
+static int hf_lustre_lustre_msg_v1_lm_opc = -1;
+static int hf_lustre_obd_connect_data_ocd_grant = -1;
+static int hf_lustre_obd_ioobj_ioo_bufcnt = -1;
+static int hf_lustre_lustre_msg_v1_lm_version = -1;
+static int hf_lustre_obd_statfs_os_spare7 = -1;
+static int hf_lustre_obd_statfs_os_fsid = -1;
+static int hf_lustre_obd_connect_data_ocd_cksum_types = -1;
+static int hf_lustre_ost_lvb_lvb_size = -1;
+static int hf_lustre_obd_statfs_os_type = -1;
+static int hf_lustre_obd_statfs_os_spare6 = -1;
+static int hf_lustre_obd_statfs_os_state = -1;
+static int hf_lustre_obd_statfs_os_spare3 = -1;
+static int hf_lustre_lustre_msg_v2_lm_magic = -1;
+static int hf_lustre_lov_mds_md_v1_lmm_object_id = -1;
+static int hf_lustre_ptlrpc_body_pb_last_seen = -1;
+static int hf_lustre_obd_ioobj_ioo_type = -1;
+static int hf_lustre_ptlrpc_body_pb_last_xid = -1;
+static int hf_lustre_ptlrpc_body_pb_status = -1;
+static int hf_lustre_niobuf_remote_flags = -1;
+static int hf_lustre_ll_fid_id = -1;
+static int hf_lustre_ost_lvb_lvb_blocks = -1;
+static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1;
+static int hf_lustre_obd_connect_data_padding1 = -1;
+static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1;
+static int hf_lustre_obd_connect_data_padding2 = -1;
+static int hf_lustre_obd_ioobj_ioo_gr = -1;
+static int hf_lustre_niobuf_remote_offset=-1;
+static int hf_lustre_mds_status_req_repbuf = -1;
+static int hf_lustre_obd_statfs_os_spare2 = -1;
+static int hf_lustre_lustre_msg_v2_lm_bufcount = -1;
+static int hf_lustre_ptlrpc_body_pb_handle = -1;
+static int hf_lustre_obd_connect_data_ocd_transno = -1;
+static int hf_lustre_lustre_msg_v1_lm_magic = -1;
+static int hf_lustre_llog_unlink_rec_lur_tail = -1;
+static int hf_lustre_llog_size_change_rec_lsc_io_epoch = -1;
+static int hf_lustre_mgs_target_info_mti_flags = -1;
+static int hf_lustre_ldlm_reply_lock_policy_res1 = -1;
+static int hf_lustre_mds_rec_link_lk_fsuid = -1;
+static int hf_lustre_llogd_body_lgd_len = -1;
+static int hf_lustre_qunit_data_old_qd_id = -1;
+static int hf_lustre_lov_user_md_join_lmm_stripe_count = -1;
+static int hf_lustre_llog_logid_rec_padding1 = -1;
+static int hf_lustre_quota_adjust_qunit_padding1 = -1;
+static int hf_lustre_llog_size_change_rec_lsc_fid = -1;
+static int hf_lustre_llog_rec_hdr_padding = -1;
+static int hf_lustre_mds_rec_create_cr_time = -1;
+static int hf_lustre_mds_rec_create_cr_padding_1 = -1;
+static int hf_lustre_obdo_o_nlink = -1;
+static int hf_lustre_mds_rec_rename_rn_suppgid2 = -1;
+static int hf_lustre_mds_rec_link_lk_padding_4 = -1;
+static int hf_lustre_mds_rec_link_lk_cap = -1;
+static int hf_lustre_ldlm_extent_gid = -1;
+static int hf_lustre_obdo_o_uid = -1;
+static int hf_lustre_mds_rec_create_cr_padding_5 = -1;
+static int hf_lustre_obdo_o_valid = -1;
+static int hf_lustre_ldlm_reply_lock_flags = -1;
+static int hf_lustre_mds_rec_link_lk_padding_3 = -1;
+static int hf_lustre_obdo_o_misc = -1;
+static int hf_lustre_mds_rec_setattr_sa_suppgid = -1;
+static int hf_lustre_mds_rec_setattr_sa_attr_flags = -1;
+static int hf_lustre_mds_rec_rename_rn_padding_2 = -1;
+static int hf_lustre_ldlm_request_lock_handle = -1;
+static int hf_lustre_llog_logid_lgl_oid = -1;
+static int hf_lustre_ldlm_inodebits_bits = -1;
+static int hf_lustre_llog_log_hdr_llh_count = -1;
+static int hf_lustre_mds_rec_unlink_ul_padding_4 = -1;
+static int hf_lustre_lov_user_md_join_lmm_stripe_size = -1;
+static int hf_lustre_llog_gen_rec_lgr_tail = -1;
+static int hf_lustre_llog_catid_lci_padding3 = -1;
+static int hf_lustre_qunit_data_qd_qunit = -1;
+static int hf_lustre_mds_rec_unlink_ul_fid1 = -1;
+static int hf_lustre_llog_setattr_rec_padding = -1;
+static int hf_lustre_mds_rec_rename_rn_opcode = -1;
+static int hf_lustre_mds_rec_create_cr_flags = -1;
+static int hf_lustre_mds_rec_rename_rn_fid1 = -1;
+static int hf_lustre_mds_extent_desc_med_start = -1;
+static int hf_lustre_llog_cookie_lgc_lgl = -1;
+static int hf_lustre_obd_quotactl_qc_dqinfo = -1;
+static int hf_lustre_llog_log_hdr_llh_bitmap = -1;
+static int hf_lustre_mds_rec_setattr_sa_size = -1;
+static int hf_lustre_mds_rec_rename_rn_suppgid1 = -1;
+static int hf_lustre_obd_quotactl_qc_stat = -1;
+static int hf_lustre_qunit_data_old2_qd_id = -1;
+static int hf_lustre_llog_logid_rec_padding2 = -1;
+static int hf_lustre_mds_rec_unlink_ul_mode = -1;
+static int hf_lustre_llog_orphan_rec_lor_tail = -1;
+static int hf_lustre_llog_logid_rec_padding5 = -1;
+static int hf_lustre_mds_rec_create_cr_fsgid = -1;
+static int hf_lustre_mds_rec_join_jr_fid = -1;
+static int hf_lustre_ldlm_intent_opc = -1;
+static int hf_lustre_llog_rec_hdr_lrh_type = -1;
+static int hf_lustre_mds_rec_link_lk_fsgid = -1;
+static int hf_lustre_llog_rec_hdr_lrh_len = -1;
+static int hf_lustre_llog_setattr_rec_lsr_uid = -1;
+static int hf_lustre_lov_desc_ld_padding_1 = -1;
+static int hf_lustre_obdo_o_padding_4 = -1;
+static int hf_lustre_mgs_target_info_padding = -1;
+static int hf_lustre_obd_quotactl_qc_dqblk = -1;
+static int hf_lustre_llogd_conn_body_lgdc_gen = -1;
+static int hf_lustre_mds_rec_create_cr_padding_2 = -1;
+static int hf_lustre_mds_rec_setattr_sa_ctime = -1;
+static int hf_lustre_llog_log_hdr_llh_tail = -1;
+static int hf_lustre_obdo_o_size = -1;
+static int hf_lustre_mds_rec_setattr_sa_cap = -1;
+static int hf_lustre_ldlm_extent_start = -1;
+static int hf_lustre_mds_rec_unlink_ul_opcode = -1;
+static int hf_lustre_llog_size_change_rec_lsc_hdr = -1;
+static int hf_lustre_mds_rec_unlink_ul_time = -1;
+static int hf_lustre_lov_user_ost_data_join_l_extent_start = -1;
+static int hf_lustre_lov_user_md_join_lmm_tree_id = -1;
+static int hf_lustre_llog_create_rec_lcr_tail = -1;
+static int hf_lustre_mds_rec_setattr_sa_mode = -1;
+static int hf_lustre_llog_logid_lgl_ogr = -1;
+static int hf_lustre_llog_create_rec_lcr_hdr = -1;
+static int hf_lustre_llog_cookie_lgc_padding = -1;
+static int hf_lustre_mds_rec_create_cr_cap = -1;
+static int hf_lustre_qunit_data_old_qd_type = -1;
+static int hf_lustre_ldlm_flock_blocking_export = -1;
+static int hf_lustre_mds_rec_setattr_sa_gid = -1;
+static int hf_lustre_lov_desc_ld_pattern = -1;
+static int hf_lustre_qunit_data_qd_id = -1;
+static int hf_lustre_mgs_target_info_mti_fsname = -1;
+static int hf_lustre_lov_user_md_join_lmm_object_gr = -1;
+static int hf_lustre_ldlm_request_lock_flags = -1;
+static int hf_lustre_obdo_o_mode = -1;
+static int hf_lustre_mgs_target_info_mti_svname = -1;
+static int hf_lustre_llogd_body_lgd_logid = -1;
+static int hf_lustre_mds_rec_create_cr_opcode = -1;
+static int hf_lustre_llog_log_hdr_llh_size = -1;
+static int hf_lustre_llog_create_rec_padding = -1;
+static int hf_lustre_obdo_o_handle = -1;
+static int hf_lustre_obdo_o_atime = -1;
+static int hf_lustre_quota_adjust_qunit_qaq_id = -1;
+static int hf_lustre_mds_rec_rename_rn_fid2 = -1;
+static int hf_lustre_mds_rec_create_cr_replayfid = -1;
+static int hf_lustre_ldlm_lock_desc_l_policy_data = -1;
+static int hf_lustre_mds_rec_link_lk_suppgid1 = -1;
+static int hf_lustre_obd_quotactl_qc_cmd = -1;
+static int hf_lustre_lov_user_md_join_lmm_object_id = -1;
+static int hf_lustre_mds_rec_rename_rn_padding_3 = -1;
+static int hf_lustre_qunit_data_padding = -1;
+static int hf_lustre_lov_user_md_join_lmm_objects = -1;
+static int hf_lustre_quota_adjust_qunit_qaq_flags = -1;
+static int hf_lustre_lov_user_ost_data_join_l_object_gr = -1;
+static int hf_lustre_ldlm_lock_desc_l_granted_mode = -1;
+static int hf_lustre_obdo_o_gr = -1;
+static int hf_lustre_mds_rec_unlink_ul_padding_2 = -1;
+static int hf_lustre_obdo_o_gid = -1;
+static int hf_lustre_llog_catid_lci_logid = -1;
+static int hf_lustre_llog_rec_tail_lrt_index = -1;
+static int hf_lustre_obdo_o_mds = -1;
+static int hf_lustre_mds_extent_desc_med_lmm = -1;
+static int hf_lustre_lov_desc_ld_default_stripe_count = -1;
+static int hf_lustre_ldlm_resource_desc_lr_padding = -1;
+static int hf_lustre_cfg_marker_cm_vers = -1;
+static int hf_lustre_mds_rec_create_cr_fid = -1;
+static int hf_lustre_llog_unlink_rec_lur_hdr = -1;
+static int hf_lustre_llogd_body_lgd_index = -1;
+static int hf_lustre_cfg_marker_cm_tgtname = -1;
+static int hf_lustre_mds_rec_unlink_ul_padding_1 = -1;
+static int hf_lustre_mds_rec_unlink_ul_cap = -1;
+static int hf_lustre_llog_array_rec_lmr_med = -1;
+static int hf_lustre_llog_setattr_rec_lsr_ogen = -1;
+static int hf_lustre_mds_rec_create_cr_padding_3 = -1;
+static int hf_lustre_llog_logid_rec_lid_hdr = -1;
+static int hf_lustre_lov_user_ost_data_join_l_ost_idx = -1;
+static int hf_lustre_obdo_o_easize = -1;
+static int hf_lustre_lov_user_md_join_lmm_array_id = -1;
+static int hf_lustre_ost_body_oa = -1;
+static int hf_lustre_llog_logid_rec_padding3 = -1;
+static int hf_lustre_llog_log_hdr_llh_flags = -1;
+static int hf_lustre_llog_setattr_rec_lsr_oid = -1;
+static int hf_lustre_mds_rec_create_cr_mode = -1;
+static int hf_lustre_llog_size_change_rec_padding = -1;
+static int hf_lustre_mgs_target_info_mti_config_ver = -1;
+static int hf_lustre_cfg_marker_cm_createtime = -1;
+static int hf_lustre_qunit_data_old_qd_count = -1;
+static int hf_lustre_lov_mds_md_join_lmmj_array_id = -1;
+static int hf_lustre_mds_rec_setattr_sa_uid = -1;
+static int hf_lustre_llog_catid_lci_padding1 = -1;
+static int hf_lustre_mds_rec_setattr_sa_atime = -1;
+static int hf_lustre_lov_desc_ld_active_tgt_count = -1;
+static int hf_lustre_obdo_o_lcookie = -1;
+static int hf_lustre_llog_gen_rec_lgr_gen = -1;
+static int hf_lustre_lov_user_ost_data_join_l_object_id = -1;
+static int hf_lustre_obdo_o_id = -1;
+static int hf_lustre_mgs_target_info_mti_uuid = -1;
+static int hf_lustre_mds_rec_link_lk_padding_1 = -1;
+static int hf_lustre_llog_rec_hdr_lrh_index = -1;
+static int hf_lustre_llog_setattr_rec_lsr_hdr = -1;
+static int hf_lustre_mgs_target_info_mti_stripe_index = -1;
+static int hf_lustre_llog_gen_conn_cnt = -1;
+static int hf_lustre_obdo_o_padding_6 = -1;
+static int hf_lustre_mds_rec_create_cr_suppgid = -1;
+static int hf_lustre_llog_cookie_lgc_index = -1;
+static int hf_lustre_lov_desc_ld_uuid = -1;
+static int hf_lustre_llog_create_rec_lcr_oid = -1;
+static int hf_lustre_ldlm_reply_lock_desc = -1;
+static int hf_lustre_lov_desc_ld_padding_0 = -1;
+static int hf_lustre_llog_unlink_rec_lur_ogen = -1;
+static int hf_lustre_llog_orphan_rec_lor_hdr = -1;
+static int hf_lustre_mds_rec_rename_rn_fsuid = -1;
+static int hf_lustre_cfg_marker_cm_flags = -1;
+static int hf_lustre_obdo_o_padding_3 = -1;
+static int hf_lustre_lov_user_ost_data_join_l_ost_gen = -1;
+static int hf_lustre_mds_rec_create_cr_fsuid = -1;
+static int hf_lustre_mds_rec_unlink_ul_fsgid = -1;
+static int hf_lustre_ldlm_request_lock_desc = -1;
+static int hf_lustre_lov_user_md_join_lmm_pattern = -1;
+static int hf_lustre_mds_rec_unlink_ul_fsuid = -1;
+static int hf_lustre_mds_rec_link_lk_suppgid2 = -1;
+static int hf_lustre_llog_orphan_rec_padding = -1;
+static int hf_lustre_lov_user_md_join_lmm_tree_gen = -1;
+static int hf_lustre_obdo_o_flags = -1;
+static int hf_lustre_mgs_target_info_mti_params = -1;
+static int hf_lustre_llog_logid_lgl_ogen = -1;
+static int hf_lustre_mds_rec_setattr_sa_valid = -1;
+static int hf_lustre_cfg_marker_cm_comment = -1;
+static int hf_lustre_llog_unlink_rec_lur_oid = -1;
+static int hf_lustre_qunit_data_qd_count = -1;
+static int hf_lustre_mds_rec_rename_rn_padding_1 = -1;
+static int hf_lustre_obdo_o_mtime = -1;
+static int hf_lustre_lov_mds_md_join_lmmj_md = -1;
+static int hf_lustre_mds_rec_rename_rn_fsgid = -1;
+static int hf_lustre_mds_rec_rename_rn_cap = -1;
+static int hf_lustre_obdo_o_blksize = -1;
+static int hf_lustre_mds_rec_unlink_ul_suppgid = -1;
+static int hf_lustre_ldlm_res_id_name = -1;
+static int hf_lustre_mds_rec_link_lk_time = -1;
+static int hf_lustre_ldlm_reply_lock_handle = -1;
+static int hf_lustre_mds_rec_unlink_ul_padding_3 = -1;
+static int hf_lustre_llogd_body_lgd_saved_index = -1;
+static int hf_lustre_mds_rec_join_jr_headsize = -1;
+static int hf_lustre_mds_rec_rename_rn_padding_4 = -1;
+static int hf_lustre_qunit_data_old_qd_isblk = -1;
+static int hf_lustre_obdo_o_blocks = -1;
+static int hf_lustre_lov_desc_ld_padding_2 = -1;
+static int hf_lustre_mds_rec_link_lk_fid2 = -1;
+static int hf_lustre_llog_logid_rec_lid_tail = -1;
+static int hf_lustre_obdo_o_grant = -1;
+static int hf_lustre_obdo_o_padding_2 = -1;
+static int hf_lustre_quota_adjust_qunit_qaq_iunit_sz = -1;
+static int hf_lustre_llog_unlink_rec_padding = -1;
+static int hf_lustre_ldlm_lock_desc_l_req_mode = -1;
+static int hf_lustre_ldlm_extent_end = -1;
+static int hf_lustre_llog_gen_rec_lgr_hdr = -1;
+static int hf_lustre_llog_orphan_rec_lor_ogen = -1;
+static int hf_lustre_lov_user_md_join_lmm_extent_count = -1;
+static int hf_lustre_mds_extent_desc_med_len = -1;
+static int hf_lustre_llogd_body_lgd_llh_flags = -1;
+static int hf_lustre_llog_array_rec_lmr_hdr = -1;
+static int hf_lustre_llog_log_hdr_llh_cat_idx = -1;
+static int hf_lustre_llog_log_hdr_llh_bitmap_offset=-1;
+static int hf_lustre_llog_orphan_rec_lor_oid = -1;
+static int hf_lustre_ldlm_reply_lock_padding = -1;
+static int hf_lustre_obd_quotactl_qc_id = -1;
+static int hf_lustre_mds_rec_create_cr_padding_4 = -1;
+static int hf_lustre_llog_logid_rec_padding4 = -1;
+static int hf_lustre_mds_rec_link_lk_padding_2 = -1;
+static int hf_lustre_llog_setattr_rec_lsr_gid = -1;
+static int hf_lustre_lov_user_md_join_lmm_magic = -1;
+static int hf_lustre_obd_quotactl_qc_type = -1;
+static int hf_lustre_cfg_marker_padding = -1;
+static int hf_lustre_mgs_target_info_mti_nids = -1;
+static int hf_lustre_lov_user_ost_data_join_l_extent_end = -1;
+static int hf_lustre_obdo_o_stripe_idx = -1;
+static int hf_lustre_llogd_conn_body_lgdc_logid = -1;
+static int hf_lustre_mds_rec_setattr_sa_fsuid = -1;
+static int hf_lustre_ldlm_flock_blocking_pid = -1;
+static int hf_lustre_lov_desc_ld_tgt_count = -1;
+static int hf_lustre_llogd_body_lgd_cur_offset=-1;
+static int hf_lustre_llog_create_rec_lcr_ogen = -1;
+static int hf_lustre_qunit_data_old2_qd_count = -1;
+static int hf_lustre_qunit_data_old2_qd_flags = -1;
+static int hf_lustre_ldlm_flock_start = -1;
+static int hf_lustre_quota_adjust_qunit_qaq_bunit_sz = -1;
+static int hf_lustre_llog_array_rec_lmr_tail = -1;
+static int hf_lustre_ldlm_flock_pid = -1;
+static int hf_lustre_lov_desc_ld_default_stripe_size = -1;
+static int hf_lustre_mds_rec_setattr_sa_opcode = -1;
+static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1;
+static int hf_lustre_mds_rec_link_lk_fid1 = -1;
+static int hf_lustre_cfg_marker_cm_step = -1;
+static int hf_lustre_mgs_send_param_mgs_param = -1;
+static int hf_lustre_llog_create_rec_lcr_fid = -1;
+static int hf_lustre_lov_desc_ld_default_stripe_offset=-1;
+static int hf_lustre_ldlm_resource_desc_lr_name = -1;
+static int hf_lustre_llog_rec_tail_lrt_len = -1;
+static int hf_lustre_mds_rec_setattr_sa_mtime = -1;
+static int hf_lustre_llog_log_hdr_llh_timestamp = -1;
+static int hf_lustre_llog_catid_lci_padding2 = -1;
+static int hf_lustre_llogd_conn_body_lgdc_ctxt_idx = -1;
+static int hf_lustre_cfg_marker_cm_canceltime = -1;
+static int hf_lustre_mgs_target_info_mti_lustre_ver = -1;
+static int hf_lustre_obdo_o_padding_1 = -1;
+static int hf_lustre_qunit_data_qd_flags = -1;
+static int hf_lustre_llog_logid_rec_lid_id = -1;
+static int hf_lustre_obdo_o_generation = -1;
+static int hf_lustre_llog_gen_mnt_cnt = -1;
+static int hf_lustre_llog_size_change_rec_lsc_tail = -1;
+static int hf_lustre_obdo_o_padding_5 = -1;
+static int hf_lustre_ldlm_lock_desc_l_resource = -1;
+static int hf_lustre_mds_rec_rename_rn_time = -1;
+static int hf_lustre_mds_rec_create_cr_rdev = -1;
+static int hf_lustre_obdo_o_fid = -1;
+static int hf_lustre_mds_rec_setattr_sa_fid = -1;
+static int hf_lustre_ldlm_request_lock_count = -1;
+static int hf_lustre_ldlm_flock_end = -1;
+static int hf_lustre_mds_rec_link_lk_opcode = -1;
+static int hf_lustre_mgs_target_info_mti_nid_count = -1;
+static int hf_lustre_obdo_o_ctime = -1;
+static int hf_lustre_ldlm_reply_lock_policy_res2 = -1;
+static int hf_lustre_llogd_body_lgd_ctxt_idx = -1;
+static int hf_lustre_mds_rec_unlink_ul_fid2 = -1;
+static int hf_lustre_lov_desc_ld_qos_maxage = -1;
+static int hf_lustre_ldlm_resource_desc_lr_type = -1;
+static int hf_lustre_llog_setattr_rec_lsr_tail = -1;
+static int hf_lustre_llog_cookie_lgc_subsys = -1;
+static int hf_lustre_llog_log_hdr_llh_hdr = -1;
+static int hf_lustre_mds_rec_setattr_sa_fsgid = -1;
+static int hf_lustre_mds_rec_setattr_sa_padding = -1;
+static int hf_lustre_lov_mds_md_join_lmmj_extent_count = -1;
+static int hf_lustre_llog_log_hdr_llh_reserved = -1;
+
+/* Header field declarations for field from lustre_user.h*/
+static int hf_lustre_obd_dqinfo_dqi_valid = -1;
+static int hf_lustre_obd_dqblk_dqb_isoftlimit = -1;
+static int hf_lustre_obd_dqblk_dqb_bhardlimit = -1;
+static int hf_lustre_obd_dqblk_dqb_curspace = -1;
+static int hf_lustre_obd_dqblk_dqb_itime = -1;
+static int hf_lustre_obd_dqblk_dqb_valid = -1;
+static int hf_lustre_obd_dqinfo_dqi_igrace = -1;
+static int hf_lustre_obd_dqinfo_dqi_bgrace = -1;
+static int hf_lustre_obd_dqblk_padding = -1;
+static int hf_lustre_obd_dqblk_dqb_curinodes = -1;
+static int hf_lustre_obd_dqblk_dqb_bsoftlimit = -1;
+static int hf_lustre_obd_dqinfo_dqi_flags = -1;
+static int hf_lustre_obd_dqblk_dqb_btime = -1;
+static int hf_lustre_obd_dqblk_dqb_ihardlimit = -1;
+static int hf_lustre_ldlm_intent_opc_open     = -1 ;
+static int hf_lustre_ldlm_intent_opc_creat    = -1;
+static int hf_lustre_ldlm_intent_opc_readdir  = -1;
+static int hf_lustre_ldlm_intent_opc_getattr  = -1;
+static int hf_lustre_ldlm_intent_opc_lookup   = -1;
+static int hf_lustre_ldlm_intent_opc_unlink   = -1;
+static int hf_lustre_ldlm_intent_opc_getxattr = -1;
+static int hf_lustre_ldlm_intent_opc_exec     = -1;
+static int hf_lustre_ldlm_intent_opc_pin      = -1;
+static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1;
+static int hf_lustre_llog_hdr_llh_flag_is_cat = -1;
+static int hf_lustre_llog_hdr_llh_flag_is_play = -1;
+/* --------------------------------------------------------------------*/
+
+
+/* proto declaration */
+static gint proto_lustre = -1;
+
+
+
+
+static int ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) ;
+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_);
+static int add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) ;
+
+
+/* ======================================================================== */
+/*the value_string*/
+const value_string lustre_ldlm_opcode[] = {
+  { IT_OPEN    ,   "IT_OPEN    "},
+  { IT_CREAT   ,   "IT_CREAT   "},
+  { IT_READDIR ,   "IT_READDIR "},
+  { IT_GETATTR ,   "IT_GETATTR "},
+  { IT_LOOKUP  ,   "IT_LOOKUP  "},
+  { IT_UNLINK  ,   "IT_UNLINK  "},
+  { IT_GETXATTR,   "IT_GETXATTR"},
+  { IT_EXEC    ,   "IT_EXEC    "},
+  { IT_PIN     ,   "IT_PIN     "},
+  { 0, NULL }
+};
+
+const value_string lustre_lov_magic[] = {
+  { LOV_MAGIC_V1,   "LOV_MAGIC_V1" },
+  { LOV_MAGIC_JOIN, "LOV_MAGIC_JOIN" },
+  {0, NULL}
+};
+
+const value_string lustre_ldlm_flags_vals[] = {
+  {0x000001 , "LDLM_FL_LOCK_CHANGED"},
+  {0x000002 , "LDLM_FL_BLOCK_GRANTED"},
+  {0x000004 , "LDLM_FL_BLOCK_CONV"},
+  {0x000008 , "LDLM_FL_BLOCK_WAIT"},
+  {0x000010 , "LDLM_FL_CBPENDING"},
+  {0x000020 , "LDLM_FL_AST_SENT"},
+  {0x000040 , "LDLM_FL_WAIT_NOREPROC"},
+  {0x000080 , "LDLM_FL_CANCEL"},
+  {0x000100 , "LDLM_FL_REPLAY"},
+  {0x000200 , "LDLM_FL_INTENT_ONLY"},
+  {0x000400 , "LDLM_FL_LOCAL_ONLY"},
+  {0x000800 , "LDLM_FL_FAILED"},
+  {0x001000 , "LDLM_FL_HAS_INTENT"},
+  {0x002000 , "LDLM_FL_CANCELING"},
+  {0x004000 , "LDLM_FL_LOCAL"},
+  {0x008000 , "LDLM_FL_WARN"},
+  {0x010000 , "LDLM_FL_DISCARD_DATA"},
+  {0x020000 , "LDLM_FL_NO_TIMEOUT"},
+  {0x040000 , "LDLM_FL_BLOCK_NOWAIT"},
+  {0x080000 , "LDLM_FL_TEST_LOCK"},
+  {0x100000 , "LDLM_FL_LVB_READY"},
+  {0x200000 , "LDLM_FL_KMS_IGNORE"},
+  {0x400000 , "LDLM_FL_NO_LRU"},
+  {0x800000 , "LDLM_FL_CANCEL_ON_BLOCK"},
+  {0x1000000 , "LDLM_FL_CP_REQD"},
+  {0x2000000 , "LDLM_FL_CLEANED"},
+  {0x4000000 , "LDLM_FL_ATOMIC_CB"},
+  {0x10000000 , "LDLM_FL_BL_AST"},
+  {0x20000000 , "LDLM_FL_BL_DONE"},
+  {0x40000000 , "LDLM_FL_DENY_ON_CONTENTION"},
+  {0x80000000 , "LDLM_AST_DISCARD_DATA"},
+  { 0, NULL }
+};
+
+const value_string lustre_llog_op_type[] = {
+  {LLOG_PAD_MAGIC   ,"LLOG_PAD_MAGIC  "},
+  {OST_SZ_REC       ,"OST_SZ_REC      "},
+  {OST_RAID1_REC    ,"OST_RAID1_REC   "},
+  {MDS_UNLINK_REC   ,"MDS_UNLINK_REC  "},
+  {MDS_SETATTR_REC  ,"MDS_SETATTR_REC "},
+  {OBD_CFG_REC      ,"OBD_CFG_REC     "},
+  {PTL_CFG_REC      ,"PTL_CFG_REC     "},
+  {LLOG_GEN_REC     ,"LLOG_GEN_REC    "},
+  {LLOG_JOIN_REC    ,"LLOG_JOIN_REC   "},
+  {LLOG_HDR_MAGIC   ,"LLOG_HDR_MAGIC  "},
+  {LLOG_LOGID_MAGIC ,"LLOG_LOGID_MAGIC"},
+  { 0, NULL }
+};
+
+const value_string lustre_llog_hdr_llh_flags[]= {
+  {LLOG_F_ZAP_WHEN_EMPTY , "LLOhdr_llh_G_F_ZAP_WHEN_EMPTY"},
+  {LLOG_F_IS_CAT         , "LLOhdr_llh_G_F_IS_CAT"},
+  {LLOG_F_IS_PLAIN       , "LLOG_F_IS_PLAIN"},
+  { 0, NULL }
+};
+
+const value_string lustre_mds_flags_vals[] = {
+  {0x1,"MDS_BFLAG_UNCOMMITTED_WRITES"},  
+  {0x80000000, "MDS_BFLAG_EXT_FLAGS"},      /* == EXT3_RESERVED_FL */
+  {0x00000008, "MDS_SYNC_FL        "},      /* Synchronous updates */
+  {0x00000010, "MDS_IMMUTABLE_FL   "},      /* Immutable file */
+  {0x00000020, "MDS_APPEND_FL      "},      /* writes to file may only append */
+  {0x00000080, "MDS_NOATIME_FL     "},      /* do not update atime */
+  {0x00010000, "MDS_DIRSYNC_FL     "},       /* dirsync behaviour (dir only) */
+  { 0, NULL }
+};
+
+const value_string lustre_LMTypes[] = {
+  { PTL_RPC_MSG_REQUEST, "request"},
+  { PTL_RPC_MSG_ERR , "error"},
+  { PTL_RPC_MSG_REPLY , "reply"},
+  { 0, NULL }
+};
+
+const value_string lustre_mds_reint_t_vals[] = {
+  { REINT_SETATTR, "REINT_SETATTR" },
+  { REINT_CREATE, "REINT_CREATE" },
+  { REINT_LINK, "REINT_LINK" },
+  { REINT_UNLINK, "REINT_UNLINK" },
+  { REINT_RENAME, "REINT_RENAME" },
+  { REINT_OPEN, "REINT_OPEN" },
+  { 0, NULL }
+};
+const value_string lustre_op_codes[] = {
+  /*OST Opcodes*/
+  {0 , "OST_REPLY"},
+  {1 , "OST_GETATTR"},
+  {2 , "OST_SETATTR"},
+  {3 , "OST_READ"},
+  {4 , "OST_WRITE"},
+  {5 , "OST_CREATE"},
+  {6 , "OST_DESTROY"},
+  {7 , "OST_GET_INFO"},
+  {8 , "OST_CONNECT"},
+  {9 , "OST_DISCONNECT"},
+  {10 , "OST_PUNCH"},
+  {11 , "OST_OPEN"},
+  {12 , "OST_CLOSE"},
+  {13 , "OST_STATFS"},
+  {14 , "OST_SAN_READ(deprecated)"},
+  {15 , "OST_SAN_WRITE(deprecated)"},
+  {16 , "OST_SYNC"},
+  {17 , "OST_SET_INFO"},
+  {18 , "OST_QUOTACHECK"},
+  {19 , "OST_QUOTACTL"},
+  {20 , "OST_LAST_OPC"},
+  /*MDS Opcodes*/
+  {33 , "MDS_GETATTR"},
+  {34 , "MDS_GETATTR_NAME"},
+  {35 , "MDS_CLOSE"},
+  {36 , "MDS_REINT"},
+  {37 , "MDS_READPAGE"},
+  {38 , "MDS_CONNECT"},
+  {39 , "MDS_DISCONNECT"},
+  {40 , "MDS_GETSTATUS"},
+  {41 , "MDS_STATFS"},
+  {42 , "MDS_PIN"},
+  {43 , "MDS_UNPIN"},
+  {44 , "MDS_SYNC"},
+  {45 , "MDS_DONE_WRITING"},
+  {46 , "MDS_SET_INFO"},
+  {47 , "MDS_QUOTACHECK"},
+  {48 , "MDS_QUOTACTL"},
+  {49 , "MDS_GETXATTR"},
+  {50 , "MDS_SETXATTR"},
+  {51 , "MDS_LAST_OPC"},
+  /*LDLM Opcodes*/
+  {101 , "LDLM_ENQUEUE"},
+  {102 , "LDLM_CONVERT"},
+  {103 , "LDLM_CANCEL"},
+  {104 , "LDLM_BL_CALLBACK"},
+  {105 , "LDLM_CP_CALLBACK"},
+  {106 , "LDLM_GL_CALLBACK"},
+  {107 , "LDLM_LAST_OPC"},
+  /*MGS Opcodes*/
+  {250 , "MGS_CONNECT"},
+  {251 , "MGS_DISCONNECT"},
+  {252 , "MGS_EXCEPTION"},
+  {253 , "MGS_TARGET_REG"},
+  {254 , "MGS_TARGET_DEL"},
+  {255 , "MGS_SET_INFO"},
+  {256 , "MGS_LAST_OPC"},
+  /*OBD Opcodes*/
+  {400 , "OBD_PING"},
+  {401 , "OBD_LOG_CANCEL"},
+  {402 , "OBD_QC_CALLBACK"},
+  {403 , "OBD_LAST_OPC"},
+  /* LLOG opcodes */
+  { 501, "LLOG_ORIGIN_HANDLE_CREATE"},
+  { 502, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK"},
+  { 503, "LLOG_ORIGIN_HANDLE_READ_HEADER"},
+  { 504, "LLOG_ORIGIN_HANDLE_WRITE_REC"},
+  { 505, "LLOG_ORIGIN_HANDLE_CLOSE"},
+  { 506, "LLOG_ORIGIN_CONNECT"},
+  { 507, "LLOG_CATINFO"},
+  { 508, "LLOG_ORIGIN_HANDLE_PREV_BLOCK"},
+  { 509, "LLOG_ORIGIN_HANDLE_DESTROY"},
+  { 0, NULL }
+};
+/*const value_string lustre_ldlm_mode_t_vals[] = {*/
+/*    { LCK_MINMODE, "MINMODE" },*/
+/*    { LCK_EX, "EX" },*/
+/*    { LCK_PW, "PW" },*/
+/*    { LCK_PR, "PR" },*/
+/*    { LCK_CW, "CW" },*/
+/*    { LCK_CR, "CR" },*/
+/*    { LCK_NL, "NL" },*/
+/*    { LCK_GROUP, "GROUP" },*/
+/*    { 0, NULL }*/
+/*};*/
+
+/* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */
+const value_string lustre_ldlm_mode_t_vals[] = {
+  { LCK_MINMODE, "MINMODE" },
+  { LCK_EX, "Exclusive" },
+  { LCK_PW, "Protected Write" },
+  { LCK_PR, "Protected Read" },
+  { LCK_CW, "Concurrent Write" },
+  { LCK_CR, "Concurrent Read" },
+  { LCK_NL, "Null" },
+  { LCK_GROUP, "GROUP" },
+  { 0, NULL }
+};
+
+const value_string lustre_ldlm_type_t_vals[] = {
+  { LDLM_PLAIN, "LDLM_PLAIN" },
+  { LDLM_EXTENT,"LDLM_EXTENT" },
+  { LDLM_FLOCK, "LDLM_FLOCK" },
+  { LDLM_IBITS, "LDLM_IBITS" },
+  { 0, NULL }
+};
+
+
+const value_string lustre_llog_cmd_t_vals[] = {
+  { LLOG_ORIGIN_HANDLE_CREATE, "LLOG_ORIGIN_HANDLE_CREATE" },
+  { LLOG_ORIGIN_HANDLE_NEXT_BLOCK, "LLOG_ORIGIN_HANDLE_NEXT_BLOCK" },
+  { LLOG_ORIGIN_HANDLE_READ_HEADER, "LLOG_ORIGIN_HANDLE_READ_HEADER" },
+  { LLOG_ORIGIN_HANDLE_WRITE_REC, "LLOG_ORIGIN_HANDLE_WRITE_REC" },
+  { LLOG_ORIGIN_HANDLE_CLOSE, "LLOG_ORIGIN_HANDLE_CLOSE" },
+  { LLOG_ORIGIN_CONNECT, "LLOG_ORIGIN_CONNECT" },
+  { LLOG_CATINFO, "LLOG_CATINFO" },
+  { LLOG_ORIGIN_HANDLE_PREV_BLOCK, "LLOG_ORIGIN_HANDLE_PREV_BLOCK" },
+  { LLOG_ORIGIN_HANDLE_DESTROY, "LLOG_ORIGIN_HANDLE_DESTROY" },
+  { 0, NULL }
+};
+
+
+/* ------------------------------------------------------------------- */
+/*               display  functions                                   */
+/* ------------------------------------------------------------------- */
+/* display str in left corner and in COL */
+/* TODO : do we need to use inline here ?*/
+/* @gint col :  the col where we add the information */
+inline static void display_info_str(proto_item *pi, column_info *cinfo, gint col, const gchar* str)
+{
+  if (NULL !=pi)
+    proto_item_append_text(pi, str);
+
+  if (NULL !=cinfo)
+    if (check_col(cinfo, col))
+      col_append_str(cinfo, col, str);
+}
+
+/* 
+ * Need to be (re)written
+ */
+static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, const char* format, const gchar * str){
+
+  if (NULL !=pi){
+    //va_start(ap, format);
+    proto_item_append_text(pi, format, str);
+    //va_end(ap);
+  }
+
+  if (NULL !=cinfo){
+    if (check_col(cinfo, col)){
+      //   va_list ap;
+      //  va_start(ap, format);
+      col_append_fstr(cinfo, col,  format, str);
+      // va_end(ap);
+    }
+  }
+}
+
+
+/* ------------------------------ basic dissect functions ------------------------      */
+static int 
+dissect_uint64
+(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
+{
+  proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE);
+  return offset+8;
+}
+
+static int 
+dissect_uint32
+(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
+{
+  proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE);
+  return offset+4;
+}
+
+static int 
+dissect_uint8
+(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
+{
+  proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE);
+  return offset+1;
+}
+/* -------------------------------------------------------------------------    */
+
+
+
+
+/* IDL: struct lustre_handle { */
+/* IDL:        uint64 cookie; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_handle_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_handle_cookie);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lustre_handle_cookie);
+  }
+
+  offset=lustre_dissect_element_handle_cookie(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct obd_connect_data { */
+/* IDL:        uint64 ocd_connect_flags; */
+/* IDL:        uint32 ocd_version; */
+/* IDL:        uint32 ocd_grant; */
+/* IDL:        uint32 ocd_index; */
+/* IDL:        uint32 ocd_brw_size; */
+/* IDL:        uint64 ocd_ibits_known; */
+/* IDL:        uint32 ocd_nllu; */
+/* IDL:        uint32 ocd_nllg; */
+/* IDL:        uint64 ocd_transno; */
+/* IDL:        uint32 ocd_group; */
+/* IDL:        uint32 ocd_cksum_types; */
+/* IDL:        uint64 padding1; */
+/* IDL:        uint64 padding2; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_version);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_grant);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_brw_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_brw_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_ibits_known);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_nllu(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllu);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_nllg(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_connect_data_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding2);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_connect_data);
+  }
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_version(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_grant(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_nllg(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_transno(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_group(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_padding1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_connect_data_padding2(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct lov_ost_data_v1 { */
+/* IDL:        uint64 l_object_id; */
+/* IDL:        uint64 l_object_gr; */
+/* IDL:        uint32 l_ost_gen; */
+/* IDL:        uint32 l_ost_idx; */
+/* IDL: } */
+
+static int
+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_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_ost_data_v1_l_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_object_gr);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_gen);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_ost_data_v1_l_ost_idx);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_ost_data_v1);
+  }
+
+  offset=lustre_dissect_element_lov_ost_data_v1_l_object_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_ost_data_v1_l_object_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_ost_data_v1_l_ost_gen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_ost_data_v1_l_ost_idx(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct lov_mds_md_v1 { */
+/* IDL:        uint32 lmm_magic; */
+/* IDL:        uint32 lmm_pattern; */
+/* IDL:        uint64 lmm_object_id; */
+/* IDL:        uint64 lmm_object_gr; */
+/* IDL:        uint32 lmm_stripe_size; */
+/* IDL:        uint32 lmm_stripe_count; */
+/* IDL:        struct lov_ost_data_v1 { */
+/* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */
+/* IDL: } */
+
+static int
+lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_magic);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_pattern);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_mds_md_v1_lmm_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_gr);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_size);
+
+  return offset;
+}
+
+static int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_lov_ost_data_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1_lmm_objects);
+  return offset;
+}
+
+static int
+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)
+{
+  int i;
+  /*g_print("num = %d", num);*/
+  for (i = 0; i < num; i++){
+    offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvb, offset, pinfo, tree);
+  }
+
+  return offset;
+}
+
+
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 stripe_count ;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1);
+  }
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvb, offset, pinfo, tree);
+
+  stripe_count = tvb_get_letohl(tvb,offset);
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvb, offset, pinfo, tree, stripe_count);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct obd_statfs { */
+/* IDL:        uint64 os_type; */
+/* IDL:        uint64 os_blocks; */
+/* IDL:        uint64 os_bfree; */
+/* IDL:        uint64 os_bavail; */
+/* IDL:        uint64 os_files; */
+/* IDL:        uint64 os_ffree; */
+/* IDL:        uint8 os_fsid[40]; */
+/* IDL:        uint32 os_bsize; */
+/* IDL:        uint32 os_namelen; */
+/* IDL:        uint64 os_maxbytes; */
+/* IDL:        uint32 os_state; */
+/* IDL:        uint32 os_spare1; */
+/* IDL:        uint32 os_spare2; */
+/* IDL:        uint32 os_spare3; */
+/* IDL:        uint32 os_spare4; */
+/* IDL:        uint32 os_spare5; */
+/* IDL:        uint32 os_spare6; */
+/* IDL:        uint32 os_spare7; */
+/* IDL:        uint32 os_spare8; */
+/* IDL:        uint32 os_spare9; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_statfs_os_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_blocks);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_bfree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bfree);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_bavail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bavail);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_files(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_files);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_ffree(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_ffree);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_fsid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_fsid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_fsid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 40; i++)
+    offset=lustre_dissect_element_obd_statfs_os_fsid_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_obd_statfs_os_bsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_bsize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_namelen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_namelen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_maxbytes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_maxbytes);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_state);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare4);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare5);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare6);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare7);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare8);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_statfs_os_spare9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_statfs_os_spare9);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_statfs);
+  }
+
+  offset=lustre_dissect_element_obd_statfs_os_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_blocks(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_bfree(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_bavail(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_files(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_ffree(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_fsid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_bsize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_namelen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_maxbytes(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_state(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare4(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare5(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare6(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare7(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare8(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_statfs_os_spare9(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct obd_ioobj { */
+/* IDL:        uint64 ioo_id; */
+/* IDL:        uint64 ioo_gr; */
+/* IDL:        uint32 ioo_type; */
+/* IDL:        uint32 ioo_bufcnt; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_ioobj_ioo_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_ioobj_ioo_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_gr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_ioobj_ioo_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_bufcnt);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_ioobj);
+  }
+
+  offset=lustre_dissect_element_obd_ioobj_ioo_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_ioobj_ioo_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_ioobj_ioo_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_ioobj_ioo_bufcnt(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct niobuf_remote { */
+/* IDL:        uint64 offset; */
+/* IDL:        uint32 len; */
+/* IDL:        uint32 flags; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_niobuf_remote_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_offset);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_niobuf_remote_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_len);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_niobuf_remote_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_niobuf_remote_flags);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_niobuf_remote);
+  }
+
+  offset=lustre_dissect_element_niobuf_remote_offset(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_niobuf_remote_len(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_niobuf_remote_flags(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct ost_lvb { */
+/* IDL:        uint64 lvb_size; */
+/* IDL:        uint64 lvb_mtime; */
+/* IDL:        uint64 lvb_atime; */
+/* IDL:        uint64 lvb_ctime; */
+/* IDL:        uint64 lvb_blocks; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ost_lvb_lvb_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ost_lvb_lvb_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_mtime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_ost_lvb_lvb_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_atime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ost_lvb_lvb_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_ctime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ost_lvb_lvb_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ost_lvb);
+  }
+
+  offset=lustre_dissect_element_ost_lvb_lvb_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ost_lvb_lvb_mtime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ost_lvb_lvb_atime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ost_lvb_lvb_ctime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ost_lvb_lvb_blocks(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct ll_fid { */
+/* IDL:        uint64 id; */
+/* IDL:        uint32 generation; */
+/* IDL:        uint32 f_type; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ll_fid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ll_fid_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ll_fid_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_generation);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ll_fid_f_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ll_fid_f_type);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ll_fid);
+  }
+
+  offset=lustre_dissect_element_ll_fid_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ll_fid_generation(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ll_fid_f_type(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct mds_status_req { */
+/* IDL:        uint32 flags; */
+/* IDL:        uint32 repbuf; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_status_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mds_status_req_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_status_req_repbuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mds_status_req_repbuf);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_status_req);
+  }
+
+  offset=lustre_dissect_element_mds_status_req_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_status_req_repbuf(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct mds_body { */
+/* IDL:        struct ll_fid { */
+/* IDL: } fid1; */
+/* IDL:        struct ll_fid { */
+/* IDL: } fid2; */
+/* IDL:        struct lustre_handle { */
+/* IDL: } handle; */
+/* IDL:        uint64 valid; */
+/* IDL:        uint64 size; */
+/* IDL:        uint64 mtime; */
+/* IDL:        uint64 atime; */
+/* IDL:        uint64 ctime; */
+/* IDL:        uint64 blocks; */
+/* IDL:        uint64 io_epoch; */
+/* IDL:        uint64 ino; */
+/* IDL:        uint32 fsuid; */
+/* IDL:        uint32 fsgid; */
+/* IDL:        uint32 capability; */
+/* IDL:        uint32 mode; */
+/* IDL:        uint32 uid; */
+/* IDL:        uint32 gid; */
+/* IDL:        uint32 flags; */
+/* IDL:        uint32 rdev; */
+/* IDL:        uint32 nlink; */
+/* IDL:        uint32 generation; */
+/* IDL:        uint32 suppgid; */
+/* IDL:        uint32 eadatasize; */
+/* IDL:        uint32 aclsize; */
+/* IDL:        uint32 max_mdsize; */
+/* IDL:        uint32 max_cookiesize; */
+/* IDL:        uint32 padding_4; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_body_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_body_fid1);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_body_fid2);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mds_body_handle);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_valid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_body_mtime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_body_atime, tvb, offset, 8, &ns );
+  offset+=8;
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_body_ctime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_blocks);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_io_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_io_epoch);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_ino(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_body_ino);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_capability(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_capability);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_uid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_gid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_rdev);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_nlink);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_generation);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_suppgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_eadatasize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_eadatasize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_aclsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_aclsize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_max_mdsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_max_mdsize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_max_cookiesize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_max_cookiesize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_body_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_body_padding_4);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_body);
+  }
+
+  offset=lustre_dissect_element_mds_body_fid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_fid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_handle(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_valid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_mtime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_atime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_ctime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_blocks(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_io_epoch(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_ino(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_capability(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_uid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_gid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_rdev(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_nlink(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_generation(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_suppgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_eadatasize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_aclsize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_max_mdsize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_max_cookiesize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_body_padding_4(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct obd_dqinfo { */
+/* IDL:   uint64 dqi_bgrace; */
+/* IDL:   uint64 dqi_igrace; */
+/* IDL:   uint32 dqi_flags; */
+/* IDL:   uint32 dqi_valid; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_bgrace);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqinfo_dqi_igrace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_igrace);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqinfo_dqi_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqinfo_dqi_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqinfo_dqi_valid);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset = offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_dqinfo);
+  }
+
+  offset = lustre_dissect_element_obd_dqinfo_dqi_bgrace(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqinfo_dqi_igrace(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqinfo_dqi_flags(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqinfo_dqi_valid(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct obd_dqblk { */
+/* IDL:        uint64 dqb_bhardlimit; */
+/* IDL:        uint64 dqb_bsoftlimit; */
+/* IDL:        uint64 dqb_curspace; */
+/* IDL:        uint64 dqb_ihardlimit; */
+/* IDL:        uint64 dqb_isoftlimit; */
+/* IDL:        uint64 dqb_curinodes; */
+/* IDL:        uint64 dqb_btime; */
+/* IDL:        uint64 dqb_itime; */
+/* IDL:        uint32 dqb_valid; */
+/* IDL:        uint32 padding; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bhardlimit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_bsoftlimit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_curspace(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curspace);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_ihardlimit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_isoftlimit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_curinodes(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_curinodes);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_btime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_btime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_itime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_obd_dqblk_dqb_itime, tvb, offset, 8, &ns );
+  offset+=8;
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_dqb_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_dqb_valid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_dqblk_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_dqblk_padding);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset = offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_dqblk);
+  }
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_bhardlimit(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_bsoftlimit(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_curspace(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_ihardlimit(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_isoftlimit(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_curinodes(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_btime(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_itime(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_dqb_valid(tvb, offset, pinfo, tree);
+
+  offset = lustre_dissect_element_obd_dqblk_padding(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct obd_quotactl { */
+/* IDL:        uint32 qc_cmd; */
+/* IDL:        uint32 qc_type; */
+/* IDL:        uint32 qc_id; */
+/* IDL:        uint32 qc_stat; */
+/* IDL:        struct obd_dqinfo { */
+/* IDL: } qc_dqinfo; */
+/* IDL:        struct obd_dqblk { */
+/* IDL: } qc_dqblk; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obd_quotactl_qc_cmd(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_cmd);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_quotactl_qc_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_quotactl_qc_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_quotactl_qc_stat(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obd_quotactl_qc_stat);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_obd_quotactl_qc_dqblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_obd_dqblk(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqblk);
+  return offset;
+}
+
+static int
+lustre_dissect_element_obd_quotactl_qc_dqinfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_obd_dqinfo(tvb,offset,pinfo,tree,hf_lustre_obd_quotactl_qc_dqinfo);
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obd_quotactl);
+  }
+
+  offset=lustre_dissect_element_obd_quotactl_qc_cmd(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_quotactl_qc_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_quotactl_qc_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_quotactl_qc_stat(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_quotactl_qc_dqinfo(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obd_quotactl_qc_dqblk(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct quota_adjust_qunit { */
+/* IDL:        uint32 qaq_flags; */
+/* IDL:        uint32 qaq_id; */
+/* IDL:        uint64 qaq_bunit_sz; */
+/* IDL:        uint64 qaq_iunit_sz; */
+/* IDL:        uint64 padding1; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_quota_adjust_qunit_qaq_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_bunit_sz);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_qaq_iunit_sz);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_quota_adjust_qunit_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_quota_adjust_qunit_padding1);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_quota_adjust_qunit);
+  }
+
+  offset=lustre_dissect_element_quota_adjust_qunit_qaq_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_quota_adjust_qunit_qaq_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_quota_adjust_qunit_qaq_bunit_sz(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_quota_adjust_qunit_qaq_iunit_sz(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_quota_adjust_qunit_padding1(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* I don't find where this struct appear on wire.. need to search mdc_setattr_pack() */
+/* IDL: struct mds_rec_setattr { */
+/* IDL:        uint32 sa_opcode; */
+/* IDL:        uint32 sa_fsuid; */
+/* IDL:        uint32 sa_fsgid; */
+/* IDL:        uint32 sa_cap; */
+/* IDL:        uint32 sa_suppgid; */
+/* IDL:        uint32 sa_mode; */
+/* IDL:        struct ll_fid { */
+/* IDL: } sa_fid; */
+/* IDL:        uint64 sa_valid; */
+/* IDL:        uint64 sa_size; */
+/* IDL:        uint64 sa_mtime; */
+/* IDL:        uint64 sa_atime; */
+/* IDL:        uint64 sa_ctime; */
+/* IDL:        uint32 sa_uid; */
+/* IDL:        uint32 sa_gid; */
+/* IDL:        uint32 sa_attr_flags; */
+/* IDL:        uint32 sa_padding; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_opcode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_cap);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_suppgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85af8d0)(tvb,offset,pinfo,tree,hf_lustre_mds_rec_setattr_sa_fid);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_valid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_mtime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_atime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_setattr_sa_ctime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_uid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_gid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_attr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_attr_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_setattr_sa_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_setattr_sa_padding);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 sa_opcode ; 
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_setattr);
+  }
+  sa_opcode=tvb_get_letohl(tvb,offset);
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_t_vals, "Unknown sa_opc"));
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_opcode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_cap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_suppgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_valid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_mtime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_atime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_ctime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_uid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_gid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_attr_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_setattr_sa_padding(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct mds_rec_create { */
+/* IDL:        uint32 cr_opcode; */
+/* IDL:        uint32 cr_fsuid; */
+/* IDL:        uint32 cr_fsgid; */
+/* IDL:        uint32 cr_cap; */
+/* IDL:        uint32 cr_flags; */
+/* IDL:        uint32 cr_mode; */
+/* IDL:        struct ll_fid { */
+/* IDL: } cr_fid; */
+/* IDL:        struct ll_fid { */
+/* IDL: } cr_replayfid; */
+/* IDL:        uint64 cr_time; */
+/* IDL:        uint64 cr_rdev; */
+/* IDL:        uint32 cr_suppgid; */
+/* IDL:        uint32 cr_padding_1; */
+/* IDL:        uint32 cr_padding_2; */
+/* IDL:        uint32 cr_padding_3; */
+/* IDL:        uint32 cr_padding_4; */
+/* IDL:        uint32 cr_padding_5; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_create_cr_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_opcode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_cap);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_create_cr_fid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_replayfid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_create_cr_replayfid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_create_cr_time, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_rdev(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_rdev);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_suppgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_4);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_create_cr_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_create_cr_padding_5);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+  guint32 cr_opcode ;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_create);
+  }
+  cr_opcode=tvb_get_letohl(tvb,offset);
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_t_vals, "Unknown cr_opc"));
+
+  offset=lustre_dissect_element_mds_rec_create_cr_opcode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_cap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_replayfid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_time(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_rdev(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_suppgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_padding_3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_padding_4(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_create_cr_padding_5(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+
+  return offset;
+}
+
+
+
+/* TODO : find where this structure appear ! */
+/* IDL: struct mds_rec_join { */
+/* IDL:        struct ll_fid { */
+/* IDL: } jr_fid; */
+/* IDL:        uint64 jr_headsize; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_join_jr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85b17c0)(tvb,offset,pinfo,tree,hf_lustre_mds_rec_join_jr_fid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_join_jr_headsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_join_jr_headsize);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_mds_rec_join(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_join);
+  }
+
+  offset=lustre_dissect_element_mds_rec_join_jr_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_join_jr_headsize(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct mds_rec_link { */
+/* IDL:        uint32 lk_opcode; */
+/* IDL:        uint32 lk_fsuid; */
+/* IDL:        uint32 lk_fsgid; */
+/* IDL:        uint32 lk_cap; */
+/* IDL:        uint32 lk_suppgid1; */
+/* IDL:        uint32 lk_suppgid2; */
+/* IDL:        struct ll_fid { */
+/* IDL: } lk_fid1; */
+/* IDL:        struct ll_fid { */
+/* IDL: } lk_fid2; */
+/* IDL:        uint64 lk_time; */
+/* IDL:        uint32 lk_padding_1; */
+/* IDL:        uint32 lk_padding_2; */
+/* IDL:        uint32 lk_padding_3; */
+/* IDL:        uint32 lk_padding_4; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_link_lk_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_opcode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_cap);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_suppgid1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_suppgid2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_link_lk_fid1);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_link_lk_fid2);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_link_lk_time, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_link_lk_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_link_lk_padding_4);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 lk_opcode ;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_link);
+  }
+  lk_opcode=tvb_get_letohl(tvb,offset);
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_t_vals, "Unknown lk_opc"));
+
+  offset=lustre_dissect_element_mds_rec_link_lk_opcode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_cap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_suppgid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_suppgid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_fid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_fid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_time(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_padding_3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_link_lk_padding_4(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct mds_rec_unlink { */
+/* IDL:        uint32 ul_opcode; */
+/* IDL:        uint32 ul_fsuid; */
+/* IDL:        uint32 ul_fsgid; */
+/* IDL:        uint32 ul_cap; */
+/* IDL:        uint32 ul_suppgid; */
+/* IDL:        uint32 ul_mode; */
+/* IDL:        struct ll_fid { */
+/* IDL: } ul_fid1; */
+/* IDL:        struct ll_fid { */
+/* IDL: } ul_fid2; */
+/* IDL:        uint64 ul_time; */
+/* IDL:        uint32 ul_padding_1; */
+/* IDL:        uint32 ul_padding_2; */
+/* IDL:        uint32 ul_padding_3; */
+/* IDL:        uint32 ul_padding_4; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_opcode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_cap);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_suppgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_suppgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_unlink_ul_fid1);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_unlink_ul_fid2);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree,hf_lustre_mds_rec_unlink_ul_time , tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_unlink_ul_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_unlink_ul_padding_4);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 ul_opcode ;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_unlink);
+  }
+
+  ul_opcode=tvb_get_letohl(tvb,offset);
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_t_vals, "Unknown ul_opc"));
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_opcode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_cap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_suppgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_fid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_fid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_time(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_padding_3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_unlink_ul_padding_4(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct mds_rec_rename { */
+/* IDL:        uint32 rn_opcode; */
+/* IDL:        uint32 rn_fsuid; */
+/* IDL:        uint32 rn_fsgid; */
+/* IDL:        uint32 rn_cap; */
+/* IDL:        uint32 rn_suppgid1; */
+/* IDL:        uint32 rn_suppgid2; */
+/* IDL:        struct ll_fid { */
+/* IDL: } rn_fid1; */
+/* IDL:        struct ll_fid { */
+/* IDL: } rn_fid2; */
+/* IDL:        uint64 rn_time; */
+/* IDL:        uint32 rn_padding_1; */
+/* IDL:        uint32 rn_padding_2; */
+/* IDL:        uint32 rn_padding_3; */
+/* IDL:        uint32 rn_padding_4; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_opcode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_opcode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_fsuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_fsuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_fsgid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_fsgid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_cap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_cap);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_suppgid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_suppgid1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_suppgid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_suppgid2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_rename_rn_fid1);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ll_fid(tvb,offset,pinfo,tree,hf_lustre_mds_rec_rename_rn_fid2);
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_mds_rec_rename_rn_time, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_rec_rename_rn_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mds_rec_rename_rn_padding_4);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 rn_opcode ; 
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_rec_rename);
+  }
+
+  rn_opcode=tvb_get_letohl(tvb,offset);
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_t_vals, "Unknown rn_opc"));
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_opcode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_fsuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_fsgid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_cap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_suppgid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_suppgid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_fid1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_fid2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_time(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_padding_3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_rec_rename_rn_padding_4(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* TODO : find where this structure appear */
+
+/* IDL: struct lov_desc { */
+/* IDL:        uint32 ld_tgt_count; */
+/* IDL:        uint32 ld_active_tgt_count; */
+/* IDL:        uint32 ld_default_stripe_count; */
+/* IDL:        uint32 ld_pattern; */
+/* IDL:        uint64 ld_default_stripe_size; */
+/* IDL:        uint64 ld_default_stripe_offset; */
+/* IDL:        uint32 ld_padding_0; */
+/* IDL:        uint32 ld_qos_maxage; */
+/* IDL:        uint32 ld_padding_1; */
+/* IDL:        uint32 ld_padding_2; */
+/* IDL:        struct obd_uuid { */
+/* IDL: } ld_uuid; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_lov_desc_ld_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_tgt_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_active_tgt_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_active_tgt_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_default_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_pattern);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_default_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_default_stripe_offset);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_padding_0(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_0);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_qos_maxage(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_qos_maxage);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_desc_ld_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_desc_ld_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85bade8)(tvb,offset,pinfo,tree,hf_lustre_lov_desc_ld_uuid);
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_desc);
+  }
+
+  offset=lustre_dissect_element_lov_desc_ld_tgt_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_active_tgt_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_default_stripe_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_pattern(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_default_stripe_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_default_stripe_offset(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_padding_0(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_qos_maxage(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_desc_ld_uuid(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct obd_uuid { */
+/*        char uuid[40]; */
+/* IDL: } */
+
+static int
+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_)
+{
+
+  /* the lenght of the string is 40 bytes max, with  \0 inside */
+
+  proto_tree_add_item(parent_tree, hf_index, tvb, offset, 40, TRUE);
+
+
+  offset+=40;
+  return offset;
+}
+
+
+
+/* IDL: struct ldlm_res_id { */
+/* IDL:        uint64 name[4]; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_res_id_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_res_id_name);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_res_id_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 4; i++)
+    offset=lustre_dissect_element_ldlm_res_id_name_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_res_id);
+  }
+
+  offset=lustre_dissect_element_ldlm_res_id_name(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        LCK_MINMODE=0, */
+/* IDL:        LCK_EX=1, */
+/* IDL:        LCK_PW=2, */
+/* IDL:        LCK_PR=4, */
+/* IDL:        LCK_CW=8, */
+/* IDL:        LCK_CR=16, */
+/* IDL:        LCK_NL=32, */
+/* IDL:        LCK_GROUP=64, */
+/* IDL:        LCK_MAXMODE, */
+/* IDL: } */
+
+int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index);
+  return offset;
+}
+
+
+/* IDL: enum { */
+/* IDL:        LDLM_PLAIN=10, */
+/* IDL:        LDLM_EXTENT=11, */
+/* IDL:        LDLM_FLOCK=12, */
+/* IDL:        LDLM_IBITS=13, */
+/* IDL:        LDLM_MAX_TYPE, */
+/* IDL: } */
+
+int
+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_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type );
+  return offset;
+}
+
+/* IDL: struct ldlm_extent { */
+/* IDL:        uint64 start; */
+/* IDL:        uint64 end; */
+/* IDL:        uint64 gid; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_extent_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_start);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_extent_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_end);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_extent_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_extent_gid);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_extent);
+  }
+
+  offset=lustre_dissect_element_ldlm_extent_start(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_extent_end(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_extent_gid(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct ldlm_inodebits { */
+/* IDL:        uint64 bits; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_inodebits_bits(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_inodebits_bits);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_inodebits);
+  }
+
+  offset=lustre_dissect_element_ldlm_inodebits_bits(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct ldlm_flock { */
+/* IDL:        uint64 start; */
+/* IDL:        uint64 end; */
+/* IDL:        uint64 blocking_export; */
+/* IDL:        uint32 blocking_pid; */
+/* IDL:        uint32 pid; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_flock_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_start);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_flock_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_end);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_flock_blocking_export(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_blocking_export);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_flock_blocking_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_blocking_pid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_flock_pid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_flock_pid);
+
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_flock);
+  }
+
+  offset=lustre_dissect_element_ldlm_flock_start(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_flock_end(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_flock_blocking_export(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_flock_blocking_pid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_flock_pid(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct ldlm_intent { */
+/* IDL:        uint64 opc; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  guint32 opcode;
+  /* this opcode is like a flag*/
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_open    );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_creat   );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_readdir );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getattr );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_lookup  );            
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_unlink  );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getxattr);   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_exec    );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_pin     );   
+  opcode = tvb_get_letohl(tvb,offset);
+
+  display_info_str(tree->parent, pinfo->cinfo, COL_INFO, "[ intent :");
+  if(opcode & IT_OPEN    ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " open");
+    proto_item_append_text(tree, " open" );
+  }
+  if(opcode & IT_CREAT   ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " create");
+    proto_item_append_text(tree, " create" );
+  }
+  if(opcode & IT_READDIR ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " readdir");
+    proto_item_append_text(tree, " readdir" );
+  }
+  if(opcode & IT_GETATTR ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getattr");
+    proto_item_append_text(tree, " getattr" );
+  }
+  if(opcode & IT_LOOKUP  ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " lookup");
+    proto_item_append_text(tree, " lookup" );
+  }
+  if(opcode & IT_UNLINK  ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " unlink");
+    proto_item_append_text(tree, " unlink" );
+  }
+  if(opcode & IT_GETXATTR){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getxattr");
+    proto_item_append_text(tree, " getxattr" );
+  }
+  if(opcode & IT_EXEC    ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " exec");
+    proto_item_append_text(tree, " exec" );
+  }
+  if(opcode & IT_PIN     ){
+    display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " pin");
+    proto_item_append_text(tree, " pin" );
+  }
+
+  display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " ]");
+  offset+=8; 
+  return offset;
+}
+
+int
+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_)
+{
+  // proto_item *item = NULL;
+  //proto_tree *tree = NULL;
+  int old_offset;
+  guint64 intent_opc;
+  proto_item * opcode_item = NULL;
+  proto_tree * opcode_tree = NULL;
+
+  old_offset=offset;
+  // if (parent_tree) {
+  //     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+  //     tree = proto_item_add_subtree(item, ett_lustre_ldlm_intent);
+  //     //tree = parent_tree; /* TODO : !!!!!!!!!!!!!!! ATTENTIon Ã  revoir,
+  //     //fait rapidement pour ne pas avoir le subtree */
+  // }
+
+
+  intent_opc = tvb_get_letoh64(tvb,offset);
+  if (parent_tree){
+    opcode_item = proto_tree_add_item(parent_tree, hf_lustre_ldlm_intent_opc, tvb, offset, 8, TRUE);
+    opcode_tree = proto_item_add_subtree(opcode_item, ett_lustre_ldlm_intent_opc);
+  }
+
+  offset=lustre_dissect_element_ldlm_intent_opc(tvb, offset, pinfo, opcode_tree);
+
+  offset=ldlm_opcode_process(tvb, offset, pinfo, parent_tree, intent_opc);
+
+
+
+  return offset;
+}
+
+/* IDL: struct ldlm_resource_desc { */
+/* IDL:        ldlm_type_t lr_type; */
+/* IDL:        uint32 lr_padding; */
+/* IDL:        struct ldlm_res_id { */
+/* IDL: } lr_name; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_resource_desc_lr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  /*    offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_type);*/
+  offset=lustre_dissect_enum_ldlm_type_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_type);
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_resource_desc_lr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_resource_desc_lr_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_resource_desc_lr_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ldlm_res_id(tvb,offset,pinfo,tree,hf_lustre_ldlm_resource_desc_lr_name);
+  return offset;
+}
+
+int
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_resource_desc);
+  }
+
+  offset=lustre_dissect_element_ldlm_resource_desc_lr_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_resource_desc_lr_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_resource_desc_lr_name(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct ldlm_lock_desc { */
+/* IDL:        struct ldlm_resource_desc { */
+/* IDL: } l_resource; */
+/* IDL:        ldlm_mode_t l_req_mode; */
+/* IDL:        ldlm_mode_t l_granted_mode; */
+/* IDL:        ldlm_policy_data_t l_policy_data; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ldlm_lock_desc_l_resource(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ldlm_resource_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_resource);
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_lock_desc_l_req_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree,  hf_lustre_ldlm_lock_desc_l_granted_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+
+  guint32 lr_type; /* type of the lock */
+
+  lr_type = tvb_get_letohl(tvb,offset - 48 ); /* TODO  : find another way that using -48 */
+
+  /* this section must be check with lustre code, possible mistake here */
+  switch(lr_type){
+    case LDLM_PLAIN: 
+    case LDLM_FLOCK:
+      offset=lustre_dissect_struct_ldlm_flock(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
+      break;
+    case LDLM_EXTENT :
+      offset= lustre_dissect_struct_ldlm_extent(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
+      /* add an extra padding 8 bytes */
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      break;
+    case LDLM_IBITS:
+      offset=lustre_dissect_struct_ldlm_inodebits(tvb,offset,pinfo,tree,hf_lustre_ldlm_lock_desc_l_policy_data);
+      /* add an extra padding 24 bytes */
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      break;
+    default:
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+      break;
+  }
+  return offset;
+}
+
+int
+lustre_dissect_struct_ldlm_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 lock_req_mode;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_desc);
+  }
+
+  offset=lustre_dissect_element_ldlm_lock_desc_l_resource(tvb, offset, pinfo, tree);
+
+  lock_req_mode = tvb_get_letohl(tvb,offset);
+
+  display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lock_req_mode, lustre_ldlm_mode_t_vals, "Unknown lock"));
+
+  offset=lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_lock_desc_l_policy_data(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct ldlm_request { */
+/* IDL:        uint32 lock_flags; */
+/* IDL:        uint32 lock_count; */
+/* IDL:        struct ldlm_lock_desc { */
+/* IDL: } lock_desc; */
+/* IDL:        struct lustre_handle { */
+/* IDL: } lock_handle[2]; */
+/* IDL: } */
+
+
+
+static int
+lustre_dissect_element_ldlm_request_lock_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_request_lock_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_request_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_desc);
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_ldlm_request_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  /*if (check_col(pinfo->cinfo, COL_INFO)) */
+  /*    col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
+
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_handle);
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_request_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 2; i++)
+    offset=lustre_dissect_element_ldlm_request_lock_handle_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_ldlm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+  guint32 lock_flag ;
+  guint32 ldlm_type; 
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_request);
+  }
+
+  lock_flag = tvb_get_letohl(tvb,offset);
+  offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, hf_lustre_ldlm_request_lock_flags);
+
+  offset=lustre_dissect_element_ldlm_request_lock_count(tvb, offset, pinfo, tree);
+
+  /* ldlm_type = (EXTENT, PLAIN, ou IBITS) */
+  ldlm_type = tvb_get_letohl(tvb,offset); 
+  offset=lustre_dissect_element_ldlm_request_lock_desc(tvb, offset, pinfo, tree);
+  offset=lustre_dissect_element_ldlm_request_lock_handle(tvb, offset, pinfo, tree);
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct ldlm_reply { */
+/* IDL:        uint32 lock_flags; */
+/* IDL:        uint32 lock_padding; */
+/* IDL:        struct ldlm_lock_desc { */
+/* IDL: } lock_desc; */
+/* IDL:        struct lustre_handle { */
+/* IDL: } lock_handle; */
+/* IDL:        uint64 lock_policy_res1; */
+/* IDL:        uint64 lock_policy_res2; */
+/* IDL: } */
+
+
+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_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_flags);
+  }
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_ast_discard_data);   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_deny_on_contention);   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_done           );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_ast            );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_atomic_cb         );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cleaned           );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cp_reqd           );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel_on_block   );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_lru            );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_kms_ignore        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lvb_ready         );          
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_test_lock         );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_nowait      );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_timeout        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_discard_data      );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_warn              );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local             );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_canceling         );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_has_intent        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_failed            );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local_only        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_intent_only       );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_replay            );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel            );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_wait_noreproc     );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_ast_sent          );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cbpending         );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_wait        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_conv        );   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_granted     );   
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lock_changed      );   
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_reply_lock_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_reply_lock_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_ldlm_lock_desc(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_desc);
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_reply_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  /*if (check_col(pinfo->cinfo, COL_INFO)) */
+  /*        col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
+
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_handle);
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_reply_lock_policy_res1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_policy_res1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ldlm_reply_lock_policy_res2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_ldlm_reply_lock_policy_res2);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_ldlm_reply(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 * ldlm_type _U_ )
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 lock_flag ;
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ldlm_reply);
+  }
+
+  lock_flag = tvb_get_letohl(tvb,offset);
+  offset=lustre_dissect_element_ldlm_lock_flags(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply_lock_flags);
+
+  offset=lustre_dissect_element_ldlm_reply_lock_padding(tvb, offset, pinfo, tree);
+
+  if (ldlm_type != NULL)
+    *ldlm_type = tvb_get_letohl(tvb,offset); 
+  offset=lustre_dissect_element_ldlm_reply_lock_desc(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_reply_lock_handle(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_reply_lock_policy_res1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ldlm_reply_lock_policy_res2(tvb, offset, pinfo, tree);
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct mgs_send_param { */
+/* IDL:        uint8 mgs_param[1024]; */
+/* IDL: } */
+
+
+
+static int
+lustre_dissect_element_mgs_send_param_mgs_param_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_send_param_mgs_param);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_send_param_mgs_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 1024; i++)
+    offset=lustre_dissect_element_mgs_send_param_mgs_param_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_mgs_send_param(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mgs_send_param);
+  }
+
+  offset=lustre_dissect_element_mgs_send_param_mgs_param(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct mgs_target_info { */
+/* IDL:        uint32 mti_lustre_ver; */
+/* IDL:        uint32 mti_stripe_index; */
+/* IDL:        uint32 mti_config_ver; */
+/* IDL:        uint32 mti_flags; */
+/* IDL:        uint32 mti_nid_count; */
+/* IDL:        uint32 padding; */
+/* IDL:        uint8 mti_fsname[64]; */
+/* IDL:        uint8 mti_svname[64]; */
+/* IDL:        uint8 mti_uuid[40]; */
+/* IDL:        uint64 mti_nids[32]; */
+/* IDL:        uint8 mti_params[4096]; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_lustre_ver);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_stripe_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_stripe_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_config_ver(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_config_ver);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_nid_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_nid_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_fsname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_fsname);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_fsname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 64; i++)
+    offset=lustre_dissect_element_mgs_target_info_mti_fsname_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+
+
+static int
+lustre_dissect_element_mgs_target_info_mti_svname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_svname);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_svname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 64; i++)
+    offset=lustre_dissect_element_mgs_target_info_mti_svname_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_uuid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_uuid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 40; i++)
+    offset=lustre_dissect_element_mgs_target_info_mti_uuid_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+
+
+static int
+lustre_dissect_element_mgs_target_info_mti_nids_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_nids);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_nids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 32; i++)
+    offset=lustre_dissect_element_mgs_target_info_mti_nids_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_mgs_target_info_mti_params_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_mgs_target_info_mti_params);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mgs_target_info_mti_params(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 4096; i++)
+    offset=lustre_dissect_element_mgs_target_info_mti_params_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_mgs_target_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mgs_target_info);
+  }
+
+  offset=lustre_dissect_element_mgs_target_info_mti_lustre_ver(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_stripe_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_config_ver(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_nid_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_fsname(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_svname(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_uuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_nids(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mgs_target_info_mti_params(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct cfg_marker { */
+/* IDL:        uint32 cm_step; */
+/* IDL:        uint32 cm_flags; */
+/* IDL:        uint32 cm_vers; */
+/* IDL:        uint32 padding; */
+/* IDL:        time_t cm_createtime; */
+/* IDL:        time_t cm_canceltime; */
+/* IDL:        uint8 cm_tgtname[64]; */
+/* IDL:        uint8 cm_comment[64]; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_cfg_marker_cm_step(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_step);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_vers(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_vers);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_createtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree,  hf_lustre_cfg_marker_cm_createtime );
+  /*g_print("function lustre_dissect_element_cfg_marker_cm_createtime don't work\n");*/
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_canceltime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=dissect_ndr_time_t(tvb, offset, pinfo,tree,  hf_lustre_cfg_marker_cm_canceltime);
+
+  /*g_print("element_cfg_marker_cm_canceltime\n");*/
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_cfg_marker_cm_tgtname_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_tgtname);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_tgtname(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 64; i++)
+    offset=lustre_dissect_element_cfg_marker_cm_tgtname_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_cfg_marker_cm_comment_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint8(tvb, offset, pinfo, tree,  hf_lustre_cfg_marker_cm_comment);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_cfg_marker_cm_comment(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 64; i++)
+    offset=lustre_dissect_element_cfg_marker_cm_comment_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_cfg_marker(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_cfg_marker);
+  }
+
+  offset=lustre_dissect_element_cfg_marker_cm_step(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_vers(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_createtime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_canceltime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_tgtname(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_cfg_marker_cm_comment(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct llog_logid { */
+/* IDL:        uint64 lgl_oid; */
+/* IDL:        uint64 lgl_ogr; */
+/* IDL:        uint32 lgl_ogen; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_logid_lgl_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_oid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_lgl_ogr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_ogr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_lgl_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_lgl_ogen);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_logid);
+  }
+
+  offset=lustre_dissect_element_llog_logid_lgl_oid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_lgl_ogr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_lgl_ogen(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* I don't know when this structure is used on network */
+/* IDL: struct llog_catid { */
+/* IDL:        struct llog_logid { */
+/* IDL: } lci_logid; */
+/* IDL:        uint32 lci_padding1; */
+/* IDL:        uint32 lci_padding2; */
+/* IDL:        uint32 lci_padding3; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_catid_lci_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85cc76c)(tvb,offset,pinfo,tree,hf_lustre_llog_catid_lci_logid);
+  
+  /*g_print("llog_catid_lci_logid bug\n");*/
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_catid_lci_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_catid_lci_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_catid_lci_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_catid_lci_padding3);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_catid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_catid);
+  }
+
+  offset=lustre_dissect_element_llog_catid_lci_logid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_catid_lci_padding1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_catid_lci_padding2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_catid_lci_padding3(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct lov_mds_md_join { */
+/* IDL:        struct lov_mds_md { */
+/* IDL: } lmmj_md; */
+/* IDL:        struct llog_logid { */
+/* IDL: } lmmj_array_id; */
+/* IDL:        uint32 lmmj_extent_count; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_lov_mds_md_join_lmmj_md(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_join_lmmj_md); 
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_mds_md_join_lmmj_array_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_join_lmmj_array_id);
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_mds_md_join_lmmj_extent_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_mds_md_join_lmmj_extent_count);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_lov_mds_md_join(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_join);
+  }
+
+  offset=lustre_dissect_element_lov_mds_md_join_lmmj_md(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_join_lmmj_array_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_mds_md_join_lmmj_extent_count(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct llog_rec_hdr { */
+/* IDL:        uint32 lrh_len; */
+/* IDL:        uint32 lrh_index; */
+/* IDL:        uint32 lrh_type; */
+/* IDL:        uint32 padding; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_rec_hdr_lrh_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_len);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_rec_hdr_lrh_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_rec_hdr_lrh_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_lrh_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_rec_hdr_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_hdr_padding);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_rec_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_rec_hdr);
+  }
+
+  offset=lustre_dissect_element_llog_rec_hdr_lrh_len(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_rec_hdr_lrh_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_rec_hdr_lrh_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_rec_hdr_padding(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct llog_rec_tail { */
+/* IDL:        uint32 lrt_len; */
+/* IDL:        uint32 lrt_index; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_rec_tail_lrt_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_tail_lrt_len);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_rec_tail_lrt_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_rec_tail_lrt_index);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_rec_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_rec_tail);
+  }
+
+  offset=lustre_dissect_element_llog_rec_tail_lrt_len(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_rec_tail_lrt_index(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct llog_logid_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lid_hdr; */
+/* IDL:        struct llog_logid { */
+/* IDL: } lid_id; */
+/* IDL:        uint32 padding1; */
+/* IDL:        uint32 padding2; */
+/* IDL:        uint32 padding3; */
+/* IDL:        uint32 padding4; */
+/* IDL:        uint32 padding5; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lid_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_logid_rec_lid_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_hdr);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_lid_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_id);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_padding3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_padding4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding4);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_padding5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_logid_rec_padding5);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_logid_rec_lid_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_logid_rec_lid_tail);
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_logid_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_logid_rec);
+  }
+
+  offset=lustre_dissect_element_llog_logid_rec_lid_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_lid_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_padding1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_padding2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_padding3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_padding4(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_padding5(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_logid_rec_lid_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct mds_extent_desc { */
+/* IDL:        uint64 med_start; */
+/* IDL:        uint64 med_len; */
+/* IDL:        struct lov_mds_md { */
+/* IDL: } med_lmm; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_mds_extent_desc_med_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_extent_desc_med_start);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_extent_desc_med_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_mds_extent_desc_med_len);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_mds_extent_desc_med_lmm(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d3578)(tvb,offset,pinfo,tree,hf_lustre_mds_extent_desc_med_lmm);
+  /*g_print("bug\n");*/
+  return offset;
+}
+
+int
+lustre_dissect_struct_mds_extent_desc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_mds_extent_desc);
+  }
+
+  offset=lustre_dissect_element_mds_extent_desc_med_start(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_extent_desc_med_len(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_mds_extent_desc_med_lmm(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct llog_array_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lmr_hdr; */
+/* IDL:        struct mds_extent_desc { */
+/* IDL: } lmr_med; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lmr_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_array_rec_lmr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d374c)(tvb,offset,pinfo,tree,hf_lustre_llog_array_rec_lmr_hdr);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_array_rec_lmr_med(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d4328)(tvb,offset,pinfo,tree,hf_lustre_llog_array_rec_lmr_med);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_array_rec_lmr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d4478)(tvb,offset,pinfo,tree,hf_lustre_llog_array_rec_lmr_tail);
+  
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_array_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_array_rec);
+  }
+
+  offset=lustre_dissect_element_llog_array_rec_lmr_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_array_rec_lmr_med(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_array_rec_lmr_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_create_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lcr_hdr; */
+/* IDL:        struct ll_fid { */
+/* IDL: } lcr_fid; */
+/* IDL:        uint64 lcr_oid; */
+/* IDL:        uint32 lcr_ogen; */
+/* IDL:        uint32 padding; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lcr_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_create_rec_lcr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d56e0)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_hdr);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_create_rec_lcr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d5830)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_fid);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_create_rec_lcr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_lcr_oid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_create_rec_lcr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_lcr_ogen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_create_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_create_rec_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_create_rec_lcr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d69dc)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_tail);
+  
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_create_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_create_rec);
+  }
+
+  offset=lustre_dissect_element_llog_create_rec_lcr_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_create_rec_lcr_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_create_rec_lcr_oid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_create_rec_lcr_ogen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_create_rec_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_create_rec_lcr_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_orphan_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lor_hdr; */
+/* IDL:        uint64 lor_oid; */
+/* IDL:        uint32 lor_ogen; */
+/* IDL:        uint32 padding; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lor_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_orphan_rec_lor_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d767c)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_hdr);
+  
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_orphan_rec_lor_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_lor_oid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_orphan_rec_lor_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_lor_ogen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_orphan_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_orphan_rec_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_orphan_rec_lor_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d8550)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_tail);
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_orphan_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_orphan_rec);
+  }
+
+  offset=lustre_dissect_element_llog_orphan_rec_lor_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_orphan_rec_lor_oid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_orphan_rec_lor_ogen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_orphan_rec_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_orphan_rec_lor_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct llog_unlink_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lur_hdr; */
+/* IDL:        uint64 lur_oid; */
+/* IDL:        uint32 lur_ogen; */
+/* IDL:        uint32 padding; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lur_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_unlink_rec_lur_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d8730)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_hdr);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_unlink_rec_lur_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_lur_oid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_unlink_rec_lur_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_lur_ogen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_unlink_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_unlink_rec_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_unlink_rec_lur_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85d9664)(tvb,offset,pinfo,tree,hf_lustre_llog_unlink_rec_lur_tail);
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_unlink_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_unlink_rec);
+  }
+
+  offset=lustre_dissect_element_llog_unlink_rec_lur_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_unlink_rec_lur_oid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_unlink_rec_lur_ogen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_unlink_rec_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_unlink_rec_lur_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct llog_setattr_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lsr_hdr; */
+/* IDL:        uint64 lsr_oid; */
+/* IDL:        uint32 lsr_ogen; */
+/* IDL:        uint32 lsr_uid; */
+/* IDL:        uint32 lsr_gid; */
+/* IDL:        uint32 padding; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lsr_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85da2f0)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_hdr);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_oid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_ogen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_uid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_lsr_gid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_setattr_rec_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_setattr_rec_lsr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85db3d4)(tvb,offset,pinfo,tree,hf_lustre_llog_setattr_rec_lsr_tail);
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_setattr_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_setattr_rec);
+  }
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_oid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_ogen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_uid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_gid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_setattr_rec_lsr_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_size_change_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lsc_hdr; */
+/* IDL:        struct ll_fid { */
+/* IDL: } lsc_fid; */
+/* IDL:        uint32 lsc_io_epoch; */
+/* IDL:        uint32 padding; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lsc_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85dc458)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_hdr);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_size_change_rec_lsc_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85dc5a8)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_fid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_size_change_rec_lsc_io_epoch);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_size_change_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_size_change_rec_padding);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_size_change_rec_lsc_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85dd384)(tvb,offset,pinfo,tree,hf_lustre_llog_size_change_rec_lsc_tail);
+  // TODO: to be corrected !
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_size_change_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_size_change_rec);
+  }
+
+  offset=lustre_dissect_element_llog_size_change_rec_lsc_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_size_change_rec_lsc_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_size_change_rec_lsc_io_epoch(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_size_change_rec_padding(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_size_change_rec_lsc_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_gen { */
+/* IDL:        uint64 mnt_cnt; */
+/* IDL:        uint64 conn_cnt; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_gen_mnt_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_gen_mnt_cnt);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_gen_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llog_gen_conn_cnt);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_gen);
+  }
+
+  offset=lustre_dissect_element_llog_gen_mnt_cnt(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_gen_conn_cnt(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* IDL: struct llog_gen_rec { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } lgr_hdr; */
+/* IDL:        struct llog_gen { */
+/* IDL: } lgr_gen; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } lgr_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_gen_rec_lgr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85de2e4)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_hdr);
+  // TODO: to be corrected !
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_gen_rec_lgr_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85de434)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_gen);
+  // TODO: to be corrected !
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_gen_rec_lgr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85df3f8)(tvb,offset,pinfo,tree,hf_lustre_llog_gen_rec_lgr_tail);
+  // TODO: to be corrected !
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_gen_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_gen_rec);
+  }
+
+  offset=lustre_dissect_element_llog_gen_rec_lgr_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_gen_rec_lgr_gen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_gen_rec_lgr_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_log_hdr { */
+/* IDL:        struct llog_rec_hdr { */
+/* IDL: } llh_hdr; */
+/* IDL:        uint64 llh_timestamp; */
+/* IDL:        uint32 llh_count; */
+/* IDL:        uint32 llh_bitmap_offset; */
+/* IDL:        uint32 llh_size; */
+/* IDL:        uint32 llh_flags; */
+/* IDL:        uint32 llh_cat_idx; */
+/* IDL:        struct obd_uuid { */
+/* IDL: } llh_tgtuuid; */
+/* IDL:        uint32 llh_reserved[1]; */
+/* IDL:        uint32 llh_bitmap[2024]; */
+/* IDL:        struct llog_rec_tail { */
+/* IDL: } llh_tail; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_rec_hdr(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_hdr);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_timestamp(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_llog_log_hdr_llh_timestamp, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_bitmap_offset);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_size);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_llog_log_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_log_llh_flags);
+  }
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_zap_when_empty);   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_cat);   
+  dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_hdr_llh_flag_is_play);   
+
+  offset+=4;
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //    offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_flags);
+  offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llog_log_hdr_llh_flags);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_cat_idx);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_obd_uuid(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tgtuuid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_reserved_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_reserved);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_reserved(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 1; i++)
+    offset=lustre_dissect_element_llog_log_hdr_llh_reserved_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_log_hdr_llh_bitmap);
+
+  return offset;
+}
+
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_bitmap(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  int i;
+  for (i = 0; i < 2024; i++)
+    offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_llog_log_hdr_llh_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_rec_tail(tvb,offset,pinfo,tree,hf_lustre_llog_log_hdr_llh_tail);
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_log_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_log_hdr);
+  }
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_hdr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_timestamp(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_bitmap_offset(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_cat_idx(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_tgtuuid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_reserved(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_bitmap(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_log_hdr_llh_tail(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+/* IDL: struct llog_cookie { */
+/* IDL:        struct llog_logid { */
+/* IDL: } lgc_lgl; */
+/* IDL:        uint32 lgc_subsys; */
+/* IDL:        uint32 lgc_index; */
+/* IDL:        uint32 lgc_padding; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llog_cookie_lgc_lgl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llog_cookie_lgc_lgl);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_cookie_lgc_subsys(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_subsys);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_cookie_lgc_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llog_cookie_lgc_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llog_cookie_lgc_padding);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llog_cookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llog_cookie);
+  }
+
+  offset=lustre_dissect_element_llog_cookie_lgc_lgl(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_cookie_lgc_subsys(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_cookie_lgc_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llog_cookie_lgc_padding(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct llogd_body { */
+/* IDL:        struct llog_logid { */
+/* IDL: } lgd_logid; */
+/* IDL:        uint32 lgd_ctxt_idx; */
+/* IDL:        uint32 lgd_llh_flags; */
+/* IDL:        uint32 lgd_index; */
+/* IDL:        uint32 lgd_saved_index; */
+/* IDL:        uint32 lgd_len; */
+/* IDL:        uint64 lgd_cur_offset; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llogd_body_lgd_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_llogd_body_lgd_logid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_ctxt_idx);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_llh_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_llh_flags);
+
+  offset=lustre_dissect_element_llog_log_llh_flags(tvb, offset, pinfo, tree, hf_lustre_llogd_body_lgd_llh_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_saved_index(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_saved_index);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_len(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_len);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_body_lgd_cur_offset(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_llogd_body_lgd_cur_offset);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llogd_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llogd_body);
+  }
+
+  offset=lustre_dissect_element_llogd_body_lgd_logid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_ctxt_idx(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_llh_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_saved_index(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_len(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_body_lgd_cur_offset(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct llogd_conn_body { */
+/* IDL:        struct llog_gen { */
+/* IDL: } lgdc_gen; */
+/* IDL:        struct llog_logid { */
+/* IDL: } lgdc_logid; */
+/* IDL:        uint32 lgdc_ctxt_idx; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_llogd_conn_body_lgdc_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85e6038)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_gen);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_conn_body_lgdc_logid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  //offset=lustre_dissect_struct_HASH(0x85e6188)(tvb,offset,pinfo,tree,hf_lustre_llogd_conn_body_lgdc_logid);
+  return offset;
+}
+
+static int
+lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_llogd_conn_body_lgdc_ctxt_idx);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_llogd_conn_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_llogd_conn_body);
+  }
+
+  offset=lustre_dissect_element_llogd_conn_body_lgdc_gen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_conn_body_lgdc_logid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_llogd_conn_body_lgdc_ctxt_idx(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct lov_user_ost_data_join { */
+/* IDL:        uint64 l_extent_start; */
+/* IDL:        uint64 l_extent_end; */
+/* IDL:        uint64 l_object_id; */
+/* IDL:        uint64 l_object_gr; */
+/* IDL:        uint32 l_ost_gen; */
+/* IDL:        uint32 l_ost_idx; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_extent_start(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_extent_start);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_extent_end(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_extent_end);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_object_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_object_gr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_ost_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_ost_gen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_ost_data_join_l_ost_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_ost_data_join_l_ost_idx);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_lov_user_ost_data_join(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_user_ost_data_join);
+  }
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_extent_start(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_extent_end(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_object_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_object_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_ost_gen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_ost_data_join_l_ost_idx(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct lov_user_md_join { */
+/* IDL:        uint32 lmm_magic; */
+/* IDL:        uint32 lmm_pattern; */
+/* IDL:        uint64 lmm_object_id; */
+/* IDL:        uint64 lmm_object_gr; */
+/* IDL:        uint32 lmm_stripe_size; */
+/* IDL:        uint32 lmm_stripe_count; */
+/* IDL:        uint32 lmm_extent_count; */
+/* IDL:        uint64 lmm_tree_id; */
+/* IDL:        uint64 lmm_tree_gen; */
+/* IDL:        struct llog_logid { */
+/* IDL: } lmm_array_id; */
+/* IDL:        struct lov_user_ost_data_join { */
+/* IDL: } lmm_objects[0]; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_magic);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_pattern);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_object_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_object_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_object_gr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_stripe_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_stripe_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_extent_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_extent_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_tree_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_tree_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_tree_gen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_lov_user_md_join_lmm_tree_gen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_array_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_logid(tvb,offset,pinfo,tree,hf_lustre_lov_user_md_join_lmm_array_id);
+  return offset;
+}
+
+static int
+lustre_dissect_element_lov_user_md_join_lmm_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_user_md_join_lmm_objects);
+  //for (i = 0; i < 0; i++)
+  //   offset=lustre_dissect_element_lov_user_md_join_lmm_objects_(tvb, offset, pinfo, tree);
+
+  return offset;
+}
+
+//static int
+//lustre_dissect_element_lov_user_md_join_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+//{
+//    //offset=lustre_dissect_struct_HASH(0x85eb304)(tvb,offset,pinfo,tree,hf_lustre_lov_user_md_join_lmm_objects);
+//    return offset;
+//}
+
+int
+lustre_dissect_struct_lov_user_md_join(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_lov_user_md_join);
+  }
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_magic(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_pattern(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_object_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_object_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_stripe_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_stripe_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_extent_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_tree_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_tree_gen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_array_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_lov_user_md_join_lmm_objects(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* IDL: struct obdo { */
+/* IDL:        uint64 o_valid; */
+/* IDL:        uint64 o_id; */
+/* IDL:        uint64 o_gr; */
+/* IDL:        uint64 o_fid; */
+/* IDL:        uint64 o_size; */
+/* IDL:        uint64 o_mtime; */
+/* IDL:        uint64 o_atime; */
+/* IDL:        uint64 o_ctime; */
+/* IDL:        uint64 o_blocks; */
+/* IDL:        uint64 o_grant; */
+/* IDL:        uint32 o_blksize; */
+/* IDL:        uint32 o_mode; */
+/* IDL:        uint32 o_uid; */
+/* IDL:        uint32 o_gid; */
+/* IDL:        uint32 o_flags; */
+/* IDL:        uint32 o_nlink; */
+/* IDL:        uint32 o_generation; */
+/* IDL:        uint32 o_misc; */
+/* IDL:        uint32 o_easize; */
+/* IDL:        uint32 o_mds; */
+/* IDL:        uint32 o_stripe_idx; */
+/* IDL:        uint32 o_padding_1; */
+/* IDL:        struct lustre_handle { */
+/* IDL: } o_handle; */
+/* IDL:        struct llog_cookie { */
+/* IDL: } o_lcookie; */
+/* IDL:        uint64 o_padding_2; */
+/* IDL:        uint64 o_padding_3; */
+/* IDL:        uint64 o_padding_4; */
+/* IDL:        uint64 o_padding_5; */
+/* IDL:        uint64 o_padding_6; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_obdo_o_valid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_valid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_gr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_gr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_fid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_size);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_obdo_o_mtime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_obdo_o_atime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+
+}
+
+static int
+lustre_dissect_element_obdo_o_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  nstime_t ns;
+  /* timestamp */
+  ns.secs = tvb_get_letohl(tvb,offset);
+  ns.nsecs=0;
+  proto_tree_add_time(tree, hf_lustre_obdo_o_ctime, tvb, offset, 8, &ns );
+  offset+=8;
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_blocks);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_grant(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_grant);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_blksize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_blksize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_mode);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_uid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_uid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_gid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_flags);
+  /* TODO rajouter Ã§a  , faire une fonction générique qui s'occupe de tous les flags d'un tableau. */
+  /*   LOBDFlags = {*/
+  /*0x00000001 : "OBD_FL_INLINEDATA",*/
+  /*0x00000002 : "OBD_FL_OBDMDEXISTS",*/
+  /*0x00000004 : "OBD_FL_DELORPHAN",*/
+  /*0x00000008 : "OBD_FL_NORPC",*/
+  /*0x00000010 : "OBD_FL_IDONLY",*/
+  /*0x00000020 : "OBD_FL_RECREATE_OBJS",*/
+  /*0x00000040 : "OBD_FL_DEBUG_CHECK",*/
+  /*0x00000100 : "OBD_FL_NO_USRQUOTA",*/
+  /*0x00000200 : "OBD_FL_NO_GRPQUOTA",*/
+  /*0x00000400 : "OBD_FL_CREATE_CROW",*/
+  /*0x00000800 : "OBD_FL_TRUNCLOCK",*/
+  //}
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_nlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_nlink);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_generation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_generation);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_misc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_misc);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_easize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_easize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_mds(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_mds);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_stripe_idx(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_stripe_idx);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_1);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_handle);
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_lcookie(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_obdo_o_lcookie);
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_3);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_4);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_5);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_obdo_o_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_obdo_o_padding_6);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_obdo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_obdo);
+  }
+
+  offset=lustre_dissect_element_obdo_o_valid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_gr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_fid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_size(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_mtime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_atime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_ctime(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_blocks(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_grant(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_blksize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_mode(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_uid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_gid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_nlink(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_generation(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_misc(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_easize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_mds(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_stripe_idx(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_1(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_handle(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_lcookie(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_3(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_4(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_5(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_obdo_o_padding_6(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+/* IDL: struct ost_body { */
+/* IDL:        struct obdo { */
+/* IDL: } oa; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ost_body_oa(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_obdo(tvb,offset,pinfo,tree,hf_lustre_ost_body_oa);
+  return offset;
+}
+
+int
+lustre_dissect_struct_ost_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ost_body);
+  }
+
+  offset=lustre_dissect_element_ost_body_oa(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct qunit_data { */
+/* IDL:        uint32 qd_id; */
+/* IDL:        uint32 qd_flags; */
+/* IDL:        uint64 qd_count; */
+/* IDL:        uint64 qd_qunit; */
+/* IDL:        uint64 padding; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_qunit_data_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_qd_qunit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_qd_qunit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_padding);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_qunit_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_qunit_data);
+  }
+
+  offset=lustre_dissect_element_qunit_data_qd_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_qd_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_qd_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_qd_qunit(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_padding(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct qunit_data_old2 { */
+/* IDL:        uint32 qd_id; */
+/* IDL:        uint32 qd_flags; */
+/* IDL:        uint64 qd_count; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_qunit_data_old2_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_old2_qd_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_old2_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old2_qd_count);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_qunit_data_old2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old2);
+  }
+
+  offset=lustre_dissect_element_qunit_data_old2_qd_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_old2_qd_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_old2_qd_count(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+/* TODO : find when this Structure appear on the wire */
+/* IDL: struct qunit_data_old { */
+/* IDL:        uint32 qd_id; */
+/* IDL:        uint32 qd_type; */
+/* IDL:        uint32 qd_count; */
+/* IDL:        uint32 qd_isblk; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_qunit_data_old_qd_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_id);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_old_qd_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_old_qd_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_count);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_qunit_data_old_qd_isblk(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree,  hf_lustre_qunit_data_old_qd_isblk);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_qunit_data_old(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+
+
+  old_offset=offset;
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_qunit_data_old);
+  }
+
+  offset=lustre_dissect_element_qunit_data_old_qd_id(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_old_qd_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_old_qd_count(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_qunit_data_old_qd_isblk(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+/* ------------------------------------------------------------------------- */
+/* dissect string .
+ * the length of the string is the current buflen 
+ * @tvb the packet buff
+ * @offset the current offset 
+ * @pinfo 
+ * @parent_tree
+ * @hf_index : the corresponding header field
+ * @buf_num  : the corresponding bufnumber of the string (we use it to
+ * determine the string length), must respect : 0<bufnum<=bufmax_in_paquet
+ */
+static int 
+lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) 
+{
+  proto_item *item = NULL;
+
+  int old_offset;
+  guint32 string_len;
+
+  old_offset=offset;
+
+  // if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb,
+  // offset, -1, TRUE); //     tree = proto_item_add_subtree(item,
+  // ett_lustre); }
+
+  if(buf_num+1>LUSTRE_BUFCOUNT) 
+    return offset;
+
+  string_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
+  proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
+  if(string_len>1)
+    display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s", tvb_get_string(tvb,offset,string_len) );
+
+  offset+=string_len;
+  proto_item_set_len(item, offset-old_offset);
+  offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* after a string we must be aligned to 8 bytes. */
+
+
+  return offset;
+}
+
+/* ------------------------------------------------------------------------- */
+/* dissect raw data */
+static int 
+lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) 
+{
+  proto_item *item = NULL;
+
+  guint32 data_len ;
+  int old_offset;
+
+  old_offset=offset;
+  if(buf_num+1>LUSTRE_BUFCOUNT) 
+    return offset;
+
+  data_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
+  proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
+
+  offset+=data_len;
+  proto_item_set_len(item, offset-old_offset);
+  offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* align on 8 bytes */ 
+
+  return offset; 
+}
+/* ------------------------------------------------------------------------ */
+
+
+static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) 
+{
+  guint32 opcode  ;
+
+  opcode = tvb_get_letohl(tvb,offset);
+
+  switch(opcode){
+    case  REINT_SETATTR:
+      /* [eadata][cookie_data][ldlm_request] */
+      offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
+      offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
+          hf_lustre_ldlm_request) ;
+      break;
+    case REINT_CREATE : 
+      /* [rec_create][filename][tgt.. Ã  0 pour l'instant][ldlm_request] */
+      offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);  /* this string is all the time =="\0"*/
+      offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
+          hf_lustre_ldlm_request) ;
+      break;
+    case  REINT_LINK   :
+      /*[mds_rec_link][filename][ldlm_req] */
+      offset=lustre_dissect_struct_mds_rec_link(tvb, offset, pinfo, tree, hf_lustre_mds_rec_link);
+      offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
+          hf_lustre_ldlm_request) ;
+      /*TODO : need to be check*/
+      break;
+    case  REINT_UNLINK : /* mds_unlink_unpack : [mds_rec_unlink][filename][ldlm_req] */
+      /* [mds_rec_unlink][filename][ldlm_req][..]*/
+      offset=lustre_dissect_struct_mds_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mds_rec_unlink); 
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
+      if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +2))) == 112) /* TODO : ugly .. but 
+                                                                                        for now we have to do this */
+        offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl);
+      else
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
+
+      break;
+    case  REINT_RENAME : /*mds_rename_unpack : [mds_rec_rename][filename source][filename target_name][ldlm_request] */
+      offset=lustre_dissect_struct_mds_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mds_rec_link);
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+1);  
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+2); 
+      offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
+      break;
+    case  REINT_OPEN   : /* [rec_create][filename][eadata] */
+      offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
+      offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);  
+      offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); /* TODO : replace with hf_eadata */
+      break;
+    default:
+      break;
+
+  }
+
+  return offset ;
+}
+
+
+/* dissect a connect message */
+static int
+lustre_dissect_generic_connect(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  /*TODO : add a cuuid and target uid */
+  offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
+  offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mds_body_handle); 
+  offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+  return offset;
+}
+
+static int
+lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  guint32 i ;
+
+  switch (opc){
+    case OST_REPLY: /* obsolete so nothing */
+      break;
+    case OST_GETATTR:          
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      break;
+    case OST_SETATTR:
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      break;
+    case OST_READ: /* [OST_BODY][obd_ioobj][niobuf_remote] for request, [OST_BODY] for reply */
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      if(pb_type==PTL_RPC_MSG_REQUEST){
+        offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree,   hf_lustre_obd_ioobj); 
+        offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_niobuf_remote); 
+      }
+      break;
+    case OST_WRITE:
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo,
+          tree, hf_lustre_ost_body) ;  /* [ost_body] in both case */
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+      {
+        for (i=0;i<tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+ 4*(LUSTRE_REQ_REC_OFF+1))/24;i++)
+          offset=lustre_dissect_struct_obd_ioobj(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj); 
+        offset=lustre_dissect_struct_niobuf_remote(tvb,offset,pinfo, tree, hf_lustre_obd_ioobj); 
+      }
+      if(pb_type==PTL_RPC_MSG_REPLY) /* niocount *[uint32], but niocount is in request message, so 
+                                        we use the bufcount */
+      {
+        for (i=0;i<tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)-2;i++) /* -2 because we have already dissect 2 buffers : ptl + ost */
+          offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_nio);
+        if (i & 1 ) /* if odd we add extra padding */
+          offset=dissect_uint32(tvb, offset, pinfo, tree,
+              hf_lustre_extra_padding); 
+      }
+      break;
+    case OST_CREATE:
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      break;
+    case OST_DESTROY:
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      if(pb_type==PTL_RPC_MSG_REQUEST) /* [ost_body][-si buf- ldlm_request] */
+        if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +1))) != 0)
+          offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ost_body); 
+      /* TODO : test that */
+      break;
+    case OST_GET_INFO:
+      if(pb_type==PTL_RPC_MSG_REQUEST) /* [key] */
+      {
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF+1); 
+      }
+      if (pb_type==PTL_RPC_MSG_REPLY)
+      {
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */
+      }
+
+      break;
+    case OST_CONNECT:
+      if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
+        offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
+      if (pb_type==PTL_RPC_MSG_REPLY)
+        offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+      break;
+    case OST_DISCONNECT: /* [nothing] */
+      break;
+    case OST_PUNCH: /* [ost_body] */
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      break;
+    case OST_OPEN: /* [nothing] in the code maybee obsolete */
+      break; 
+    case OST_CLOSE: /* [nothing] in the code maybee obsolete */
+      break;
+    case OST_STATFS: /* [obd_statfs] check that : TODO */
+      if(LUSTRE_BUFCOUNT>=2)
+        offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; 
+      break;
+    case OST_SYNC:
+      /*[ost_body] in both case */
+      offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ; 
+      break;
+    case OST_SET_INFO:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+      {
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key,LUSTRE_REQ_REC_OFF); /* key  */
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */
+      }
+      /* if Key = "evict_by_nid" --> need to be process.. TODO */
+      break;
+    case OST_QUOTACHECK:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
+      /* nothing in reply */
+      break;
+    case OST_QUOTACTL:
+      /*[obd_quotactl in both case]*/
+      offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
+    case OST_QUOTA_ADJUST_QUNIT:
+      /* [quota_adjust_qunit] in both case ? */
+      offset=lustre_dissect_struct_quota_adjust_qunit(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit) ; 
+  };
+
+  return offset;
+}
+
+static int
+lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  switch (opc){
+    case MDS_DISCONNECT:
+      /*[nothing]*/
+      break;
+    case MDS_GETSTATUS: 
+      /*[mds body]*/
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      break;
+    case MDS_SETXATTR:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /* [mds body] */
+        offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      /*if(reply) : [nothing]*/
+      break;
+    case MDS_GETXATTR:
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[string_xattr_name]*/
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+1);
+      if(pb_type==PTL_RPC_MSG_REPLY)
+        /*[eada]*/
+        offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+1);
+      break;
+    case MDS_GETATTR:
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      /* TODO [ something ??? ] */ 
+      break;
+    case MDS_GETATTR_NAME:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[mds_body]*/
+        offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      /*[nothing in reply]*/
+      break;
+    case MDS_DONE_WRITING:
+      /*[mds_body]*/
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      break;
+    case MDS_PIN: /* repbody.. */
+      /*[mds_body]*/
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      break;
+    case MDS_SYNC:
+      /*[mds_body]*/
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      break;
+
+    case MDS_CLOSE: /* TODO : check the corresponding structure in lustre code */
+      if(pb_type==PTL_RPC_MSG_REQUEST)  
+      { /* [mds_body] [lov_mds_md][log_cookie] */
+        offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+        if(LUSTRE_BUFCOUNT>=3) 
+          offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
+        if(LUSTRE_BUFCOUNT>=4) 
+          if( tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
+            offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie);
+      }
+      if(pb_type==PTL_RPC_MSG_REPLY) 
+      { /* [mds_body][md][cookie] TODO : check that (reread the code about shrink in lustre) */ 
+        offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+        if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0)
+          offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_md_data,LUSTRE_REQ_REC_OFF+1); /* key  */
+        if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
+          offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); 
+      }
+      break;
+
+    case MDS_STATFS:
+      if(pb_type==PTL_RPC_MSG_REPLY)
+        /*[obd_statfs]*/
+        offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ; 
+      /*in request : [nothing]*/
+      break;
+
+    case MDS_READPAGE:
+      /* [mds_body] but with some different interpration, need to modify the hf :  TODO  */
+      offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+      break;
+
+    case MDS_REINT: 
+      /* the structure depend on the intent_opcode */
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        offset=reint_opcode_process(tvb, offset, pinfo, tree);
+      if(pb_type==PTL_RPC_MSG_REPLY)
+      {
+        /*[mds_body][??][llog_logid_rec] */
+        offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+        if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){
+          /* OPEN, RENAME, and UNLINK */
+          if(tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){ /* rec_unlink or rec_rename */
+            offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, 
+                LUSTRE_REQ_REC_OFF+1); // replace by eadata TODO TODO // 
+            if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0) /* with unlink or rename we have 4 buffers handler.c line 1691*/
+              offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, 
+                  hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); // replace withe eadata TODO TODO // 
+          }
+        }
+
+      }
+      break;
+    case MDS_SET_INFO:
+      if(pb_type==PTL_RPC_MSG_REQUEST){
+        /*[key][val]*/
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key,LUSTRE_REQ_REC_OFF); /* key  */
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */
+        //offset=add_extra_padding(tvb,offset,pinfo,tree);
+      }
+      /*nothing en reply*/
+      break;
+    case MDS_QUOTACHECK:
+      /* [obd_quotactl] */
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
+      break;
+    case MDS_QUOTACTL:
+      /* [obd_quotactl] in both case*/
+      offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl) ; 
+      break;
+    case MDS_CONNECT: 
+      if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
+        offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
+      if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
+        offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+      break;
+    default:
+      break;
+  };
+
+  return offset;
+
+}
+
+
+static int
+lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+
+  switch (opc)
+  {
+    case LDLM_ENQUEUE:
+      /*[ldlm_request] if we have one more buffer it's [intent_opcode] and the opcode give us the 
+       * corresponding intent structure [intent] */
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+      {
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+        if (LUSTRE_BUFCOUNT>=3)
+          offset=lustre_dissect_struct_ldlm_intent(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent);
+      }
+      if(pb_type==PTL_RPC_MSG_REPLY)
+      {
+        guint32 ldlm_type;
+        guint32 magic;
+        /*[ldlm_reply]*/
+        offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply,&ldlm_type) ; 
+        if(LUSTRE_BUFCOUNT>2 && (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*2) == 40)) 
+          /* TODO :this code need to be check and test, the lustre corresponding code is'nt explicit, so 
+           * not sure to have this buffer, but in example it works fine
+           */
+          offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb); 
+        else 
+          if(LUSTRE_BUFCOUNT>2)
+          {
+            offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ;
+            /*g_print("buflen_off+4*3 = %d", tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF));*/
+            if(LUSTRE_BUFCOUNT>2 && 
+                (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF) > 0))
+            { 
+              magic=tvb_get_letohl(tvb, offset); /* TODO : replace this with a macro */
+              switch(magic)
+              {
+                case LOV_MAGIC_V1:
+                  offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
+                  break;
+                case LOV_MAGIC_JOIN:
+                  offset=lustre_dissect_struct_lov_mds_md_join(tvb, offset, pinfo, tree, 
+                      hf_lustre_lov_mds_md_join);
+                  break;
+                default:
+                  offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, 
+                      hf_lustre_extra_padding, LUSTRE_DLM_INTENT_REC_OFF);
+                  break;
+              };
+            }
+          }
+      }
+      break;
+
+    case LDLM_CONVERT:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[ldlm_request]*/
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+      if(pb_type==PTL_RPC_MSG_REPLY)
+        /*[ldlm_reply]*/
+        offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, NULL) ; 
+      break;
+
+    case LDLM_CANCEL:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[ldlm_request]*/
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+      /*[nothing en reply]*/
+      break;
+
+    case LDLM_BL_CALLBACK: /* TODO : check the corresponding code in lustre*/
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[ldlm_request]*/
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+      break;
+
+    case LDLM_CP_CALLBACK:
+      if(pb_type==PTL_RPC_MSG_REQUEST){
+        /*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO : 
+         * check that */
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+        if(LUSTRE_BUFCOUNT>=3) 
+          offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
+      }
+      /*reply : [nothing] */
+      break;
+
+    case LDLM_GL_CALLBACK:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        /*[ldlm_request] */
+        offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; 
+      else 
+        if(pb_type==PTL_RPC_MSG_REPLY)
+          /*reply : [ost_lvb] <-- need to be check*/
+          offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb); 
+      break;
+
+    default :
+      break;
+  }
+  return offset;
+}
+
+static int
+lustre_mgs_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  switch (opc){
+    case MGS_CONNECT :
+      if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
+        offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);  
+      if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
+        offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+      break;
+    case MGS_DISCONNECT :
+      /*[nothing]*/
+      break;
+    case MGS_EXCEPTION :        /* node died, etc. */
+      /*[nothing]*/
+      break;
+    case MGS_TARGET_REG:
+      /*[mgs_target_info], mgs_handler.c mgs_handle_target_reg()  called whenever a target startup*/
+      offset=lustre_dissect_struct_mgs_target_info(tvb, offset, pinfo, tree, hf_lustre_mgs_target_info); 
+      break;
+    case MGS_TARGET_DEL:
+      /*[nothing]*/
+      break;
+    case MGS_SET_INFO:
+      /*[mgs_send_param], mgs_set_info_rpc()*/
+      offset=lustre_dissect_struct_mgs_send_param(tvb,offset,pinfo,tree,hf_lustre_mgs_send_param);
+      break;
+    default:
+      break;
+  };
+  return offset;
+}
+
+static int 
+lustre_odb_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  switch(opc){
+    case OBD_PING : 
+      /*[nothing]*/
+      break;
+    case OBD_LOG_CANCEL:
+      /*[nothing]*/
+      break;
+    case OBD_QC_CALLBACK:
+      if(pb_type==PTL_RPC_MSG_REQUEST)
+        offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl); 
+      /*if (request)  : [nothing]*/
+      break;
+    default:
+      break;
+  };
+  return offset;
+}
+
+static int
+lustre_llog_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  switch(opc){
+    case LLOG_ORIGIN_HANDLE_CREATE     : /* in handler.c */
+      /*[llogd_body]  (reply and request)*/
+      offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
+      if(pb_type==PTL_RPC_MSG_REQUEST) /*[filename] */
+        if (LUSTRE_BUFCOUNT>2)
+          offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_name, 
+              LUSTRE_REQ_REC_OFF+1);
+      break;
+    case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */
+      /* [llogd_body][???]
+       * the size of second buf is LLOG_CHKUNK_SIZE, so it's maybee only bulk data */
+      offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
+      offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
+          LUSTRE_REQ_REC_OFF + 1 );
+      break;
+    case LLOG_ORIGIN_HANDLE_READ_HEADER:/* in handler.c */
+      if(pb_type==PTL_RPC_MSG_REQUEST){
+        /* [llogd_body][llog_log_hdr] */
+        offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
+        if(LUSTRE_BUFCOUNT>2)
+          offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, 
+              hf_lustre_llogd_log_hdr);
+      }
+      if(pb_type==PTL_RPC_MSG_REPLY) /* [llog_log_hdr] */
+        offset=lustre_dissect_struct_llog_log_hdr(tvb, offset, pinfo, tree, 
+            hf_lustre_llogd_log_hdr);
+      break;
+    case LLOG_ORIGIN_HANDLE_WRITE_REC  : /* I think this is obsolete */
+      /*[nothing]*/
+      break;
+    case LLOG_ORIGIN_HANDLE_CLOSE      :/* handler.c */
+      /*[nothing]*/
+      break;
+    case LLOG_ORIGIN_CONNECT           : /* ost_handler.c */
+      /*[nothing]*/
+    case LLOG_CATINFO                  : /*in handler.c */
+      if(pb_type==PTL_RPC_MSG_REQUEST){
+        /* [keyword][if keyword=config  [char*] else [nothing]] */
+        offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword, 
+            LUSTRE_REQ_REC_OFF);
+        if(strcmp(tvb_get_string(tvb, LUSTRE_REQ_REC_OFF, tvb_get_letohl(tvb, 
+                  LUSTRE_BUFLEN_OFF+4*LUSTRE_REQ_REC_OFF)), "config")==0) /*  if(keyword == 
+                                                                              "config") */
+          offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_client, 
+              LUSTRE_REQ_REC_OFF+1);
+      }
+      if(pb_type==PTL_RPC_MSG_REPLY)
+        /*[buf] sizeof =  llog_chunk_size*/
+        offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
+            LUSTRE_REQ_REC_OFF + 1 );
+      /* TODO TODO : check if it's note a catid */
+      break;
+    case LLOG_ORIGIN_HANDLE_PREV_BLOCK : /* in handler.c */
+      /* [llogd_body] in both case */
+      offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
+      if(pb_type==PTL_RPC_MSG_REPLY)
+        /*[buf] size of llog_chunk_size*/
+        offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, 
+            LUSTRE_REQ_REC_OFF + 1 );
+      break;
+    case LLOG_ORIGIN_HANDLE_DESTROY    : /* in handler.c */
+      /*[llogd_body] in both case*/
+      offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
+      break;
+    default:
+      break;
+  };
+
+  return offset;
+}
+
+/* process lustre opcode : 
+   check if opcode is in range_opcode, and call the corresponding opcode process function */
+static int 
+lustre_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) 
+{
+  if (opc <= OST_LAST_OPC) /* OST opcodes */
+    offset=lustre_ost_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  if ( (opc >= MDS_FIRST_OPC) &&  (opc < MDS_LAST_OPC )) /* MDS opcodes */
+    offset=lustre_mds_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  if ( (opc >= LDLM_FIRST_OPC) && (opc < LDLM_LAST_OPC) ) /*LDLM Opcodes*/
+    offset=lustre_ldlm_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  if( (opc>= MGS_FIRST_OPC) && (opc <= MGS_LAST_OPC)) /* MGS Opcodes */
+    offset=lustre_mgs_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  if( (opc>= OBD_FIRST_OPC) && (opc<=OBD_LAST_OPC)) /* ODB Opcodes */
+    offset=lustre_odb_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  if( (opc>=LLOG_FIRST_OPC) && (opc<=LLOG_LAST_OPC)) /* LLOG Opcodes */
+    offset=lustre_llog_opcode_process( tvb , offset ,pinfo ,  tree , opc , pb_type) ;
+
+  return offset ;
+}
+
+/* ----------------------------------------------- */
+/* add an extra padding to be aligned to 8bytes */
+static int 
+add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) 
+{
+  guint32 padding_len;
+
+  padding_len = (8- offset%8)%8;   
+  if(padding_len){
+    proto_tree_add_item(tree, hf_lustre_extra_padding , tvb, offset, padding_len, TRUE);
+    offset+=padding_len;
+  }
+  return offset;
+}
+/* ----------------------------------------------- */
+
+static int 
+ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) 
+{
+  /* all corresponding code is in mdc_locks.c in function mdc_enqueue() */
+  /* if 0x0003 we have CREAT + OPEN
+  */
+  if (intent_opc & IT_OPEN) {
+    /* mdc_intent_open_pack(), d'où [opcode][mdc_rec_create][name][eada] */
+    offset=lustre_dissect_struct_mds_rec_create(tvb, offset, pinfo, tree, hf_lustre_mds_rec_create);
+    offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+    offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata,
+        LUSTRE_DLM_INTENT_REC_OFF+2); /* TODO : replace hf with eada hf */
+
+  }
+  if (intent_opc & IT_UNLINK){
+    /* mdc_intent_unlink_pack(), d'où [opcode][mds_rec_unlink][name] */
+    offset=lustre_dissect_struct_mds_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mds_rec_unlink); 
+    offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+  }
+  if (intent_opc & IT_GETATTR){
+    /* mdc_intent_lookup_pack, d'où [mds_body][name] */ 
+    offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+    offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+  }
+
+  if (intent_opc & IT_LOOKUP){
+    /* mdc_intent_lookup_pack, d'où [mds_body][name] */ 
+    offset=lustre_dissect_struct_mds_body(tvb, offset, pinfo, tree, hf_lustre_mds_body) ; 
+    offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+  }
+  return offset;
+}
+
+
+
+/* ----------------------------------------------- */
+/* function to test if the packet is entirely dissected  add BUG in PROTOCOL COL when it's not*/
+static void
+sanity_check(tvbuff_t *tvb, packet_info *pinfo, guint32 val_offset _U_)  
+{
+  guint32 magic_number ;
+  guint32 somme_buflen = 0 ;
+  guint32 i ;
+
+  magic_number = tvb_get_letohl(tvb, 8);
+
+
+  for (i=0;i<LUSTRE_BUFCOUNT;i++) 
+    somme_buflen += tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF +
+        4 * i ) + (8- tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+4 * i)%8)%8; /* we add the
+                                                                            corresponding
+                                                                            extra padding,
+                                                                            because extra
+                                                                            padding isn't
+                                                                            count in buflen
+                                                                            */   
+
+  if(val_offset!=somme_buflen){
+    /*g_print("somme_buflen=%d, val_offset = %d \n",somme_buflen,val_offset);*/
+    if (check_col(pinfo->cinfo, COL_INFO)) {
+      col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
+    }
+  }
+
+}
+
+
+/* IDL: struct lustre_msg_v1 { */
+/* IDL:   struct lustre_handle { */
+/* IDL: } lm_handle; */
+/* IDL:   uint32 lm_magic; */
+/* IDL:   uint32 lm_type; */
+/* IDL:   uint32 lm_version; */
+/* IDL:   uint32 lm_opc; */
+/* IDL:   uint64 lm_last_xid; */
+/* IDL:   uint64 lm_last_committed; */
+/* IDL:   uint64 lm_transno; */
+/* IDL:   uint32 lm_status; */
+/* IDL:   uint32 lm_flags; */
+/* IDL:   uint32 lm_conn_cnt; */
+/* IDL:   uint32 lm_bufcount; */
+/* IDL:   uint32 lm_buflens[0]; */
+/* IDL: } */
+
+
+static int
+lustre_dissect_element_msg_v1_lm_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  /*TODO : replace with a v1 handle*/
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_lustre_msg_v1_lm_handle);
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_magic);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_version);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_opc);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_xid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_last_committed);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_transno);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_status);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_conn_cnt);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_bufcount);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v1_lm_buflens);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v1_lm_buflens(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  guint32 bufcount ;
+  gboolean extra_padding ;
+  guint i;
+
+  bufcount=tvb_get_letohl(tvb, offset-4); /* TODO : replace with a macro */
+
+  if (bufcount & 1) /* we add an extra padding if bufcount is odd */
+    extra_padding = 1 ;
+  else 
+    extra_padding = 0 ;
+
+  for (i=0;i<bufcount;i++) {
+    offset=lustre_dissect_element_msg_v1_lm_buflens_(tvb, offset, pinfo, tree);
+  }
+  if (extra_padding)
+  {
+    offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+  }
+
+  return offset;
+}
+
+
+
+int
+lustre_dissect_struct_msg_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+  guint32 opc ; /* opcode */
+  guint32 pb_type; /* type : {request, reply, error} */
+
+
+
+  old_offset=offset;
+  tree=parent_tree;
+  // if (parent_tree) {
+  //     item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+  //     tree = proto_item_add_subtree(item, ett_lustre_lustre_msg_v1);
+  // }
+
+  offset=lustre_dissect_element_msg_v1_lm_handle(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_magic(tvb, offset, pinfo, tree);
+
+  pb_type = tvb_get_letohl(tvb, offset);
+  offset=lustre_dissect_element_msg_v1_lm_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_version(tvb, offset, pinfo, tree);
+  opc = tvb_get_letohl(tvb, offset);
+  offset=lustre_dissect_element_msg_v1_lm_opc(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_last_xid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_last_committed(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_transno(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_status(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_conn_cnt(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_bufcount(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v1_lm_buflens(tvb, offset, pinfo, tree);
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  /* display some nice infos */
+  display_info_str(parent_tree, pinfo->cinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown"));
+  display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown"));
+
+  offset=lustre_opcode_process(tvb, offset, pinfo, tree, opc, pb_type);
+
+  return offset;
+}
+
+/* IDL: struct ptlrpc_body { */
+/* IDL:   struct lustre_handle { */
+/* IDL: } pb_handle; */
+/* IDL:   uint32 pb_type; */
+/* IDL:   uint32 pb_version; */
+/* IDL:   uint32 pb_opc; */
+/* IDL:   uint32 pb_status; */
+/* IDL:   uint64 pb_last_xid; */
+/* IDL:   uint64 pb_last_seen; */
+/* IDL:   uint64 pb_last_committed; */
+/* IDL:   uint64 pb_transno; */
+/* IDL:   uint32 pb_flags; */
+/* IDL:   uint32 pb_op_flags; */
+/* IDL:   uint32 pb_conn_cnt; */
+/* IDL:   uint32 pb_timeout; */
+/* IDL:   uint32 pb_service_time; */
+/* IDL:   uint32 pb_limit; */
+/* IDL:   uint64 pb_slv; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ptlrpc_body_pb_handle);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_type);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_version);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_opc);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_status(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_status);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_last_xid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_xid);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_last_seen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_seen);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_last_committed(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_last_committed);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_transno);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_op_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_op_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_conn_cnt);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_timeout(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_timeout);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_service_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_service_time);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_limit(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_limit);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_ptlrpc_body_pb_slv(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ptlrpc_body_pb_slv);
+
+  return offset;
+}
+
+static int
+lustre_dissect_struct_ptlrpc_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_len _U_ )
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  int old_offset;
+
+  guint32 opc, pb_type;
+
+
+  old_offset=offset;
+
+
+  if (parent_tree) {
+    item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+    tree = proto_item_add_subtree(item, ett_lustre_ptlrpc_body);
+  }
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_handle(tvb, offset, pinfo, tree);
+
+  pb_type = tvb_get_letohl(tvb, offset);
+  //g_print("msg_v2_lm_type_offset = %d \n" , offset) ;
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_type(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_version(tvb, offset, pinfo, tree);
+
+  // g_print("msg_v2_opcode_offset %d  \n", offset);
+  opc = tvb_get_letohl(tvb, offset);
+  offset=lustre_dissect_element_ptlrpc_body_pb_opc(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_status(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_last_xid(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_last_seen(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_last_committed(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_transno(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_op_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_conn_cnt(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_timeout(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_service_time(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_limit(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_ptlrpc_body_pb_slv(tvb, offset, pinfo, tree);
+
+
+
+  proto_item_set_len(item, offset-old_offset);
+
+  /* display some nice infos */
+  display_info_str(parent_tree, pinfo->cinfo, COL_INFO, val_to_str(opc, lustre_op_codes, "Unknown"));
+  display_info_fstr(parent_tree, pinfo->cinfo,COL_INFO, " %s ", val_to_str(pb_type, lustre_LMTypes, "Unknown"));
+
+  /* on utilise parent_tree pour bien distinguer les différents buffers (relatifs Ã  bufcount + buflen), il s'agit d'un choix de présentation */
+  offset=lustre_opcode_process(tvb, offset, pinfo, parent_tree, opc, pb_type);
+
+  sanity_check(tvb,pinfo,offset-old_offset);
+  return offset;
+}
+
+
+
+/* IDL: struct lustre_msg_v2 { */
+/* IDL:   uint32 lm_bufcount; */
+/* IDL:   uint32 lm_secflvr; */
+/* IDL:   uint32 lm_magic; */
+/* IDL:   uint32 lm_repsize; */
+/* IDL:   uint32 lm_cksum; */
+/* IDL:   uint32 lm_flags; */
+/* IDL:   uint32 lm_padding_2; */
+/* IDL:   uint32 lm_padding_3; */
+/* IDL:   uint32 lm_buflens[0]; */
+/* IDL: } */
+
+static int
+lustre_dissect_element_msg_v2_lm_bufcount(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  proto_tree_add_item(tree, hf_lustre_lustre_msg_v2_lm_bufcount, tvb, offset, 4, TRUE);
+  offset += 4 ; 
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_secflvr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_secflvr);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_magic);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_repsize(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_repsize);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_cksum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_cksum);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_flags);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_2);
+
+  return offset;
+}
+
+static int
+lustre_dissect_element_msg_v2_lm_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_padding_3);
+
+  return offset;
+}
+
+
+
+static int
+lustre_dissect_element_msg_v2_lm_buflens_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+{
+  offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lustre_msg_v2_lm_buflens);
+
+  return offset;
+}
+
+int
+lustre_dissect_struct_msg_v2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+  proto_item *item = NULL;
+  proto_tree *tree = NULL;
+  guint32 bufcount ;
+  int old_offset;
+  guint32 i ;
+  guint32 buf_len_offset;
+  guint32 current_buf_len ;
+  gboolean extra_padding ;
+
+
+  old_offset=offset;
+  /* to get a light display */
+  tree=parent_tree;
+  //  if (parent_tree) {
+  //      item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+  //      tree = proto_item_add_subtree(item, ett_lustre_lustre_msg_v2);
+  //  }
+
+  bufcount = tvb_get_letohl(tvb,offset);
+  offset=lustre_dissect_element_msg_v2_lm_bufcount(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_secflvr(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_magic(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_repsize(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_cksum(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_flags(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_padding_2(tvb, offset, pinfo, tree);
+
+  offset=lustre_dissect_element_msg_v2_lm_padding_3(tvb, offset, pinfo, tree);
+
+
+
+  if (bufcount & 1) /* we add an extra padding if bufcount is odd */
+    extra_padding = 1 ;
+  else 
+    extra_padding = 0 ;
+
+  buf_len_offset=offset ;
+  for (i=0;i<bufcount;i++) {
+    offset=lustre_dissect_element_msg_v2_lm_buflens_(tvb, offset, pinfo, tree);
+  }
+
+  if (extra_padding)
+  {
+    offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
+  }
+
+
+
+  current_buf_len = tvb_get_letohl(tvb, buf_len_offset);
+  offset=lustre_dissect_struct_ptlrpc_body(tvb,offset, pinfo, tree, hf_lustre_ptlrpc_body_pb, current_buf_len); 
+
+  proto_item_set_len(item, offset-old_offset);
+
+  return offset;
+}
+
+
+
+
+static void 
+dissect_lustre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)  
+{
+  if (check_col(pinfo->cinfo, COL_PROTOCOL)) 
+    col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre");
+
+  /*light display*/
+  if (check_col(pinfo->cinfo, COL_INFO))  
+    col_set_str(pinfo->cinfo, COL_INFO, "");
+  /*    guint32 magic_number ; */
+  /*    magic_number = tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET);   */
+  /*    switch (magic_number)*/
+  /*    {*/
+  /*        case LUSTRE_MSG_MAGIC_V1:*/
+  /*            col_append_fstr(pinfo->cinfo, COL_INFO, " V1 ");*/
+  /*            break;*/
+  /*        case LUSTRE_MSG_MAGIC_V2:*/
+  /*            col_append_fstr(pinfo->cinfo, COL_INFO, " V2 ");*/
+  /*            break;*/
+  /*        default:*/
+  /*            break;*/
+  /*    }*/
+
+  if (tree) {
+
+    guint32 magic_number ; 
+    guint32 offset;
+    proto_item *ti  = NULL ; 
+    proto_tree * lustre_tree = NULL ; 
+
+
+    ti = proto_tree_add_item(tree,proto_lustre,tvb,0,-1,FALSE); 
+    lustre_tree = proto_item_add_subtree(ti,ett_lustre); 
+
+
+    magic_number = tvb_get_letohl(tvb, 8);
+
+
+    switch (magic_number){
+      case LUSTRE_MSG_MAGIC_V1:
+        /* put some nice info*/ 
+        proto_item_append_text(lustre_tree, " V1 ");
+        offset=lustre_dissect_struct_msg_v1(tvb, 0, pinfo, lustre_tree, proto_lustre ) ; 
+        break;
+      case LUSTRE_MSG_MAGIC_V2:
+        /* put some nice info*/ 
+        proto_item_append_text(lustre_tree, " V2 ");
+        offset=lustre_dissect_struct_msg_v2(tvb, 0, pinfo, lustre_tree,  proto_lustre ) ; 
+        break;
+      default:
+        break;
+    }
+
+  }
+}
+
+void proto_register_dcerpc_lustre(void)
+{
+  static hf_register_info hf[] = {
+    { &hf_lustre_mds_body_ctime, 
+      { "Ctime", "lustre.mds_body.ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_fid1, 
+      { "Fid1", "lustre.mds_body.fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_nlink, 
+      { "Nlink", "lustre.mds_body.nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_flags, 
+      { "Flags", "lustre.mds_body.flags", FT_UINT32, BASE_HEX, VALS(lustre_mds_flags_vals) , 0, "", HFILL }},
+    { &hf_lustre_mds_body_fsgid, 
+      { "Fsgid", "lustre.mds_body.fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_mtime, 
+      { "Mtime", "lustre.mds_body.mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_uid, 
+      { "Uid", "lustre.mds_body.uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_mode, 
+      { "Mode", "lustre.mds_body.mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_max_cookiesize, 
+      { "Max Cookiesize", "lustre.mds_body.max_cookiesize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_io_epoch, 
+      { "Io Epoch", "lustre.mds_body.io_epoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_ino, 
+      { "Ino", "lustre.mds_body.ino", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_fid2, 
+      { "Fid2", "lustre.mds_body.fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_padding_4, 
+      { "Padding 4", "lustre.mds_body.padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_aclsize, 
+      { "Aclsize", "lustre.mds_body.aclsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_valid, 
+      { "Valid", "lustre.mds_body.valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_generation, 
+      { "Generation", "lustre.mds_body.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_atime, 
+      { "Atime", "lustre.mds_body.atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_handle, 
+      { "Handle", "lustre.mds_body.handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_max_mdsize, 
+      { "Max Mdsize", "lustre.mds_body.max_mdsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_rdev, 
+      { "Rdev", "lustre.mds_body.rdev", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_blocks, 
+      { "Blocks", "lustre.mds_body.blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_fsuid, 
+      { "Fsuid", "lustre.mds_body.fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_gid, 
+      { "Gid", "lustre.mds_body.gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_handle_cookie, 
+      { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_suppgid, 
+      { "Suppgid", "lustre.mds_body.suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_size, 
+      { "Size", "lustre.mds_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_eadatasize, 
+      { "Eadatasize", "lustre.mds_body.eadatasize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_body_capability, 
+      { "Capability", "lustre.mds_body.capability", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_last_committed, 
+      { "Pb Last Committed", "lustre.ptlrpc_body.pb_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_version, 
+      { "Pb Version", "lustre.ptlrpc_body.pb_version", FT_UINT32, BASE_DEC, NULL, ~LUSTRE_VERSION_MASK, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_bufcount, 
+      { "Lm Bufcount", "lustre.lustre_msg_v1.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_ioobj_ioo_id, 
+      { "Ioo Id", "lustre.obd_ioobj.ioo_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_slv, 
+      { "Pb Slv", "lustre.ptlrpc_body.pb_slv", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_handle, 
+      { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_lvb_lvb_atime, 
+      { "Lvb Atime", "lustre.ost_lvb.lvb_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_timeout, 
+      { "Pb Timeout", "lustre.ptlrpc_body.pb_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_bavail, 
+      { "Os Bavail", "lustre.obd_statfs.os_bavail", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_bsize, 
+      { "Os Bsize", "lustre.obd_statfs.os_bsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_repsize, 
+      { "Lm Repsize", "lustre.lustre_msg_v2.lm_repsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_stripe_size, 
+      { "Lmm Stripe Size", "lustre.lov_mds_md_v1.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_last_xid, 
+      { "Lm Last Xid", "lustre.lustre_msg_v1.lm_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ll_fid_f_type, 
+      { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_cksum, 
+      { "Lm Cksum", "lustre.lustre_msg_v2.lm_cksum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_buflens, 
+      { "Lm Buflens", "lustre.lustre_msg_v2.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_status, 
+      { "Lm Status", "lustre.lustre_msg_v1.lm_status", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_type, 
+      { "Lm Type", "lustre.lustre_msg_v1.lm_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }},
+    { &hf_lustre_niobuf_remote_len, 
+      { "Len", "lustre.niobuf_remote.len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_magic, 
+      { "Lmm Magic", "lustre.lov_mds_md_v1.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_op_flags, 
+      { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_lvb_lvb_ctime, 
+      { "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_type, 
+      { "Pb Type", "lustre.ptlrpc_body.pb_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_nllg, 
+      { "Ocd Nllg", "lustre.obd_connect_data.ocd_nllg", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_nllu, 
+      { "Ocd Nllu", "lustre.obd_connect_data.ocd_nllu", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ll_fid_generation, 
+      { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_lvb_lvb_mtime, 
+      { "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_ibits_known, 
+      { "Ocd Ibits Known", "lustre.obd_connect_data.ocd_ibits_known", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_padding_3, 
+      { "Lm Padding 3", "lustre.lustre_msg_v2.lm_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_flags, 
+      { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare4, 
+      { "Os Spare4", "lustre.obd_statfs.os_spare4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_group, 
+      { "Ocd Group", "lustre.obd_connect_data.ocd_group", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_ost_data_v1_l_object_gr, 
+      { "L Object Gr", "lustre.lov_ost_data_v1.l_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_object_gr, 
+      { "Lmm Object Gr", "lustre.lov_mds_md_v1.lmm_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_brw_size, 
+      { "Ocd Brw Size", "lustre.obd_connect_data.ocd_brw_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_limit, 
+      { "Pb Limit", "lustre.ptlrpc_body.pb_limit", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_maxbytes, 
+      { "Os Maxbytes", "lustre.obd_statfs.os_maxbytes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare5, 
+      { "Os Spare5", "lustre.obd_statfs.os_spare5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_flags, 
+      { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_ffree, 
+      { "Os Ffree", "lustre.obd_statfs.os_ffree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_files, 
+      { "Os Files", "lustre.obd_statfs.os_files", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_stripe_count, 
+      { "Lmm Stripe Count", "lustre.lov_mds_md_v1.lmm_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_flags, 
+      { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_last_committed, 
+      { "Lm Last Committed", "lustre.lustre_msg_v1.lm_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare9, 
+      { "Os Spare9", "lustre.obd_statfs.os_spare9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_index, 
+      { "Ocd Index", "lustre.obd_connect_data.ocd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_buflens, 
+      { "Lm Buflens", "lustre.lustre_msg_v1.lm_buflens", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare1, 
+      { "Os Spare1", "lustre.obd_statfs.os_spare1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare8, 
+      { "Os Spare8", "lustre.obd_statfs.os_spare8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_conn_cnt, 
+      { "Lm Conn Cnt", "lustre.lustre_msg_v1.lm_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_transno, 
+      { "Pb Transno", "lustre.ptlrpc_body.pb_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_service_time, 
+      { "Pb Service Time", "lustre.ptlrpc_body.pb_service_time",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_conn_cnt, 
+      { "Pb Conn Cnt", "lustre.ptlrpc_body.pb_conn_cnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_opc, 
+      { "Pb Opc", "lustre.ptlrpc_body.pb_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_connect_flags, 
+      { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_ost_data_v1_l_object_id, 
+      { "L Object Id", "lustre.lov_ost_data_v1.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_ost_data_v1_l_ost_gen, 
+      { "L Ost Gen", "lustre.lov_ost_data_v1.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_bfree, 
+      { "Os Bfree", "lustre.obd_statfs.os_bfree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_version, 
+      { "Ocd Version", "lustre.obd_connect_data.ocd_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_objects, 
+      { "Lmm Objects", "lustre.lov_mds_md_v1.lmm_objects", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_status_req_flags, 
+      { "Flags", "lustre.mds_status_req.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_namelen, 
+      { "Os Namelen", "lustre.obd_statfs.os_namelen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_blocks, 
+      { "Os Blocks", "lustre.obd_statfs.os_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_secflvr, 
+      { "Lm Secflvr", "lustre.lustre_msg_v2.lm_secflvr", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_transno, 
+      { "Lm Transno", "lustre.lustre_msg_v1.lm_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1_lmm_pattern, 
+      { "Lmm Pattern", "lustre.lov_mds_md_v1.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_opc, 
+      { "Lm Opc", "lustre.lustre_msg_v1.lm_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_grant, 
+      { "Ocd Grant", "lustre.obd_connect_data.ocd_grant", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_ioobj_ioo_bufcnt, 
+      { "Ioo Bufcnt", "lustre.obd_ioobj.ioo_bufcnt", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_version, 
+      { "Lm Version", "lustre.lustre_msg_v1.lm_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare7, 
+      { "Os Spare7", "lustre.obd_statfs.os_spare7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_fsid, 
+      { "Os Fsid", "lustre.obd_statfs.os_fsid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_cksum_types, 
+      { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_lvb_lvb_size, 
+      { "Lvb Size", "lustre.ost_lvb.lvb_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_type, 
+      { "Os Type", "lustre.obd_statfs.os_type", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare6, 
+      { "Os Spare6", "lustre.obd_statfs.os_spare6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_state, 
+      { "Os State", "lustre.obd_statfs.os_state", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare3, 
+      { "Os Spare3", "lustre.obd_statfs.os_spare3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_magic, 
+      { "Lm Magic", "lustre.lustre_msg_v2.lm_magic", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, 
+    { &hf_lustre_lov_mds_md_v1_lmm_object_id, 
+      { "Lmm Object Id", "lustre.lov_mds_md_v1.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_last_seen, 
+      { "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_ioobj_ioo_type,  /* TODO : create the corresponding value_string */
+      { "Ioo Type", "lustre.obd_ioobj.ioo_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_last_xid, 
+      { "Pb Last Xid", "lustre.ptlrpc_body.pb_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_status, 
+      { "Pb Status", "lustre.ptlrpc_body.pb_status", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_niobuf_remote_flags, 
+      { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ll_fid_id, 
+      { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_lvb_lvb_blocks, 
+      { "Lvb Blocks", "lustre.ost_lvb.lvb_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_padding_2, 
+      { "Lm Padding 2", "lustre.lustre_msg_v2.lm_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_padding1, 
+      { "Padding1", "lustre.obd_connect_data.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_ost_data_v1_l_ost_idx, 
+      { "L Ost Idx", "lustre.lov_ost_data_v1.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_padding2, 
+      { "Padding2", "lustre.obd_connect_data.padding2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_ioobj_ioo_gr, 
+      { "Ioo Gr", "lustre.obd_ioobj.ioo_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_niobuf_remote_offset, 
+      { "Offset", "lustre.niobuf_remote.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_status_req_repbuf, 
+      { "Repbuf", "lustre.mds_status_req.repbuf", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_statfs_os_spare2, 
+      { "Os Spare2", "lustre.obd_statfs.os_spare2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v2_lm_bufcount, 
+      { "Lm Bufcount", "lustre.lustre_msg_v2.lm_bufcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb_handle, 
+      { "Pb Handle", "lustre.ptlrpc_body.pb_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_connect_data_ocd_transno, 
+      { "Ocd Transno", "lustre.obd_connect_data.ocd_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lustre_msg_v1_lm_magic, 
+      { "Lm Magic", "lustre.lustre_msg_v1.lm_magic", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ptlrpc_body_pb,
+      { "ptl rpc", "lustre.ptlrpc_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_mds_body,
+      { "mds body", "lustre.mds_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_mds_rec_create,
+      { "mds rec create", "lustre.mds_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_mds_rec_link,
+      { "mds rec link", "lustre.mds_rec_link", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_mds_rec_unlink,
+      { "mds rec unlink", "lustre.mds_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+
+    { &hf_lustre_obd_uuid,
+      { "obd uid name", "lustre.obd_uid", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_obd_connect_data ,
+      { "obd connect data", "lustre.obd_connect_data", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+
+    { &hf_lustre_ldlm_intent,
+      { "ldlm intent", "lustre.ldlm_intent", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+
+    { &hf_lustre_lov_user_md_join,
+      { "lov user md join", "lustre.lov_user_md_join", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_obd_ioobj,
+      { "lustre obd ioobj", "lustre.obd_ioobj", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_niobuf_remote,
+      { "lustre niobuf remote", "lustre.niobuf_remote", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_ost_key,
+      { "lustre ost key", "lustre.ost_key", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_ost_val,
+      { "lustre ost val", "lustre.ost_val", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llogd_chunk,
+      { "lustre llogd chunk", "lustre.llogd_chunk", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llogd_keyword,
+      { "lustre llogd keyword", "lustre.llogd_keyword", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llogd_client,
+      { "lustre llogd client", "lustre.llogd_client", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llogd_name,
+      { "lustre llogd name", "lustre.llogd_name", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llogd_log_hdr,
+      { "lustre llogd log hdr", "lustre.llogd_log_hdr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_llog_logid_rec,
+      { "lustre llog logid rec", "lustre.llog_logid_rec", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+
+    { &hf_lustre_llogd_body,
+      { "lustre llogd body", "lustre.llogd_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_nio,
+      { "lustre nio", "lustre.nio", FT_STRING, BASE_NONE, NULL , 0 , "", HFILL}},
+    { &hf_lustre_ost_body,
+      { "ost body", "lustre.ost_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_obd_statfs,
+      { "obd statfs", "lustre.obd_statfs", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_obd_quotactl,
+      { "obd quotactl", "lustre.obd_quotacl", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit,
+      { "obd quota adjust qunit", "lustre.quota_adjust_qunit", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }},
+    { &hf_lustre_llog_unlink_rec_lur_tail, 
+      { "Lur Tail", "lustre.llog_unlink_rec.lur_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_size_change_rec_lsc_io_epoch, 
+      { "Lsc Io Epoch", "lustre.llog_size_change_rec.lsc_io_epoch", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_flags, 
+      { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_policy_res1, 
+      { "Lock Policy Res1", "lustre.ldlm_reply.lock_policy_res1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_fsuid, 
+      { "Lk Fsuid", "lustre.mds_rec_link.lk_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_len, 
+      { "Lgd Len", "lustre.llogd_body.lgd_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old_qd_id, 
+      { "Qd Id", "lustre.qunit_data_old.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_stripe_count, 
+      { "Lmm Stripe Count", "lustre.lov_user_md_join.lmm_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_padding1, 
+      { "Padding1", "lustre.llog_logid_rec.padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit_padding1, 
+      { "Padding1", "lustre.quota_adjust_qunit.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_size_change_rec_lsc_fid, 
+      { "Lsc Fid", "lustre.llog_size_change_rec.lsc_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_rec_hdr_padding, 
+      { "Padding", "lustre.llog_rec_hdr.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_time, 
+      { "Cr Time", "lustre.mds_rec_create.cr_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_padding_1, 
+      { "Cr Padding 1", "lustre.mds_rec_create.cr_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_nlink, 
+      { "O Nlink", "lustre.obdo.o_nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_suppgid2, 
+      { "Rn Suppgid2", "lustre.mds_rec_rename.rn_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_padding_4, 
+      { "Lk Padding 4", "lustre.mds_rec_link.lk_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_cap, 
+      { "Lk Cap", "lustre.mds_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_extent_gid, 
+      { "Gid", "lustre.ldlm_extent.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_uid, 
+      { "O Uid", "lustre.obdo.o_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_padding_5, 
+      { "Cr Padding 5", "lustre.mds_rec_create.cr_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_xattr_name, 
+      { "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_v1, 
+      { "lov mds md v1", "lustre.lov_mds_md_v1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_cookie, 
+      { "llog cookie", "lustre.llog_cookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_md_data, 
+      { "mds md data", "lustre.mds_md_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_reint_opcode, 
+      { "mds reint opcode", "lustre.mds_reint_opcode", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_xattr_eadata, 
+      { "mds xattr eadata", "lustre.mds_xattr_eadata", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_join, 
+      { "lov mds md join", "lustre.lov_mds_md_join", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_reint_name, 
+      { "mds reint name", "lustre.mds_reint_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_reint_old_name, 
+      { "mds reint old name", "lustre.mds_reint_old_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_reint_new_name, 
+      { "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+
+
+
+    { &hf_lustre_obdo_o_valid, 
+      { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_flags, 
+      { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32,BASE_HEX, NULL, 0, "", HFILL }},
+
+    {&hf_lustre_ldlm_fl_lock_changed, {"LDLM_FL_LOCK_CHANGED", "lustre.ldlm_fl_lock_changed", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCK_CHANGED, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_block_granted, {"LDLM_FL_BLOCK_GRANTED", "lustre.ldlm_fl_block_granted", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_GRANTED, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_block_conv, {"LDLM_FL_BLOCK_CONV", "lustre.ldlm_fl_block_conv", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_CONV, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_block_wait, {"LDLM_FL_BLOCK_WAIT", "lustre.ldlm_fl_block_wait", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_WAIT, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_cbpending, {"LDLM_FL_CBPENDING", "lustre.ldlm_fl_cbpending", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CBPENDING, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_ast_sent, {"LDLM_FL_AST_SENT", "lustre.ldlm_fl_ast_sent", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_AST_SENT, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_wait_noreproc, {"LDLM_FL_WAIT_NOREPROC", "lustre.ldlm_fl_wait_noreproc", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_WAIT_NOREPROC, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_cancel, {"LDLM_FL_CANCEL", "lustre.ldlm_fl_cancel", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCEL, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_replay, {"LDLM_FL_REPLAY", "lustre.ldlm_fl_replay", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_REPLAY, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_intent_only, {"LDLM_FL_INTENT_ONLY", "lustre.ldlm_fl_intent_only", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_INTENT_ONLY, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_local_only, {"LDLM_FL_LOCAL_ONLY", "lustre.ldlm_fl_local_only", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCAL_ONLY, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_failed, {"LDLM_FL_FAILED", "lustre.ldlm_fl_failed", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_FAILED, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_has_intent, {"LDLM_FL_HAS_INTENT", "lustre.ldlm_fl_has_intent", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_HAS_INTENT, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_canceling, {"LDLM_FL_CANCELING", "lustre.ldlm_fl_canceling", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCELING, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_local, {"LDLM_FL_LOCAL", "lustre.ldlm_fl_local", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LOCAL, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_warn, {"LDLM_FL_WARN", "lustre.ldlm_fl_warn", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_WARN, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_discard_data, {"LDLM_FL_DISCARD_DATA", "lustre.ldlm_fl_discard_data", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_DISCARD_DATA, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_no_timeout, {"LDLM_FL_NO_TIMEOUT", "lustre.ldlm_fl_no_timeout", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_NO_TIMEOUT, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_block_nowait, {"LDLM_FL_BLOCK_NOWAIT", "lustre.ldlm_fl_block_nowait", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BLOCK_NOWAIT, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_test_lock, {"LDLM_FL_TEST_LOCK", "lustre.ldlm_fl_test_lock", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_TEST_LOCK, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_lvb_ready, {"LDLM_FL_LVB_READY", "lustre.ldlm_fl_lvb_ready", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_LVB_READY, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_kms_ignore, {"LDLM_FL_KMS_IGNORE", "lustre.ldlm_fl_kms_ignore", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_KMS_IGNORE, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_no_lru, {"LDLM_FL_NO_LRU", "lustre.ldlm_fl_no_lru", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_NO_LRU, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_cancel_on_block, {"LDLM_FL_CANCEL_ON_BLOCK", "lustre.ldlm_fl_cancel_on_block", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CANCEL_ON_BLOCK, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_cp_reqd, {"LDLM_FL_CP_REQD", "lustre.ldlm_fl_cp_reqd", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CP_REQD, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_cleaned, {"LDLM_FL_CLEANED", "lustre.ldlm_fl_cleaned", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_CLEANED, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_atomic_cb, {"LDLM_FL_ATOMIC_CB", "lustre.ldlm_fl_atomic_cb", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_ATOMIC_CB, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_bl_ast, {"LDLM_FL_BL_AST", "lustre.ldlm_fl_bl_ast", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BL_AST, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_bl_done, {"LDLM_FL_BL_DONE", "lustre.ldlm_fl_bl_done", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_BL_DONE, "", HFILL}}, 
+    {&hf_lustre_ldlm_fl_deny_on_contention, {"LDLM_FL_DENY_ON_CONTENTION", "lustre.ldlm_fl_deny_on_contention", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_FL_DENY_ON_CONTENTION, "", HFILL}}, 
+    {&hf_lustre_ldlm_ast_discard_data, {"LDLM_AST_DISCARD_DATA", "lustre.ldlm_ast_discard_data", FT_BOOLEAN, 32, TFS(&flags_set_truth), LDLM_AST_DISCARD_DATA, "", HFILL}}, 
+
+
+    { &hf_lustre_mds_rec_link_lk_padding_3, 
+      { "Lk Padding 3", "lustre.mds_rec_link.lk_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_misc, 
+      { "O Misc", "lustre.obdo.o_misc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_suppgid, 
+      { "Sa Suppgid", "lustre.mds_rec_setattr.sa_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_attr_flags, 
+      { "Sa Attr Flags", "lustre.mds_rec_setattr.sa_attr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_padding_2, 
+      { "Rn Padding 2", "lustre.mds_rec_rename.rn_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_request_lock_handle, 
+      { "Lock Handle", "lustre.ldlm_request.lock_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_lgl_oid, 
+      { "Lgl Oid", "lustre.llog_logid.lgl_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_inodebits_bits, 
+      { "Bits", "lustre.ldlm_inodebits.bits", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_count, 
+      { "Llh Count", "lustre.llog_log_hdr.llh_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_padding_4, 
+      { "Ul Padding 4", "lustre.mds_rec_unlink.ul_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_stripe_size, 
+      { "Lmm Stripe Size", "lustre.lov_user_md_join.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_gen_rec_lgr_tail, 
+      { "Lgr Tail", "lustre.llog_gen_rec.lgr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_catid_lci_padding3, 
+      { "Lci Padding3", "lustre.llog_catid.lci_padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_qd_qunit, 
+      { "Qd Qunit", "lustre.qunit_data.qd_qunit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_fid1, 
+      { "Ul Fid1", "lustre.mds_rec_unlink.ul_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_padding, 
+      { "Padding", "lustre.llog_setattr_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_opcode, 
+      { "Rn Opcode", "lustre.mds_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_flags, 
+      { "Cr Flags", "lustre.mds_rec_create.cr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_fid1, 
+      { "Rn Fid1", "lustre.mds_rec_rename.rn_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_extent_desc_med_start, 
+      { "Med Start", "lustre.mds_extent_desc.med_start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_cookie_lgc_lgl, 
+      { "Lgc Lgl", "lustre.llog_cookie.lgc_lgl", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_dqinfo, 
+      { "Qc Dqinfo", "lustre.obd_quotactl.qc_dqinfo", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_bitmap, 
+      { "Llh Bitmap", "lustre.llog_log_hdr.llh_bitmap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_size, 
+      { "Sa Size", "lustre.mds_rec_setattr.sa_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_suppgid1, 
+      { "Rn Suppgid1", "lustre.mds_rec_rename.rn_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_stat, 
+      { "Qc Stat", "lustre.obd_quotactl.qc_stat", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old2_qd_id, 
+      { "Qd Id", "lustre.qunit_data_old2.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_padding2, 
+      { "Padding2", "lustre.llog_logid_rec.padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_mode, 
+      { "Ul Mode", "lustre.mds_rec_unlink.ul_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_orphan_rec_lor_tail, 
+      { "Lor Tail", "lustre.llog_orphan_rec.lor_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_padding5, 
+      { "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_fsgid, 
+      { "Cr Fsgid", "lustre.mds_rec_create.cr_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_join_jr_fid, 
+      { "Jr Fid", "lustre.mds_rec_join.jr_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    /*-------------------------------------------------------------------------------------------------------------*/
+    /*all this flags are uint64, but I don't find the way to use something like TFS() with a Uint64*/
+    { &hf_lustre_ldlm_intent_opc_open, 
+      { "open", "lustre.ldlm_intent.opc_open", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_OPEN,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_creat, 
+      { "creat", "lustre.ldlm_intent.opc_creat", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_CREAT  ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_readdir, 
+      { "readdir", "lustre.ldlm_intent.opc_readdir", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_READDIR  ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_getattr, 
+      { "getattr", "lustre.ldlm_intent.opc_getattr", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_GETATTR,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_lookup, 
+      { "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_LOOKUP ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_unlink, 
+      { "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_UNLINK ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_getxattr, 
+      { "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_GETXATTR ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_exec, 
+      { "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_EXEC ,  "", HFILL}},
+    { &hf_lustre_ldlm_intent_opc_pin, 
+      { "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&flags_set_truth), IT_PIN ,  "", HFILL}},
+    /*-------------------------------------------------------------------------------------------------------------*/
+    { &hf_lustre_ldlm_intent_opc, 
+      { "intent opcode", "lustre.ldlm_intent.opc", FT_NONE, BASE_NONE, NULL, 0,  "", HFILL}},
+    { &hf_lustre_llog_rec_hdr_lrh_type, 
+      { "Lrh Type", "lustre.llog_rec_hdr.lrh_type", FT_UINT32, BASE_HEX, VALS(lustre_llog_op_type), 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_fsgid, 
+      { "Lk Fsgid", "lustre.mds_rec_link.lk_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_rec_hdr_lrh_len, 
+      { "Lrh Len", "lustre.llog_rec_hdr.lrh_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_lsr_uid, 
+      { "Lsr Uid", "lustre.llog_setattr_rec.lsr_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_padding_1, 
+      { "Ld Padding 1", "lustre.lov_desc.ld_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_4, 
+      { "O Padding 4", "lustre.obdo.o_padding_4", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_padding, 
+      { "Padding", "lustre.mgs_target_info.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_dqblk, 
+      { "Qc Dqblk", "lustre.obd_quotactl.qc_dqblk", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_conn_body_lgdc_gen, 
+      { "Lgdc Gen", "lustre.llogd_conn_body.lgdc_gen", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_padding_2, 
+      { "Cr Padding 2", "lustre.mds_rec_create.cr_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_ctime, 
+      { "Sa Ctime", "lustre.mds_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_tail, 
+      { "Llh Tail", "lustre.llog_log_hdr.llh_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_size, 
+      { "O Size", "lustre.obdo.o_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_cap, 
+      { "Sa Cap", "lustre.mds_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_extent_start, 
+      { "Start", "lustre.ldlm_extent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_opcode, 
+      { "Ul Opcode", "lustre.mds_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+    { &hf_lustre_llog_size_change_rec_lsc_hdr, 
+      { "Lsc Hdr", "lustre.llog_size_change_rec.lsc_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_time, 
+      { "Ul Time", "lustre.mds_rec_unlink.ul_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_extent_start, 
+      { "L Extent Start", "lustre.lov_user_ost_data_join.l_extent_start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_tree_id, 
+      { "Lmm Tree Id", "lustre.lov_user_md_join.lmm_tree_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_lcr_tail, 
+      { "Lcr Tail", "lustre.llog_create_rec.lcr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_mode, 
+      { "Sa Mode", "lustre.mds_rec_setattr.sa_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_lgl_ogr, 
+      { "Lgl Ogr", "lustre.llog_logid.lgl_ogr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_lcr_hdr, 
+      { "Lcr Hdr", "lustre.llog_create_rec.lcr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_cookie_lgc_padding, 
+      { "Lgc Padding", "lustre.llog_cookie.lgc_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_cap, 
+      { "Cr Cap", "lustre.mds_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old_qd_type, 
+      { "Qd Type", "lustre.qunit_data_old.qd_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_flock_blocking_export, 
+      { "Blocking Export", "lustre.ldlm_flock.blocking_export", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_gid, 
+      { "Sa Gid", "lustre.mds_rec_setattr.sa_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_pattern, 
+      { "Ld Pattern", "lustre.lov_desc.ld_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_qd_id, 
+      { "Qd Id", "lustre.qunit_data.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_fsname, 
+      { "Mti Fsname", "lustre.mgs_target_info.mti_fsname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_object_gr, 
+      { "Lmm Object Gr", "lustre.lov_user_md_join.lmm_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_request_lock_flags, 
+      { "Lock Flags", "lustre.ldlm_request.lock_flags", FT_UINT32, BASE_HEX, NULL, 0 , "", HFILL }},
+    { &hf_lustre_obdo_o_mode, 
+      { "O Mode", "lustre.obdo.o_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_svname, 
+      { "Mti Svname", "lustre.mgs_target_info.mti_svname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_logid, 
+      { "Lgd Logid", "lustre.llogd_body.lgd_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_opcode, 
+      { "Cr Opcode", "lustre.mds_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_size, 
+      { "Llh Size", "lustre.llog_log_hdr.llh_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_padding, 
+      { "Padding", "lustre.llog_create_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_handle, 
+      { "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_atime, 
+      { "O Atime", "lustre.obdo.o_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit_qaq_id, 
+      { "Qaq Id", "lustre.quota_adjust_qunit.qaq_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_fid2, 
+      { "Rn Fid2", "lustre.mds_rec_rename.rn_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_replayfid, 
+      { "Cr Replayfid", "lustre.mds_rec_create.cr_replayfid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_lock_desc_l_policy_data, 
+      { "L Policy Data", "lustre.ldlm_lock_desc.l_policy_data", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_suppgid1, 
+      { "Lk Suppgid1", "lustre.mds_rec_link.lk_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_cmd, 
+      { "Qc Cmd", "lustre.obd_quotactl.qc_cmd", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_object_id, 
+      { "Lmm Object Id", "lustre.lov_user_md_join.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_padding_3, 
+      { "Rn Padding 3", "lustre.mds_rec_rename.rn_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_padding, 
+      { "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_objects, 
+      { "Lmm Objects", "lustre.lov_user_md_join.lmm_objects", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit_qaq_flags, 
+      { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_object_gr, 
+      { "L Object Gr", "lustre.lov_user_ost_data_join.l_object_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_lock_desc_l_granted_mode, 
+      { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
+    { &hf_lustre_obdo_o_gr, 
+      { "O Gr", "lustre.obdo.o_gr", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_padding_2, 
+      { "Ul Padding 2", "lustre.mds_rec_unlink.ul_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_gid, 
+      { "O Gid", "lustre.obdo.o_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_catid_lci_logid, 
+      { "Lci Logid", "lustre.llog_catid.lci_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_rec_tail_lrt_index, 
+      { "Lrt Index", "lustre.llog_rec_tail.lrt_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_mds, 
+      { "O Mds", "lustre.obdo.o_mds", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_extent_desc_med_lmm, 
+      { "Med Lmm", "lustre.mds_extent_desc.med_lmm", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_default_stripe_count, 
+      { "Ld Default Stripe Count", "lustre.lov_desc.ld_default_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_resource_desc_lr_padding, 
+      { "Lr Padding", "lustre.ldlm_resource_desc.lr_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_vers, 
+      { "Cm Vers", "lustre.cfg_marker.cm_vers", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_fid, 
+      { "Cr Fid", "lustre.mds_rec_create.cr_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_unlink_rec_lur_hdr, 
+      { "Lur Hdr", "lustre.llog_unlink_rec.lur_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_index, 
+      { "Lgd Index", "lustre.llogd_body.lgd_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_tgtname, 
+      { "Cm Tgtname", "lustre.cfg_marker.cm_tgtname", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_padding_1, 
+      { "Ul Padding 1", "lustre.mds_rec_unlink.ul_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_cap, 
+      { "Ul Cap", "lustre.mds_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_array_rec_lmr_med, 
+      { "Lmr Med", "lustre.llog_array_rec.lmr_med", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_lsr_ogen, 
+      { "Lsr Ogen", "lustre.llog_setattr_rec.lsr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_padding_3, 
+      { "Cr Padding 3", "lustre.mds_rec_create.cr_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_lid_hdr, 
+      { "Lid Hdr", "lustre.llog_logid_rec.lid_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_ost_idx, 
+      { "L Ost Idx", "lustre.lov_user_ost_data_join.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_easize, 
+      { "O Easize", "lustre.obdo.o_easize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_array_id, 
+      { "Lmm Array Id", "lustre.lov_user_md_join.lmm_array_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ost_body_oa, 
+      { "Oa", "lustre.ost_body.oa", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_padding3, 
+      { "Padding3", "lustre.llog_logid_rec.padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_flags, 
+      { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    {&hf_lustre_llog_hdr_llh_flag_zap_when_empty,
+      {"LLOG_F_ZAP_WHEN_EMPTY","lustre.lustre.llog_log_hdr.llh_flag_zap",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_ZAP_WHEN_EMPTY,"",HFILL}},
+    {&hf_lustre_llog_hdr_llh_flag_is_cat,
+      {"LLOG_F_IS_CAT","lustre.lustre.llog_log_hdr.llh_flag_cat",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_IS_CAT,"",HFILL}},
+    {&hf_lustre_llog_hdr_llh_flag_is_play,
+      {"LOG_F_IS_PLAIN","lustre.lustre.llog_log_hdr.llh_flag_play",FT_BOOLEAN,32,TFS(&flags_set_truth),LLOG_F_IS_PLAIN,"",HFILL}},
+
+    { &hf_lustre_llog_setattr_rec_lsr_oid, 
+      { "Lsr Oid", "lustre.llog_setattr_rec.lsr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_mode, 
+      { "Cr Mode", "lustre.mds_rec_create.cr_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_size_change_rec_padding, 
+      { "Padding", "lustre.llog_size_change_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_config_ver, 
+      { "Mti Config Ver", "lustre.mgs_target_info.mti_config_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_createtime, 
+      { "Cm Createtime", "lustre.cfg_marker.cm_createtime",FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old_qd_count, 
+      { "Qd Count", "lustre.qunit_data_old.qd_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_join_lmmj_array_id, 
+      { "Lmmj Array Id", "lustre.lov_mds_md_join.lmmj_array_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_uid, 
+      { "Sa Uid", "lustre.mds_rec_setattr.sa_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_catid_lci_padding1, 
+      { "Lci Padding1", "lustre.llog_catid.lci_padding1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_atime, 
+      { "Sa Atime", "lustre.mds_rec_setattr.sa_atime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_active_tgt_count, 
+      { "Ld Active Tgt Count", "lustre.lov_desc.ld_active_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_lcookie, 
+      { "O Lcookie", "lustre.obdo.o_lcookie", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_gen_rec_lgr_gen, 
+      { "Lgr Gen", "lustre.llog_gen_rec.lgr_gen", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_object_id, 
+      { "L Object Id", "lustre.lov_user_ost_data_join.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_id, 
+      { "O Id", "lustre.obdo.o_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_uuid, 
+      { "Mti Uuid", "lustre.mgs_target_info.mti_uuid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_padding_1, 
+      { "Lk Padding 1", "lustre.mds_rec_link.lk_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_rec_hdr_lrh_index, 
+      { "Lrh Index", "lustre.llog_rec_hdr.lrh_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_lsr_hdr, 
+      { "Lsr Hdr", "lustre.llog_setattr_rec.lsr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_stripe_index, 
+      { "Mti Stripe Index", "lustre.mgs_target_info.mti_stripe_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_gen_conn_cnt, 
+      { "Conn Cnt", "lustre.llog_gen.conn_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_6, 
+      { "O Padding 6", "lustre.obdo.o_padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_suppgid, 
+      { "Cr Suppgid", "lustre.mds_rec_create.cr_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_cookie_lgc_index, 
+      { "Lgc Index", "lustre.llog_cookie.lgc_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_uuid, 
+      { "Ld Uuid", "lustre.lov_desc.ld_uuid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_lcr_oid, 
+      { "Lcr Oid", "lustre.llog_create_rec.lcr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_desc, 
+      { "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_padding_0, 
+      { "Ld Padding 0", "lustre.lov_desc.ld_padding_0", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_unlink_rec_lur_ogen, 
+      { "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_orphan_rec_lor_hdr, 
+      { "Lor Hdr", "lustre.llog_orphan_rec.lor_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_fsuid, 
+      { "Rn Fsuid", "lustre.mds_rec_rename.rn_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_flags, 
+      { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_3, 
+      { "O Padding 3", "lustre.obdo.o_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_ost_gen, 
+      { "L Ost Gen", "lustre.lov_user_ost_data_join.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_fsuid, 
+      { "Cr Fsuid", "lustre.mds_rec_create.cr_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_fsgid, 
+      { "Ul Fsgid", "lustre.mds_rec_unlink.ul_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_request_lock_desc, 
+      { "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_pattern, 
+      { "Lmm Pattern", "lustre.lov_user_md_join.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_fsuid, 
+      { "Ul Fsuid", "lustre.mds_rec_unlink.ul_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_suppgid2, 
+      { "Lk Suppgid2", "lustre.mds_rec_link.lk_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_orphan_rec_padding, 
+      { "Padding", "lustre.llog_orphan_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_tree_gen, 
+      { "Lmm Tree Gen", "lustre.lov_user_md_join.lmm_tree_gen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_flags, 
+      { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_params, 
+      { "Mti Params", "lustre.mgs_target_info.mti_params", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_lgl_ogen, 
+      { "Lgl Ogen", "lustre.llog_logid.lgl_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_valid, 
+      { "Sa Valid", "lustre.mds_rec_setattr.sa_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_comment, 
+      { "Cm Comment", "lustre.cfg_marker.cm_comment", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_unlink_rec_lur_oid, 
+      { "Lur Oid", "lustre.llog_unlink_rec.lur_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_qd_count, 
+      { "Qd Count", "lustre.qunit_data.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_padding_1, 
+      { "Rn Padding 1", "lustre.mds_rec_rename.rn_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_mtime, 
+      { "O Mtime", "lustre.obdo.o_mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_join_lmmj_md, 
+      { "Lmmj Md", "lustre.lov_mds_md_join.lmmj_md", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_fsgid, 
+      { "Rn Fsgid", "lustre.mds_rec_rename.rn_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_cap, 
+      { "Rn Cap", "lustre.mds_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_blksize, 
+      { "O Blksize", "lustre.obdo.o_blksize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_suppgid, 
+      { "Ul Suppgid", "lustre.mds_rec_unlink.ul_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_res_id_name, 
+      { "Name", "lustre.ldlm_res_id.name", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_time, 
+      { "Lk Time", "lustre.mds_rec_link.lk_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_handle, 
+      { "Lock Handle", "lustre.ldlm_reply.lock_handle", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_padding_3, 
+      { "Ul Padding 3", "lustre.mds_rec_unlink.ul_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_saved_index, 
+      { "Lgd Saved Index", "lustre.llogd_body.lgd_saved_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_join_jr_headsize, 
+      { "Jr Headsize", "lustre.mds_rec_join.jr_headsize", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_padding_4, 
+      { "Rn Padding 4", "lustre.mds_rec_rename.rn_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old_qd_isblk, 
+      { "Qd Isblk", "lustre.qunit_data_old.qd_isblk", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_blocks, 
+      { "O Blocks", "lustre.obdo.o_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_padding_2, 
+      { "Ld Padding 2", "lustre.lov_desc.ld_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_fid2, 
+      { "Lk Fid2", "lustre.mds_rec_link.lk_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_lid_tail, 
+      { "Lid Tail", "lustre.llog_logid_rec.lid_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_grant, 
+      { "O Grant", "lustre.obdo.o_grant", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_2, 
+      { "O Padding 2", "lustre.obdo.o_padding_2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit_qaq_iunit_sz, 
+      { "Qaq Iunit Sz", "lustre.quota_adjust_qunit.qaq_iunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_unlink_rec_padding, 
+      { "Padding", "lustre.llog_unlink_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_lock_desc_l_req_mode, 
+      { "L Req Mode", "lustre.ldlm_lock_desc.l_req_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
+    { &hf_lustre_ldlm_extent_end, 
+      { "End", "lustre.ldlm_extent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_gen_rec_lgr_hdr, 
+      { "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_orphan_rec_lor_ogen, 
+      { "Lor Ogen", "lustre.llog_orphan_rec.lor_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_extent_count, 
+      { "Lmm Extent Count", "lustre.lov_user_md_join.lmm_extent_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_extent_desc_med_len, 
+      { "Med Len", "lustre.mds_extent_desc.med_len", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_llh_flags, 
+      { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_array_rec_lmr_hdr, 
+      { "Lmr Hdr", "lustre.llog_array_rec.lmr_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_cat_idx, 
+      { "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_bitmap_offset, 
+      { "Llh Bitmap Offset", "lustre.llog_log_hdr.llh_bitmap_offset", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_orphan_rec_lor_oid, 
+      { "Lor Oid", "lustre.llog_orphan_rec.lor_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_padding, 
+      { "Lock Padding", "lustre.ldlm_reply.lock_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_id, 
+      { "Qc Id", "lustre.obd_quotactl.qc_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_padding_4, 
+      { "Cr Padding 4", "lustre.mds_rec_create.cr_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_padding4, 
+      { "Padding4", "lustre.llog_logid_rec.padding4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_padding_2, 
+      { "Lk Padding 2", "lustre.mds_rec_link.lk_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_lsr_gid, 
+      { "Lsr Gid", "lustre.llog_setattr_rec.lsr_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_md_join_lmm_magic, 
+      { "Lmm Magic", "lustre.lov_user_md_join.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic), 0, "", HFILL }},
+    { &hf_lustre_obd_quotactl_qc_type, 
+      { "Qc Type", "lustre.obd_quotactl.qc_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_padding, 
+      { "Padding", "lustre.cfg_marker.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_nids, 
+      { "Mti Nids", "lustre.mgs_target_info.mti_nids", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_user_ost_data_join_l_extent_end, 
+      { "L Extent End", "lustre.lov_user_ost_data_join.l_extent_end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_stripe_idx, 
+      { "O Stripe Idx", "lustre.obdo.o_stripe_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_conn_body_lgdc_logid, 
+      { "Lgdc Logid", "lustre.llogd_conn_body.lgdc_logid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_fsuid, 
+      { "Sa Fsuid", "lustre.mds_rec_setattr.sa_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_flock_blocking_pid, 
+      { "Blocking Pid", "lustre.ldlm_flock.blocking_pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_tgt_count, 
+      { "Ld Tgt Count", "lustre.lov_desc.ld_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_cur_offset, 
+      { "Lgd Cur Offset", "lustre.llogd_body.lgd_cur_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_lcr_ogen, 
+      { "Lcr Ogen", "lustre.llog_create_rec.lcr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old2_qd_count, 
+      { "Qd Count", "lustre.qunit_data_old2.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_opnum, 
+      { "Operation", "lustre.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_old2_qd_flags, 
+      { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_flock_start, 
+      { "Start", "lustre.ldlm_flock.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_quota_adjust_qunit_qaq_bunit_sz, 
+      { "Qaq Bunit Sz", "lustre.quota_adjust_qunit.qaq_bunit_sz", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_array_rec_lmr_tail, 
+      { "Lmr Tail", "lustre.llog_array_rec.lmr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_flock_pid, 
+      { "Pid", "lustre.ldlm_flock.pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_default_stripe_size, 
+      { "Ld Default Stripe Size", "lustre.lov_desc.ld_default_stripe_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_opcode, 
+      { "Sa Opcode", "lustre.mds_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_tgtuuid, 
+      { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_fid1, 
+      { "Lk Fid1", "lustre.mds_rec_link.lk_fid1", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_step, 
+      { "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_send_param_mgs_param, 
+      { "Mgs Param", "lustre.mgs_send_param.mgs_param", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_create_rec_lcr_fid, 
+      { "Lcr Fid", "lustre.llog_create_rec.lcr_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_default_stripe_offset, 
+      { "Ld Default Stripe Offset", "lustre.lov_desc.ld_default_stripe_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_resource_desc_lr_name, 
+      { "Lr Name", "lustre.ldlm_resource_desc.lr_name", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_rec_tail_lrt_len, 
+      { "Lrt Len", "lustre.llog_rec_tail.lrt_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_mtime, 
+      { "Sa Mtime", "lustre.mds_rec_setattr.sa_mtime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_timestamp, 
+      { "Llh Timestamp", "lustre.llog_log_hdr.llh_timestamp", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_catid_lci_padding2, 
+      { "Lci Padding2", "lustre.llog_catid.lci_padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_conn_body_lgdc_ctxt_idx, 
+      { "Lgdc Ctxt Idx", "lustre.llogd_conn_body.lgdc_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_cfg_marker_cm_canceltime, 
+      { "Cm Canceltime", "lustre.cfg_marker.cm_canceltime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_lustre_ver, 
+      { "Mti Lustre Ver", "lustre.mgs_target_info.mti_lustre_ver", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_1, 
+      { "O Padding 1", "lustre.obdo.o_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_qunit_data_qd_flags, 
+      { "Qd Flags", "lustre.qunit_data.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_logid_rec_lid_id, 
+      { "Lid Id", "lustre.llog_logid_rec.lid_id", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_generation, 
+      { "O Generation", "lustre.obdo.o_generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_gen_mnt_cnt, 
+      { "Mnt Cnt", "lustre.llog_gen.mnt_cnt", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_size_change_rec_lsc_tail, 
+      { "Lsc Tail", "lustre.llog_size_change_rec.lsc_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_padding_5, 
+      { "O Padding 5", "lustre.obdo.o_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_lock_desc_l_resource, 
+      { "L Resource", "lustre.ldlm_lock_desc.l_resource", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_rename_rn_time, 
+      { "Rn Time", "lustre.mds_rec_rename.rn_time",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_create_cr_rdev, 
+      { "Cr Rdev", "lustre.mds_rec_create.cr_rdev", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obdo_o_fid, 
+      { "O Fid", "lustre.obdo.o_fid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_fid, 
+      { "Sa Fid", "lustre.mds_rec_setattr.sa_fid", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_request_lock_count, 
+      { "Lock Count", "lustre.ldlm_request.lock_count", FT_UINT32, BASE_HEX_DEC, NULL, 0, "", HFILL }}, 
+    { &hf_lustre_ldlm_flock_end, 
+      { "End", "lustre.ldlm_flock.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_link_lk_opcode, 
+      { "Lk Opcode", "lustre.mds_rec_link.lk_opcode", FT_UINT32, BASE_DEC,VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+    { &hf_lustre_mgs_target_info_mti_nid_count, 
+      { "Mti Nid Count", "lustre.mgs_target_info.mti_nid_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    /* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
+    { &hf_lustre_mgs_target_info, 
+      { "mgs target info", "lustre.mgs_target_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    { &hf_lustre_mgs_send_param, 
+      { "mgs send param", "lustre.mgs_send_param", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+    /* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
+    { &hf_lustre_ost_lvb, 
+      { "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+
+    { &hf_lustre_obdo_o_ctime, 
+      { "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_reply_lock_policy_res2, 
+      { "Lock Policy Res2", "lustre.ldlm_reply.lock_policy_res2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llogd_body_lgd_ctxt_idx, 
+      { "Lgd Ctxt Idx", "lustre.llogd_body.lgd_ctxt_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_unlink_ul_fid2, 
+      { "Ul Fid2", "lustre.mds_rec_unlink.ul_fid2", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_desc_ld_qos_maxage, 
+      { "Ld Qos Maxage", "lustre.lov_desc.ld_qos_maxage", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_ldlm_resource_desc_lr_type, 
+      { "Lr Type", "lustre.ldlm_resource_desc.lr_type", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_type_t_vals), 0, "", HFILL }},
+    { &hf_lustre_llog_setattr_rec_lsr_tail, 
+      { "Lsr Tail", "lustre.llog_setattr_rec.lsr_tail", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_cookie_lgc_subsys, 
+      { "Lgc Subsys", "lustre.llog_cookie.lgc_subsys", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_hdr, 
+      { "Llh Hdr", "lustre.llog_log_hdr.llh_hdr", FT_NONE, BASE_HEX, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_fsgid, 
+      { "Sa Fsgid", "lustre.mds_rec_setattr.sa_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_mds_rec_setattr_sa_padding, 
+      { "Sa Padding", "lustre.mds_rec_setattr.sa_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_lov_mds_md_join_lmmj_extent_count, 
+      { "Lmmj Extent Count", "lustre.lov_mds_md_join.lmmj_extent_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_llog_log_hdr_llh_reserved, 
+      { "Llh Reserved", "lustre.llog_log_hdr.llh_reserved", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+
+    { &hf_lustre_extra_padding,
+      { "extra padding", "lustre.msg_v2_extra_padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
+    { &hf_lustre_ldlm_reply,
+      { "ldlm reply", "lustre.ldlm_reply", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
+    { &hf_lustre_ldlm_request,
+      { "ldlm request", "lustre.ldlm_request", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
+
+    /* add for lustre_user.h */
+    { &hf_lustre_obd_dqinfo_dqi_valid, 
+      { "Dqi Valid", "lustre.obd_dqinfo.dqi_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_isoftlimit, 
+      { "Dqb Isoftlimit", "lustre.obd_dqblk.dqb_isoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_bhardlimit, 
+      { "Dqb Bhardlimit", "lustre.obd_dqblk.dqb_bhardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_curspace, 
+      { "Dqb Curspace", "lustre.obd_dqblk.dqb_curspace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_itime, 
+      { "Dqb Itime", "lustre.obd_dqblk.dqb_itime", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_valid, 
+      { "Dqb Valid", "lustre.obd_dqblk.dqb_valid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqinfo_dqi_igrace, 
+      { "Dqi Igrace", "lustre.obd_dqinfo.dqi_igrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqinfo_dqi_bgrace, 
+      { "Dqi Bgrace", "lustre.obd_dqinfo.dqi_bgrace", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_padding, 
+      { "Padding", "lustre.obd_dqblk.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_curinodes, 
+      { "Dqb Curinodes", "lustre.obd_dqblk.dqb_curinodes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_bsoftlimit, 
+      { "Dqb Bsoftlimit", "lustre.obd_dqblk.dqb_bsoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqinfo_dqi_flags, 
+      { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_btime, 
+      { "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME, BASE_DEC, NULL, 0, "", HFILL }},
+    { &hf_lustre_obd_dqblk_dqb_ihardlimit, 
+      { "Dqb Ihardlimit", "lustre.obd_dqblk.dqb_ihardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}
+
+  };
+
+
+  static gint *ett[] = {
+    &ett_lustre,
+    &ett_lustre_lustre_handle_cookie,
+    &ett_lustre_lustre_msg_v1,
+    &ett_lustre_lustre_handle_v1,
+    &ett_lustre_lustre_msg_v2,
+    &ett_lustre_ptlrpc_body,
+    &ett_lustre_lustre_handle_v2,
+    &ett_lustre_obd_connect_data,
+    &ett_lustre_lov_mds_md_v1,
+    &ett_lustre_lov_ost_data_v1,
+    &ett_lustre_obd_statfs,
+    &ett_lustre_obd_ioobj,
+    &ett_lustre_niobuf_remote,
+    &ett_lustre_ost_lvb,
+    &ett_lustre_ll_fid,
+    &ett_lustre_mds_status_req,
+    &ett_lustre_mds_body,
+    &ett_lustre_obd_quotactl,
+    &ett_lustre_obd_dqinfo,
+    &ett_lustre_obd_dqblk,
+    &ett_lustre_quota_adjust_qunit,
+    &ett_lustre_mds_rec_setattr,
+    &ett_lustre_mds_rec_create,
+    &ett_lustre_mds_rec_join,
+    &ett_lustre_mds_rec_link,
+    &ett_lustre_mds_rec_unlink,
+    &ett_lustre_mds_rec_rename,
+    &ett_lustre_lov_desc,
+    &ett_lustre_obd_uuid,
+    &ett_lustre_ldlm_res_id,
+    &ett_lustre_ldlm_extent,
+    &ett_lustre_ldlm_inodebits,
+    &ett_lustre_ldlm_flock,
+    &ett_lustre_ldlm_intent_opc,
+    &ett_lustre_ldlm_resource_desc,
+    &ett_lustre_ldlm_res_id,
+    &ett_lustre_ldlm_lock_desc,
+    &ett_lustre_ldlm_resource_desc,
+    &ett_lustre_ldlm_request,
+    &ett_lustre_ldlm_lock_desc,
+    &ett_lustre_lustre_handle,
+    &ett_lustre_ldlm_reply,
+    &ett_lustre_ldlm_lock_desc,
+    &ett_lustre_lustre_handle,
+    &ett_lustre_mgs_send_param,
+    &ett_lustre_mgs_target_info,
+    &ett_lustre_cfg_marker,
+    &ett_lustre_llog_logid,
+    &ett_lustre_llog_catid,
+    &ett_lustre_llog_logid,
+    &ett_lustre_lov_mds_md_join,
+    &ett_lustre_lov_mds_md,
+    &ett_lustre_llog_logid,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_logid_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_logid,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_mds_extent_desc,
+    &ett_lustre_lov_mds_md,
+    &ett_lustre_llog_array_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_mds_extent_desc,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_create_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_ll_fid,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_orphan_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_unlink_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_setattr_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_size_change_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_ll_fid,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_gen,
+    &ett_lustre_llog_gen_rec,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_llog_gen,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_log_hdr,
+    &ett_lustre_llog_rec_hdr,
+    &ett_lustre_obd_uuid,
+    &ett_lustre_llog_rec_tail,
+    &ett_lustre_llog_cookie,
+    &ett_lustre_llog_logid,
+    &ett_lustre_llogd_body,
+    &ett_lustre_llog_logid,
+    &ett_lustre_llogd_conn_body,
+    &ett_lustre_llog_gen,
+    &ett_lustre_llog_logid,
+    &ett_lustre_lov_user_ost_data_join,
+    &ett_lustre_lov_user_md_join,
+    &ett_lustre_llog_logid,
+    &ett_lustre_lov_user_ost_data_join,
+    &ett_lustre_obdo,
+    &ett_lustre_lustre_handle,
+    &ett_lustre_llog_cookie,
+    &ett_lustre_ost_body,
+    &ett_lustre_obdo,
+    &ett_lustre_qunit_data,
+    &ett_lustre_qunit_data_old2,
+    &ett_lustre_qunit_data_old,
+    &ett_lustre_ldlm_lock_flags,
+    &ett_lustre_llog_log_llh_flags,
+
+  };
+
+  proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre");
+  proto_register_field_array(proto_lustre, hf, array_length (hf));
+  proto_register_subtree_array(ett, array_length(ett));
+}
+
+
+void proto_reg_handoff_lustre(void)
+{
+  dissector_handle_t lustre_handle;
+  lustre_handle=create_dissector_handle(dissect_lustre, proto_lustre);
+  /* we use Lustre only if we get ptl_index = One of this code (we have removed the bulk code) */
+  /* in LNET we test if the message is a put or not before adding an lnet.ptl_index value */
+  dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL          , lustre_handle);
+  dissector_add("lnet.ptl_index", CONNMGR_REQUEST_PORTAL    , lustre_handle);
+  dissector_add("lnet.ptl_index", CONNMGR_REPLY_PORTAL      , lustre_handle);
+  dissector_add("lnet.ptl_index", OSC_REPLY_PORTAL          , lustre_handle); 
+  dissector_add("lnet.ptl_index", OST_IO_PORTAL             , lustre_handle); 
+  dissector_add("lnet.ptl_index", OST_CREATE_PORTAL         , lustre_handle); 
+  dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL          , lustre_handle); 
+  dissector_add("lnet.ptl_index", MDS_REQUEST_PORTAL        , lustre_handle); 
+  dissector_add("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL    , lustre_handle); 
+  dissector_add("lnet.ptl_index", LDLM_CB_REPLY_PORTAL      , lustre_handle); 
+  dissector_add("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle); 
+  dissector_add("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL  , lustre_handle); 
+  dissector_add("lnet.ptl_index", MDS_SETATTR_PORTAL        , lustre_handle); 
+  dissector_add("lnet.ptl_index", MDS_READPAGE_PORTAL       , lustre_handle); 
+  dissector_add("lnet.ptl_index", MGC_REPLY_PORTAL          , lustre_handle); 
+  dissector_add("lnet.ptl_index", MGS_REQUEST_PORTAL        , lustre_handle); 
+  dissector_add("lnet.ptl_index", MGS_REPLY_PORTAL          , lustre_handle); 
+  dissector_add("lnet.ptl_index", OST_REQUEST_PORTAL        , lustre_handle); 
+}