--- /dev/null
+/* 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);
+}