/* packet-lustre.c * Lustre 1.6 dissection (http://www.lustre.org/) * Author: Laurent George * based on packet-agentx.c and packet-afs.c * partially generated by Pidl * 20080903 * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1999 Gerald Combs * * C-Syle: 2 space indents * * 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. * * Copyright (c) 2011, 2017, Intel Corporation. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include #include #include #include "wireshark-compat.h" #include #include "lustre_dlm_flags.h" const true_false_string lnet_flags_set_truth = { "Set", "Unset" }; /* --------------------------------------------------------------------------------------- */ /* 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) /* LUSTRE_BUFFER_LEN(buffnum) */ #define LUSTRE_BUFFER_LEN(_n) (LUSTRE_BUFCOUNT <= (_n) ? 0 \ : tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+\ sizeof(guint32)*(_n))) #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_V3 0x0BD30BD0 /* defined in lustre/include/lustre/lustre_user.h */ #define LOV_MAXPOOLNAME 15 /* defined in lustre/include/lustre/lustre_idl.h */ typedef enum { CONNMGR_REQUEST_PORTAL = 1, CONNMGR_REPLY_PORTAL = 2, OSC_REQUEST_PORTAL = 3, OSC_REPLY_PORTAL = 4, OSC_BULK_PORTAL = 5, OST_IO_PORTAL = 6, OST_CREATE_PORTAL = 7, OST_BULK_PORTAL = 8, MDC_REQUEST_PORTAL = 9, MDC_REPLY_PORTAL = 10, MDC_BULK_PORTAL = 11, MDS_REQUEST_PORTAL = 12, MDS_REPLY_PORTAL = 13, MDS_BULK_PORTAL = 14, LDLM_CB_REQUEST_PORTAL = 15, LDLM_CB_REPLY_PORTAL = 16, LDLM_CANCEL_REQUEST_PORTAL = 17, LDLM_CANCEL_REPLY_PORTAL = 18, PTLBD_REQUEST_PORTAL = 19, PTLBD_REPLY_PORTAL = 20, PTLBD_BULK_PORTAL = 21, MDS_SETATTR_PORTAL = 22, MDS_READPAGE_PORTAL = 23, MDS_MDS_PORTAL = 24, MGC_REPLY_PORTAL = 25, MGS_REQUEST_PORTAL = 26, MGS_REPLY_PORTAL = 27, OST_REQUEST_PORTAL = 28, FLD_REQUEST_PORTAL = 29, SEQ_METADATA_PORTAL = 30, SEQ_DATA_PORTAL = 31, SEQ_CONTROLLER_PORTAL = 32, MGS_BULK_PORTAL = 33 } portal_index_t; static const value_string portal_indices[] = { { CONNMGR_REQUEST_PORTAL, "CONNMGR_REQUEST_PORTAL"}, { CONNMGR_REPLY_PORTAL , "CONNMGR_REPLY_PORTAL"}, { OSC_REQUEST_PORTAL , "OSC_REQUEST_PORTAL(obsolete)"}, { OSC_REPLY_PORTAL , "OSC_REPLY_PORTAL"}, { OSC_BULK_PORTAL , "OSC_BULK_PORTAL(obsolete)"}, { OST_IO_PORTAL , "OST_IO_PORTAL"}, { OST_CREATE_PORTAL , "OST_CREATE_PORTAL"}, { OST_BULK_PORTAL , "OST_BULK_PORTAL"}, { MDC_REQUEST_PORTAL , "MDC_REQUEST_PORTAL(obsolete)"}, { MDC_REPLY_PORTAL , "MDC_REPLY_PORTAL"}, { MDC_BULK_PORTAL , "MDC_BULK_PORTAL(obsolete)"}, { MDS_REQUEST_PORTAL , "MDS_REQUEST_PORTAL"}, { MDS_REPLY_PORTAL , "MDS_REPLY_PORTAL(obsolete)"}, { MDS_BULK_PORTAL , "MDS_BULK_PORTAL"}, { LDLM_CB_REQUEST_PORTAL , "LDLM_CB_REQUEST_PORTAL"}, { LDLM_CB_REPLY_PORTAL , "LDLM_CB_REPLY_PORTAL"}, { LDLM_CANCEL_REQUEST_PORTAL , "LDLM_CANCEL_REQUEST_PORTAL"}, { LDLM_CANCEL_REPLY_PORTAL , "LDLM_CANCEL_REPLY_PORTAL"}, { PTLBD_REQUEST_PORTAL , "PTLBD_REQUEST_PORTAL(obsolete)"}, { PTLBD_REPLY_PORTAL , "PTLBD_REPLY_PORTAL(obsolete)"}, { PTLBD_BULK_PORTAL , "PTLBD_BULK_PORTAL(obsolete)"}, { MDS_SETATTR_PORTAL , "MDS_SETATTR_PORTAL"}, { MDS_READPAGE_PORTAL , "MDS_READPAGE_PORTAL"}, { MDS_MDS_PORTAL, "MDS_MDS_PORTAL"}, { MGC_REPLY_PORTAL , "MGC_REPLY_PORTAL"}, { MGS_REQUEST_PORTAL , "MGS_REQUEST_PORTAL"}, { MGS_REPLY_PORTAL , "MGS_REPLY_PORTAL"}, { OST_REQUEST_PORTAL , "OST_REQUEST_PORTAL"}, { FLD_REQUEST_PORTAL , "FLD_REQUEST_PORTAL"}, { SEQ_METADATA_PORTAL, "SEQ_METADATA_PORTAL"}, { SEQ_DATA_PORTAL, "SEQ_DATA_PORTAL"}, { SEQ_CONTROLLER_PORTAL, "SEQ_CONTROLLER_PORTAL"}, { MGS_BULK_PORTAL, "MGS_BULK_PORTAL"} }; 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_LADVISE = 21, 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 /* must be coherent with same declaration * in lustre/include/lustre/lustre_idl.h */ 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_GET_ROOT = 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_WRITEPAGE = 51, MDS_IS_SUBDIR = 52, MDS_GET_INFO = 53, MDS_HSM_STATE_GET = 54, MDS_HSM_STATE_SET = 55, MDS_HSM_ACTION = 56, MDS_HSM_PROGRESS = 57, MDS_HSM_REQUEST = 58, MDS_HSM_CT_REGISTER = 59, MDS_HSM_CT_UNREGISTER = 60, MDS_SWAP_LAYOUTS = 61, MDS_LAST_OPC } mds_cmd_t; #define MDS_FIRST_OPC MDS_GETATTR enum { LAYOUT_INTENT_ACCESS = 0, LAYOUT_INTENT_READ = 1, LAYOUT_INTENT_WRITE = 2, LAYOUT_INTENT_GLIMPSE = 3, LAYOUT_INTENT_TRUNC = 4, LAYOUT_INTENT_RELEASE = 5, LAYOUT_INTENT_RESTORE = 6 }; static const value_string lustre_layout_intent_opc_values[] = { { LAYOUT_INTENT_ACCESS, "ACCESS"}, { LAYOUT_INTENT_READ, "READ"}, { LAYOUT_INTENT_WRITE, "WRITE"}, { LAYOUT_INTENT_GLIMPSE, "GLIMPSE"}, { LAYOUT_INTENT_TRUNC, "TRUNC"}, { LAYOUT_INTENT_RELEASE, "RELEASE"}, { LAYOUT_INTENT_RESTORE, "RESTORE"}, { 0, NULL }, }; /* From lustre/include/obd.h */ #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_TRUNC 0x0040 #define IT_GETXATTR 0x0080 #define IT_EXEC 0x0100 #define IT_PIN 0x0200 #define IT_LAYOUT 0x0400 #define IT_QUOTA_DQACQ 0x0800 #define IT_QUOTA_CONN 0x1000 #define IT_SETXATTR 0x2000 /* lustre/include/uapi/linux/lustre/lustre_idl.h */ enum mds_reint_op { REINT_SETATTR = 1, REINT_CREATE = 2, REINT_LINK = 3, REINT_UNLINK = 4, REINT_RENAME = 5, REINT_OPEN = 6, REINT_SETXATTR = 7, REINT_RMENTRY = 8, REINT_MIGRATE = 9, REINT_MAX }; enum ldlm_cmd { LDLM_ENQUEUE = 101, LDLM_CONVERT = 102, LDLM_CANCEL = 103, LDLM_BL_CALLBACK = 104, LDLM_CP_CALLBACK = 105, LDLM_GL_CALLBACK = 106, LDLM_SET_INFO = 107, LDLM_LAST_OPC }; #define LDLM_FIRST_OPC LDLM_ENQUEUE enum seq_rpc_opc { SEQ_QUERY = 700, SEQ_LAST_OPC, SEQ_FIRST_OPC = SEQ_QUERY }; enum fld_rpc_opc { FLD_QUERY = 900, FLD_LAST_OPC, FLD_FIRST_OPC = FLD_QUERY }; #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_CONFIG_READ, 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, /* obsolete */ 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 /* Connect flags from lustre_idl.h */ #define OBD_CONNECT_RDONLY 0x1ULL /*client has read-only access*/ #define OBD_CONNECT_INDEX 0x2ULL /*connect specific LOV idx */ #define OBD_CONNECT_MDS 0x4ULL /*connect from MDT to OST */ #define OBD_CONNECT_GRANT 0x8ULL /*OSC gets grant at connect */ #define OBD_CONNECT_SRVLOCK 0x10ULL /*server takes locks for cli */ #define OBD_CONNECT_VERSION 0x20ULL /*Lustre versions in ocd */ #define OBD_CONNECT_REQPORTAL 0x40ULL /*Separate non-IO req portal */ #define OBD_CONNECT_ACL 0x80ULL /*access control lists */ #define OBD_CONNECT_XATTR 0x100ULL /*client use extended attr */ #define OBD_CONNECT_CROW 0x200ULL /*MDS+OST create obj on write*/ #define OBD_CONNECT_TRUNCLOCK 0x400ULL /*locks on server for punch */ #define OBD_CONNECT_TRANSNO 0x800ULL /*replay sends init transno */ #define OBD_CONNECT_IBITS 0x1000ULL /*support for inodebits locks*/ #define OBD_CONNECT_JOIN 0x2000ULL /*files can be concatenated. *We do not support JOIN FILE *anymore, reserve this flags *just for preventing such bit *to be reused.*/ #define OBD_CONNECT_ATTRFID 0x4000ULL /*Server can GetAttr By Fid*/ #define OBD_CONNECT_NODEVOH 0x8000ULL /*No open hndl on specl nodes*/ #define OBD_CONNECT_RMT_CLIENT 0x10000ULL /*Remote client */ #define OBD_CONNECT_RMT_CLIENT_FORCE 0x20000ULL /*Remote client by force */ #define OBD_CONNECT_BRW_SIZE 0x40000ULL /*Max bytes per rpc */ #define OBD_CONNECT_QUOTA64 0x80000ULL /*Not used since 2.4 */ #define OBD_CONNECT_MDS_CAPA 0x100000ULL /*MDS capability */ #define OBD_CONNECT_OSS_CAPA 0x200000ULL /*OSS capability */ #define OBD_CONNECT_CANCELSET 0x400000ULL /*Early batched cancels. */ #define OBD_CONNECT_SOM 0x800000ULL /*Size on MDS */ #define OBD_CONNECT_AT 0x1000000ULL /*client uses AT */ #define OBD_CONNECT_LRU_RESIZE 0x2000000ULL /*LRU resize feature. */ #define OBD_CONNECT_MDS_MDS 0x4000000ULL /*MDS-MDS connection */ #define OBD_CONNECT_REAL 0x8000000ULL /*real connection */ #define OBD_CONNECT_CHANGE_QS 0x10000000ULL /*Not used since 2.4 */ #define OBD_CONNECT_CKSUM 0x20000000ULL /*support several cksum algos*/ #define OBD_CONNECT_FID 0x40000000ULL /*FID is supported by server */ #define OBD_CONNECT_VBR 0x80000000ULL /*version based recovery */ /* 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_mds_md_v3 = -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_mdt_body = -1; static gint ett_lustre_mdt_rec_setattr = -1; static gint ett_lustre_mdt_rec_create = -1; static gint ett_lustre_mdt_rec_link = -1; static gint ett_lustre_mdt_rec_unlink = -1; static gint ett_lustre_mdt_rec_rename = -1; static gint ett_lustre_mdt_rec_setxattr = -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_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_mgs_config_body = -1; static gint ett_lustre_mgs_config_res = -1; static gint ett_lustre_cfg_marker = -1; static gint ett_lustre_llog_catid = -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_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_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 ; static gint ett_lustre_seq_range = -1; static gint ett_lustre_fld_range = -1; static gint ett_lustre_mdt_ioepoch = -1; static gint ett_lustre_capa = -1; static gint ett_lustre_close_data = -1; static gint ett_lustre_acl = -1; static gint ett_lustre_ladvise = -1; static gint ett_lustre_hsm_request = -1; static gint ett_lustre_hsm_user_item = -1; static gint ett_lustre_hsm_extent = -1; static gint ett_lustre_hsm_progress = -1; static gint ett_lustre_hsm_user_state = -1; static gint ett_lustre_quota_body = -1; static gint ett_lustre_lquota_id = -1; static gint ett_lustre_layout_intent = -1; static gint ett_lustre_xattrs = -1; static gint ett_lustre_ost_id = -1; /* -----------------------------------------------*/ /* Header field declarations */ static int hf_lustre_ptlrpc_body_pb = -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_obd_uuid = -1 ; static int hf_lustre_obd_connect_data = -1 ; static int hf_lustre_ldlm_intent = -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_mds_xattr_eadata_str = -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_mgs_config_body = -1; static int hf_lustre_mgs_config_body_name = -1; static int hf_lustre_mgs_config_body_offset = -1; static int hf_lustre_mgs_config_body_type = -1; static int hf_lustre_mgs_config_body_reserved = -1; static int hf_lustre_mgs_config_body_bits = -1; static int hf_lustre_mgs_config_body_units = -1; static int hf_lustre_mgs_config_res = -1; static int hf_lustre_mgs_config_res_offset = -1; static int hf_lustre_mgs_config_res_size = -1; static int hf_lustre_ost_lvb = -1 ; #define hf_lustre_ldlm_ast_discard_data hf_lustre_ldlm_fl_ast_discard_data static int hf_lustre_mdt_body = -1 ; static int hf_lustre_mdt_body_fid1 = -1; static int hf_lustre_mdt_body_fid2 = -1; static int hf_lustre_mdt_body_handle = -1; static int hf_lustre_mdt_body_valid = -1; static int hf_lustre_mdt_body_size = -1; static int hf_lustre_mdt_body_mtime = -1; static int hf_lustre_mdt_body_atime = -1; static int hf_lustre_mdt_body_ctime = -1; static int hf_lustre_mdt_body_blocks = -1; static int hf_lustre_mdt_body_ioepoch = -1; static int hf_lustre_mdt_body_ino = -1; static int hf_lustre_mdt_body_fsuid = -1; static int hf_lustre_mdt_body_fsgid = -1; static int hf_lustre_mdt_body_capability = -1; static int hf_lustre_mdt_body_mode = -1; static int hf_lustre_mdt_body_uid = -1; static int hf_lustre_mdt_body_gid = -1; static int hf_lustre_mdt_body_flags = -1; static int hf_lustre_mdt_body_rdev = -1; static int hf_lustre_mdt_body_nlink = -1; static int hf_lustre_mdt_body_generation = -1; static int hf_lustre_mdt_body_suppgid = -1; static int hf_lustre_mdt_body_eadatasize = -1; static int hf_lustre_mdt_body_aclsize = -1; static int hf_lustre_mdt_body_max_mdsize = -1; static int hf_lustre_mdt_body_max_cookiesize = -1; static int hf_lustre_mdt_body_uid_h = -1; static int hf_lustre_mdt_body_gid_h = -1; static int hf_lustre_mdt_body_padding_5 = -1; static int hf_lustre_mdt_body_padding_6 = -1; static int hf_lustre_mdt_body_padding_7 = -1; static int hf_lustre_mdt_body_padding_8 = -1; static int hf_lustre_mdt_body_padding_9 = -1; static int hf_lustre_mdt_body_padding_10 = -1; static int hf_lustre_mdt_rec_setattr = -1 ; static int hf_lustre_mdt_rec_setattr_sa_opcode = -1; static int hf_lustre_mdt_rec_setattr_sa_cap = -1; static int hf_lustre_mdt_rec_setattr_sa_fsuid = -1; static int hf_lustre_mdt_rec_setattr_sa_fsuid_h = -1; static int hf_lustre_mdt_rec_setattr_sa_fsgid = -1; static int hf_lustre_mdt_rec_setattr_sa_fsgid_h = -1; static int hf_lustre_mdt_rec_setattr_sa_suppgid = -1; static int hf_lustre_mdt_rec_setattr_sa_suppgid_h = -1; static int hf_lustre_mdt_rec_setattr_sa_padding_1 = -1; static int hf_lustre_mdt_rec_setattr_sa_padding_1_h = -1; static int hf_lustre_mdt_rec_setattr_sa_fid = -1; static int hf_lustre_mdt_rec_setattr_sa_valid = -1; static int hf_lustre_mdt_rec_setattr_sa_uid = -1; static int hf_lustre_mdt_rec_setattr_sa_gid = -1; static int hf_lustre_mdt_rec_setattr_sa_size = -1; static int hf_lustre_mdt_rec_setattr_sa_blocks = -1; static int hf_lustre_mdt_rec_setattr_sa_mtime = -1; static int hf_lustre_mdt_rec_setattr_sa_atime = -1; static int hf_lustre_mdt_rec_setattr_sa_ctime = -1; static int hf_lustre_mdt_rec_setattr_sa_attr_flags = -1; static int hf_lustre_mdt_rec_setattr_sa_mode = -1; static int hf_lustre_mdt_rec_setattr_sa_padding_2 = -1; static int hf_lustre_mdt_rec_setattr_sa_projid = -1; static int hf_lustre_mdt_rec_setattr_sa_padding_4 = -1; static int hf_lustre_mdt_rec_setattr_sa_padding_5 = -1; static int hf_lustre_mdt_rec_create = -1 ; static int hf_lustre_mdt_rec_create_cr_opcode = -1; static int hf_lustre_mdt_rec_create_cr_cap = -1; static int hf_lustre_mdt_rec_create_cr_fsuid = -1; static int hf_lustre_mdt_rec_create_cr_fsuid_h = -1; static int hf_lustre_mdt_rec_create_cr_fsgid = -1; static int hf_lustre_mdt_rec_create_cr_fsgid_h = -1; static int hf_lustre_mdt_rec_create_cr_suppgid1 = -1; static int hf_lustre_mdt_rec_create_cr_suppgid1_h = -1; static int hf_lustre_mdt_rec_create_cr_suppgid2 = -1; static int hf_lustre_mdt_rec_create_cr_suppgid2_h = -1; static int hf_lustre_mdt_rec_create_cr_fid1 = -1; static int hf_lustre_mdt_rec_create_cr_fid2 = -1; static int hf_lustre_mdt_rec_create_cr_old_handle = -1; static int hf_lustre_mdt_rec_create_cr_time = -1; static int hf_lustre_mdt_rec_create_cr_rdev = -1; static int hf_lustre_mdt_rec_create_cr_ioepoch = -1; static int hf_lustre_mdt_rec_create_cr_padding_1 = -1; static int hf_lustre_mdt_rec_create_cr_mode = -1; static int hf_lustre_mdt_rec_create_cr_bias = -1; static int hf_lustre_mdt_rec_create_cr_flags_l = -1; static int hf_lustre_mdt_rec_create_cr_flags_h = -1; static int hf_lustre_mdt_rec_create_cr_umask = -1; static int hf_lustre_mdt_rec_create_cr_padding_4 = -1; static int hf_lustre_mdt_rec_link = -1 ; static int hf_lustre_mdt_rec_link_lk_opcode = -1; static int hf_lustre_mdt_rec_link_lk_cap = -1; static int hf_lustre_mdt_rec_link_lk_fsuid = -1; static int hf_lustre_mdt_rec_link_lk_fsuid_h = -1; static int hf_lustre_mdt_rec_link_lk_fsgid = -1; static int hf_lustre_mdt_rec_link_lk_fsgid_h = -1; static int hf_lustre_mdt_rec_link_lk_suppgid1 = -1; static int hf_lustre_mdt_rec_link_lk_suppgid1_h = -1; static int hf_lustre_mdt_rec_link_lk_suppgid2 = -1; static int hf_lustre_mdt_rec_link_lk_suppgid2_h = -1; static int hf_lustre_mdt_rec_link_lk_fid1 = -1; static int hf_lustre_mdt_rec_link_lk_fid2 = -1; static int hf_lustre_mdt_rec_link_lk_time = -1; static int hf_lustre_mdt_rec_link_lk_padding_1 = -1; static int hf_lustre_mdt_rec_link_lk_padding_2 = -1; static int hf_lustre_mdt_rec_link_lk_padding_3 = -1; static int hf_lustre_mdt_rec_link_lk_padding_4 = -1; static int hf_lustre_mdt_rec_link_lk_bias = -1; static int hf_lustre_mdt_rec_link_lk_padding_5 = -1; static int hf_lustre_mdt_rec_link_lk_padding_6 = -1; static int hf_lustre_mdt_rec_link_lk_padding_7 = -1; static int hf_lustre_mdt_rec_link_lk_padding_8 = -1; static int hf_lustre_mdt_rec_link_lk_padding_9 = -1; static int hf_lustre_mdt_rec_unlink = -1 ; static int hf_lustre_mdt_rec_unlink_ul_opcode = -1; static int hf_lustre_mdt_rec_unlink_ul_cap = -1; static int hf_lustre_mdt_rec_unlink_ul_fsuid = -1; static int hf_lustre_mdt_rec_unlink_ul_fsuid_h = -1; static int hf_lustre_mdt_rec_unlink_ul_fsgid = -1; static int hf_lustre_mdt_rec_unlink_ul_fsgid_h = -1; static int hf_lustre_mdt_rec_unlink_ul_suppgid1 = -1; static int hf_lustre_mdt_rec_unlink_ul_suppgid1_h = -1; static int hf_lustre_mdt_rec_unlink_ul_suppgid2 = -1; static int hf_lustre_mdt_rec_unlink_ul_suppgid2_h = -1; static int hf_lustre_mdt_rec_unlink_ul_fid1 = -1; static int hf_lustre_mdt_rec_unlink_ul_fid2 = -1; static int hf_lustre_mdt_rec_unlink_ul_time = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_2 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_3 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_4 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_5 = -1; static int hf_lustre_mdt_rec_unlink_ul_bias = -1; static int hf_lustre_mdt_rec_unlink_ul_mode = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_6 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_7 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_8 = -1; static int hf_lustre_mdt_rec_unlink_ul_padding_9 = -1; static int hf_lustre_mdt_rec_rename = -1 ; static int hf_lustre_mdt_rec_rename_rn_opcode = -1; static int hf_lustre_mdt_rec_rename_rn_cap = -1; static int hf_lustre_mdt_rec_rename_rn_fsuid = -1; static int hf_lustre_mdt_rec_rename_rn_fsuid_h = -1; static int hf_lustre_mdt_rec_rename_rn_fsgid = -1; static int hf_lustre_mdt_rec_rename_rn_fsgid_h = -1; static int hf_lustre_mdt_rec_rename_rn_suppgid1 = -1; static int hf_lustre_mdt_rec_rename_rn_suppgid1_h = -1; static int hf_lustre_mdt_rec_rename_rn_suppgid2 = -1; static int hf_lustre_mdt_rec_rename_rn_suppgid2_h = -1; static int hf_lustre_mdt_rec_rename_rn_fid1 = -1; static int hf_lustre_mdt_rec_rename_rn_fid2 = -1; static int hf_lustre_mdt_rec_rename_rn_time = -1; static int hf_lustre_mdt_rec_rename_rn_padding_1 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_2 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_3 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_4 = -1; static int hf_lustre_mdt_rec_rename_rn_bias = -1; static int hf_lustre_mdt_rec_rename_rn_mode = -1; static int hf_lustre_mdt_rec_rename_rn_padding_5 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_6 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_7 = -1; static int hf_lustre_mdt_rec_rename_rn_padding_8 = -1; static int hf_lustre_mdt_rec_setxattr = -1 ; static int hf_lustre_mdt_rec_setxattr_sx_opcode = -1; static int hf_lustre_mdt_rec_setxattr_sx_cap = -1; static int hf_lustre_mdt_rec_setxattr_sx_fsuid = -1; static int hf_lustre_mdt_rec_setxattr_sx_fsuid_h = -1; static int hf_lustre_mdt_rec_setxattr_sx_fsgid = -1; static int hf_lustre_mdt_rec_setxattr_sx_fsgid_h = -1; static int hf_lustre_mdt_rec_setxattr_sx_suppgid1 = -1; static int hf_lustre_mdt_rec_setxattr_sx_suppgid1_h = -1; static int hf_lustre_mdt_rec_setxattr_sx_suppgid2 = -1; static int hf_lustre_mdt_rec_setxattr_sx_suppgid2_h = -1; static int hf_lustre_mdt_rec_setxattr_sx_fid = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_1 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_2 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_3 = -1; static int hf_lustre_mdt_rec_setxattr_sx_valid = -1; static int hf_lustre_mdt_rec_setxattr_sx_time = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_5 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_6 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_7 = -1; static int hf_lustre_mdt_rec_setxattr_sx_size = -1; static int hf_lustre_mdt_rec_setxattr_sx_flags = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_8 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_9 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_10 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -1; static int hf_lustre_mdt_getinfo_key = -1; static int hf_lustre_mdt_getinfo_vallen = -1; static int hf_lustre_mdt_getinfo_data = -1; static int hf_lustre_close_data = -1; static int hf_lustre_close_fid = -1; static int hf_lustre_close_data_ver = -1; static int hf_lustre_close_reserved = -1; static int hf_lustre_seq_opc = -1; static int hf_lustre_seq_range = -1; static int hf_lustre_seq_range_start = -1; static int hf_lustre_seq_range_end = -1; static int hf_lustre_seq_range_index = -1; static int hf_lustre_seq_range_flags = -1; static int hf_lustre_fld_opc = -1; static int hf_lustre_fld_range = -1; static int hf_lustre_fld_range_start = -1; static int hf_lustre_fld_range_end = -1; static int hf_lustre_fld_range_index = -1; static int hf_lustre_fld_range_flags = -1; static int hf_lustre_mdt_ioepoch = -1; static int hf_lustre_mdt_ioepoch_handle = -1; static int hf_lustre_mdt_ioepoch_ioepoch = -1; static int hf_lustre_mdt_ioepoch_flags = -1; static int hf_lustre_mdt_ioepoch_padding = -1; static int hf_lustre_capa = -1; static int hf_lustre_capa_fid = -1; static int hf_lustre_capa_opc = -1; static int hf_lustre_capa_uid = -1; static int hf_lustre_capa_gid = -1; static int hf_lustre_capa_flags = -1; static int hf_lustre_capa_keyid = -1; static int hf_lustre_capa_timeout = -1; static int hf_lustre_capa_expiry = -1; static int hf_lustre_capa_hmac = -1; static int hf_lustre_acl = -1; static int hf_lustre_ost_lvb_lvb_size = -1; static int hf_lustre_ost_lvb_lvb_mtime = -1; static int hf_lustre_ost_lvb_lvb_atime = -1; static int hf_lustre_ost_lvb_lvb_ctime = -1; static int hf_lustre_ost_lvb_lvb_blocks = -1; static int hf_lustre_ost_lvb_lvb_mtime_ns = -1; static int hf_lustre_ost_lvb_lvb_atime_ns = -1; static int hf_lustre_ost_lvb_lvb_ctime_ns = -1; static int hf_lustre_ost_lvb_lvb_padding = -1; static int hf_lustre_xattrs = -1; static int hf_lustre_xattrs_name = -1; static int hf_lustre_xattrs_data = -1; static int hf_lustre_xattrs_size = -1; static int hf_lustre_lustre_handle_cookie = -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_ptlrpc_body_pb_pre_version = -1; static int hf_lustre_ptlrpc_body_pb_padding = -1; static int hf_lustre_ptlrpc_body_pb_jobid = -1; static int hf_lustre_lustre_msg_v1_lm_handle = -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_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_ptlrpc_body_pb_op_flags = -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_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_seq = -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_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_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_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_obd_connect_data_ocd_max_easize = -1; static int hf_lustre_obd_connect_data_ocd_instance = -1; static int hf_lustre_obd_connect_data_ocd_maxbytes = -1; static int hf_lustre_obd_connect_data_ocd_maxmodrpcs = -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_ptlrpc_body_pb_last_seen = -1; static int hf_lustre_obd_ioobj_ioo_max_brw = -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_lustre_msg_v2_lm_padding_2 = -1; static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1; static int hf_lustre_obd_ioobj_ioo_seq = -1; static int hf_lustre_niobuf_remote_offset=-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_llogd_body_lgd_len = -1; static int hf_lustre_qunit_data_old_qd_id = -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_obdo_o_nlink = -1; static int hf_lustre_ldlm_extent_gid = -1; static int hf_lustre_obdo_o_uid = -1; static int hf_lustre_obdo_o_valid = -1; static int hf_lustre_ldlm_reply_lock_flags = -1; static int hf_lustre_obdo_o_misc = -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_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_llog_setattr_rec_padding = -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_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_llog_logid_rec_padding5 = -1; static int hf_lustre_ldlm_intent_opc = -1; static int hf_lustre_llog_rec_hdr_lrh_type = -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_llog_log_hdr_llh_tail = -1; static int hf_lustre_obdo_o_size = -1; static int hf_lustre_ldlm_extent_start = -1; static int hf_lustre_llog_size_change_rec_lsc_hdr = -1; static int hf_lustre_llog_logid_lgl_oseq = -1; static int hf_lustre_llog_cookie_lgc_padding = -1; static int hf_lustre_qunit_data_old_qd_type = -1; static int hf_lustre_ldlm_flock_blocking_export = -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_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_llog_log_hdr_llh_size = -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_ldlm_lock_desc_l_policy_data = -1; static int hf_lustre_obd_quotactl_qc_cmd = -1; static int hf_lustre_qunit_data_padding = -1; static int hf_lustre_quota_adjust_qunit_qaq_flags = -1; static int hf_lustre_ldlm_lock_desc_l_granted_mode = -1; static int hf_lustre_obdo_o_seq = -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_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_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_llog_setattr_rec_lsr_ogen = -1; static int hf_lustre_llog_logid_rec_lid_hdr = -1; static int hf_lustre_obdo_o_ioepoch = -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_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_llog_catid_lci_padding1 = -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_obdo_o_id = -1; static int hf_lustre_mgs_target_info_mti_uuid = -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_llog_cookie_lgc_index = -1; static int hf_lustre_lov_desc_ld_uuid = -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_cfg_marker_cm_flags = -1; static int hf_lustre_obdo_o_padding_3 = -1; static int hf_lustre_ldlm_request_lock_desc = -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_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_obdo_o_mtime = -1; static int hf_lustre_obdo_o_blksize = -1; static int hf_lustre_ldlm_res_id_name = -1; static int hf_lustre_ldlm_reply_lock_handle = -1; static int hf_lustre_llogd_body_lgd_saved_index = -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_llog_logid_rec_lid_tail = -1; static int hf_lustre_obdo_o_grant = -1; static int hf_lustre_obdo_o_uid_h = -1; static int hf_lustre_obdo_o_gid_h = -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_llogd_body_lgd_llh_flags = -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_ldlm_reply_lock_padding = -1; static int hf_lustre_obd_quotactl_qc_id = -1; static int hf_lustre_llog_logid_rec_padding4 = -1; static int hf_lustre_llog_setattr_rec_lsr_gid = -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_obdo_o_stripe_idx = -1; static int hf_lustre_llogd_conn_body_lgdc_logid = -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_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_ldlm_flock_pid = -1; static int hf_lustre_lov_desc_ld_default_stripe_size = -1; static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1; static int hf_lustre_cfg_marker_cm_step = -1; static int hf_lustre_mgs_send_param_mgs_param = -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_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_parent_ver = -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_parent_oid = -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_obdo_o_parent_seq = -1; static int hf_lustre_ldlm_request_lock_count = -1; static int hf_lustre_ldlm_flock_end = -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_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_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_trunc = -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_ldlm_intent_opc_layout = -1; static int hf_lustre_ldlm_intent_opc_q_dqacq = -1; static int hf_lustre_ldlm_intent_opc_q_conn = -1; static int hf_lustre_ldlm_intent_opc_setxattr = -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; static int hf_lustre_lu_ladvise = -1; static int hf_lustre_lu_ladvise_lla_start = -1; static int hf_lustre_lu_ladvise_lla_end = -1; static int hf_lustre_lu_ladvise_lla_advice = -1; static int hf_lustre_lu_ladvise_lla_padding = -1; static int hf_lustre_ldlm_key = -1; static int hf_lustre_ldlm_value = -1; static int hf_lustre_hsm_request = -1; static int hf_lustre_hsm_req_action = -1; static int hf_lustre_hsm_req_archive_id = -1; static int hf_lustre_hsm_req_flags = -1; static int hf_lustre_hsm_req_itemcount = -1; static int hf_lustre_hsm_req_data_len = -1; static int hf_lustre_hsm_user_item = -1; static int hf_lustre_hsm_user_item_fid = -1; static int hf_lustre_hsm_user_item_extent = -1; static int hf_lustre_hsm_extent = -1; static int hf_lustre_hsm_extent_offset = -1; static int hf_lustre_hsm_extent_length = -1; static int hf_lustre_hsm_progress = -1; static int hf_lustre_hsm_prog_fid = -1; static int hf_lustre_hsm_prog_cookie = -1; static int hf_lustre_hsm_prog_extent = -1; static int hf_lustre_hsm_prog_flags = -1; static int hf_lustre_hsm_prog_errval = -1; static int hf_lustre_hsm_prog_data_ver = -1; static int hf_lustre_hsm_state_get = -1; static int hf_lustre_hsm_us_states = -1; static int hf_lustre_hsm_us_archive_id = -1; static int hf_lustre_hsm_us_in_prog_state = -1; static int hf_lustre_hsm_us_in_prog_action = -1; static int hf_lustre_hsm_us_in_prog_location = -1; static int hf_lustre_hsm_us_ext_info = -1; /* Quota Body */ static int hf_lustre_qb = -1; static int hf_lustre_qb_fid = -1; static int hf_lustre_qb_id = -1; static int hf_lustre_qb_flags = -1; static int hf_lustre_qb_padding = -1; static int hf_lustre_qb_count = -1; static int hf_lustre_qb_usage = -1; static int hf_lustre_qb_slv_ver = -1; static int hf_lustre_qb_lockh = -1; static int hf_lustre_qb_glb_lockh = -1; static int hf_lustre_qid_fid = -1; static int hf_lustre_qid_uid = -1; static int hf_lustre_qid_gid = -1; /* Layout Intent */ static int hf_lustre_layout_intent = -1; static int hf_lustre_layout_intent_opc = -1; static int hf_lustre_layout_intent_flags = -1; static int hf_lustre_layout_intent_start = -1; static int hf_lustre_layout_intent_end = -1; /* mds md v1 and v3 */ static int hf_lustre_lov_mds_md_lmm_magic = -1; static int hf_lustre_lov_mds_md_lmm_pattern = -1; static int hf_lustre_lov_mds_md_lmm_object_id = -1; /* v1 only */ static int hf_lustre_lov_mds_md_lmm_oi = -1; /* v3 only */ static int hf_lustre_lov_mds_md_lmm_object_seq = -1; /* v1 only */ static int hf_lustre_lov_mds_md_lmm_stripe_size = -1; static int hf_lustre_lov_mds_md_lmm_stripe_count = -1; static int hf_lustre_lov_mds_md_lmm_layout_gen = -1; static int hf_lustre_lov_mds_md_lmm_pool_name = -1; /* v3 only */ static int hf_lustre_lov_mds_md_lmm_objects = -1; /* struct ost_id */ static int hf_lustre_ost_id_oi_id = -1; static int hf_lustre_ost_id_oi_seq = -1; static int hf_lustre_generic_data = -1; /* --------------------------------------------------------------------*/ /* proto declaration */ static gint proto_lustre = -1; typedef int (dissect_func)( tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex); static dissect_func dissect_uint64, dissect_uint32, dissect_uint16, dissect_uint8; #define WSHARK_HEAD #include "lustre_dlm_flags_wshark.c" #undef WSHARK_HEAD 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 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_V3, "LOV_MAGIC_V3" }, {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[] = { {0x00000008, "LUSTRE_SYNC_FL "}, /* Synchronous updates */ {0x00000010, "LUSTRE_IMMUTABLE_FL "}, /* Immutable file */ {0x00000020, "LUSTRE_APPEND_FL "}, /* writes to file may only append */ {0x00000040, "LUSTRE_NODUMP_FL "}, /* do not dump file */ {0x00000080, "LUSTRE_NOATIME_FL "}, /* do not update atime */ {0x00001000, "LUSTRE_INDEX_FL "}, /* hash-indexed directory */ {0x00010000, "LUSTRE_DIRSYNC_FL "}, /* dirsync behaviour (dir only) */ {0x00020000, "LUSTRE_TOPDIR_FL "}, /* Top of directory hierarchies */ {0x00100000, "LUSTRE_DIRECTIO_FL "}, /* Use direct i/o */ {0x10000000, "LUSTRE_INLINE_DATA_FL "}, /* Inode has inline data. */ { 0, NULL } }; const value_string lustre_mgs_config_body_types[] = { { 0, "CONFIG" }, { 1, "SPTLRPC" }, { 2, "RECOVER" }, { 3, "MAX" }, { 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_op_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" }, { REINT_SETXATTR, "REINT_SETXATTR" }, { REINT_RMENTRY, "REINT_RMENTRY" }, { REINT_MIGRATE, "REINT_MIGRATE" }, { 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_QUOTA_ADJUST_QUNIT"}, {21 , "OST_LADVISE"}, {22 , "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_GET_ROOT"}, {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_WRITEPAGE"}, {52 , "MDS_IS_SUBDIR"}, {53 , "MDS_GET_INFO"}, {54 , "MDS_HSM_STATE_GET"}, {55 , "MDS_HSM_STATE_SET"}, {56 , "MDS_HSM_ACTION"}, {57 , "MDS_HSM_PROGRESS"}, {58 , "MDS_HSM_REQUEST"}, {59 , "MDS_HSM_CT_REGISTER"}, {60 , "MDS_HSM_CT_UNREGISTER"}, {61 , "MDS_SWAP_LAYOUTS"}, {62 , "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_SET_INFO"}, {108 , "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_CONFIG_READ"}, {257 , "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"}, /* SEQ RPC opcodes */ { 700, "SEQ_QUERY"}, { 701, "SEQ_LAST_OPC"}, /* FLD RPC opcodes */ { 900, "FLD_QUERY"}, { 901, "FLD_LAST_OPC"}, { 0, NULL } }; /* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */ const value_string lustre_ldlm_mode_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_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 } }; /* from lustre_user.h */ enum hsm_user_action { HUA_NONE = 1, /* no action (noop) */ HUA_ARCHIVE = 10, /* copy to hsm */ HUA_RESTORE = 11, /* prestage */ HUA_RELEASE = 12, /* drop ost objects */ HUA_REMOVE = 13, /* remove from archive */ HUA_CANCEL = 14 /* cancel a request */ }; const value_string lustre_hsm_user_action_t_vals[] = { { HUA_NONE, "NOOP" }, { HUA_ARCHIVE, "ARCHIVE" }, { HUA_RESTORE, "RESTORE" }, { HUA_RELEASE, "RELEASE" }, { HUA_REMOVE, "REMOVE" }, { HUA_CANCEL, "CANCEL" }, }; enum hsm_states { HS_EXISTS = 0x00000001, HS_DIRTY = 0x00000002, HS_RELEASED = 0x00000004, HS_ARCHIVED = 0x00000008, HS_NORELEASE = 0x00000010, HS_NOARCHIVE = 0x00000020, HS_LOST = 0x00000040, }; const value_string lustre_hsm_states_t_vals[] = { { HS_EXISTS, "EXISTS" }, { HS_DIRTY, "DIRTY" }, { HS_RELEASED, "RELEASED" }, { HS_ARCHIVED, "ARCHIVED" }, { HS_NORELEASE, "NORELEASED" }, { HS_NOARCHIVE, "NOARCHIVED" }, { HS_LOST, "LOST" }, }; enum hsm_progress_states { HPS_WAITING = 1, HPS_RUNNING = 2, HPS_DONE = 3, }; const value_string lustre_hsm_progress_state_t_vals[] = { { HPS_WAITING, "WAITING" }, { HPS_RUNNING, "RUNNING" }, { HPS_DONE, "DONE" }, }; #ifndef ENABLE_STATIC const gchar version[] = VERSION; /* Start the functions we need for the plugin stuff */ void plugin_register(void) { extern void proto_register_dcerpc_lustre(void); proto_register_dcerpc_lustre(); } void plugin_reg_handoff(void) { extern void proto_reg_handoff_lustre(void); proto_reg_handoff_lustre(); } #endif /* ------------------------------------------------------------------- */ /* display functions */ /* ------------------------------------------------------------------- */ /* display str in left corner and in COL */ /* @gint col : the col where we add the information */ 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) 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) proto_item_append_text(pi, format, str); if (NULL != cinfo) col_append_fstr(cinfo, col, format, str); } /* -------------------------- 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_uint16 (tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex) { proto_tree_add_item(tree, hfindex, tvb, offset, 2, TRUE); return offset+2; } 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; } /* ------------------------------------------------------------------------- */ /* 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; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return offset; item = 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); return offset; } static int lustre_dissect_struct_element_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 data_len) { proto_item *item = NULL; if (data_len == 0) return offset; item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); offset += data_len; proto_item_set_len(item, data_len); offset = add_extra_padding(tvb, offset, pinfo, parent_tree); return offset; } int lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, int max_length) { int i; int val; proto_item *item = NULL; item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 0, TRUE); for (i=0; i < max_length; ++i) { val = tvb_get_guint8(tvb, offset+i); proto_item_append_text(item, (i) ? "%02x" : ": %#02x", val); } offset += max_length; proto_item_set_len(item, max_length); return offset; } /* struct ost_id { */ /* union { */ /* struct { */ /* __u64 oi_id; */ /* __u64 oi_seq; */ /* } oi; */ /* struct lu_fid oi_fid; */ /* }; */ /* }; */ int lustre_dissect_struct_ostid(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_id); } offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_id); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_seq); proto_item_set_len(item, offset-old_offset); return offset; } /* ------------------------------------------------------------------------ */ /* 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_) { guint32 version; guint32 major, minor, patch, fix; proto_item *item; version = tvb_get_letohl(tvb, offset); fix = version & 0xff; version >>= 8; patch = version & 0xff; version >>= 8; minor = version & 0xff; version >>= 8; major = version & 0xff; item = proto_tree_add_item(tree, hf_lustre_obd_connect_data_ocd_version, tvb, offset, 0, TRUE); proto_item_append_text(item, ": %d.%d.%d.%d", major, minor, patch, fix); proto_item_set_len(item, 4); offset += 4; 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_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_struct_obd_connect_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; proto_tree *tree = NULL; int old_offset; int data_len; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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); } /* ocd_connect_flags = get_... */ 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); if (data_len == 72) { offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree); } else { /* if data_len == 192 */ /* Actually blocksize, inodespace, grant_extent */ offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree); } offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group); offset = lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree); /* if (ocd_connect_flags & OBD_CONNECT_MAX_EASIZE) */ offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_max_easize); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_instance); /* if (ocd_connect_flags & OBD_CONNECT_MAXBYTES) */ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_maxbytes); if (data_len >= 74) /* && (flags & OBD_CONNECT_MULTIMODRPCS) */ offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_maxmodrpcs); if (old_offset+data_len > offset) { proto_tree_add_item(tree, hf_lustre_extra_padding, tvb, offset, (old_offset+data_len)-offset, TRUE); offset = old_offset+data_len; } 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_seq; */ /* 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_seq(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_seq); 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_seq(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_seq; */ /* IDL: uint32 lmm_stripe_size; */ /* IDL: uint16 lmm_stripe_count; */ /* IDL: uint16 lmm_layout_gen; */ /* IDL: struct lov_ost_data_v1 { */ /* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */ /* IDL: } */ 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, i; guint16 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 = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_magic); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_pattern); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_object_id); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_object_seq); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_stripe_size); stripe_count = tvb_get_letohs(tvb, offset); offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_stripe_count); offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_layout_gen); for (i = 0; i < stripe_count; ++i) offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); proto_item_set_len(item, offset-old_offset); return offset; } /* struct lov_mds_md_v3 { /\* LOV EA mds/wire data (little-endian) *\/ */ /* __u32 lmm_magic; /\* magic number = LOV_MAGIC_V3 *\/ */ /* __u32 lmm_pattern; /\* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 *\/ */ /* struct ost_id lmm_oi; /\* LOV object ID *\/ */ /* __u32 lmm_stripe_size; /\* size of stripe in bytes *\/ */ /* /\* lmm_stripe_count used to be __u32 *\/ */ /* __u16 lmm_stripe_count; /\* num stripes in use for this object *\/ */ /* __u16 lmm_layout_gen; /\* layout generation number *\/ */ /* char lmm_pool_name[LOV_MAXPOOLNAME + 1]; /\* must be 32bit aligned *\/ */ /* struct lov_ost_data_v1 lmm_objects[0]; /\* per-stripe data *\/ */ /* }; */ int lustre_dissect_struct_lov_mds_md_v3(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, i; guint16 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_v3); } offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_magic); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_pattern); offset = lustre_dissect_struct_ostid(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_oi); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_stripe_size); stripe_count = tvb_get_letohs(tvb, offset); offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_stripe_count); offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_layout_gen); offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_pool_name, LOV_MAXPOOLNAME+1); for (i = 0; i < stripe_count; ++i) offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_lov_mds_md(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, int buff_num _U_) { int magic; if(LUSTRE_BUFFER_LEN(buff_num) == 0) return offset; 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,parent_tree, hf_index); break; case LOV_MAGIC_V3: offset=lustre_dissect_struct_lov_mds_md_v3(tvb,offset,pinfo,parent_tree, hf_index); break; default: offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree, hf_lustre_generic_data, buff_num); break; }; 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_seq; */ /* IDL: uint32 ioo_max_brw; */ /* 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_seq(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_seq); return offset; } static int lustre_dissect_element_obd_ioobj_ioo_max_brw(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_max_brw); 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_seq(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obd_ioobj_ioo_max_brw(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; */ /* v1 of this type ends here */ /* uint32 lvb_mtime_ns; */ /* uint32 lvb_atime_ns; */ /* uint32 lvb_ctime_ns; */ /* uint32 lvb_padding; */ /* IDL: } */ static int lustre_dissect_element_ost_lvb_lvb_time(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_, int ns_offset _U_) { nstime_t ns; /* timestamp */ ns.secs = tvb_get_letoh64(tvb, offset); if (ns_offset != 0) ns.nsecs = tvb_get_letohl(tvb, offset+ns_offset); proto_tree_add_time(tree, hf_index, tvb, offset, 8, &ns); offset += 8; 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_, int buff_num _U_) { proto_item *item = NULL; proto_tree *tree = NULL; int old_offset; int buff_len; buff_len = LUSTRE_BUFFER_LEN(buff_num); if (buff_len == 0) return 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); } /* v1 format size is 40 * v2 format size is 56 w/ ns for times */ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size); offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_mtime, (buff_len >= 56) ?32 :0); offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_atime, (buff_len >= 56) ?28 :0); offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_ctime, (buff_len >= 56) ?24 :0); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks); /* post-v1 format */ if (buff_len >= 56) { offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_mtime_ns); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_atime_ns); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_ctime_ns); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_padding); } 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_lu_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 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; } /* IDL: struct mdt_body { */ /* IDL: struct lu_fid { */ /* IDL: } fid1; */ /* IDL: struct lu_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 ioepoch; */ /* 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 uid_h; */ /* IDL: uint32 gid_h; */ /* IDL: uint32 padding_5; */ /* IDL: uint64 padding_6; */ /* IDL: uint64 padding_7; */ /* IDL: uint64 padding_8; */ /* IDL: uint64 padding_9; */ /* IDL: uint64 padding_10; */ /* IDL: } */ static int lustre_dissect_element_mdt_body_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid1); return offset; } static int lustre_dissect_element_mdt_body_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_body_fid2); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_handle); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_valid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_size); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_mtime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_body_atime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_body_ctime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_body_blocks); return offset; } static int lustre_dissect_element_mdt_body_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_ioepoch); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_ino); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_fsuid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_fsgid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_capability); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_mode); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_uid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_gid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_flags); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_rdev); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_nlink); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_generation); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_suppgid); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_eadatasize); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_aclsize); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_max_mdsize); return offset; } static int lustre_dissect_element_mdt_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_mdt_body_max_cookiesize); return offset; } static int lustre_dissect_element_mdt_body_uid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_uid_h); return offset; } static int lustre_dissect_element_mdt_body_gid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_body_gid_h); return offset; } static int lustre_dissect_element_mdt_body_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_mdt_body_padding_5); return offset; } static int lustre_dissect_element_mdt_body_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_mdt_body_padding_6); return offset; } static int lustre_dissect_element_mdt_body_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_7); return offset; } static int lustre_dissect_element_mdt_body_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_8); return offset; } static int lustre_dissect_element_mdt_body_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_9); return offset; } static int lustre_dissect_element_mdt_body_padding_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset= dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_body_padding_10); return offset; } int lustre_dissect_struct_mdt_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { 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_mdt_body); } offset=lustre_dissect_element_mdt_body_fid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_fid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_handle(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_valid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_size(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_mtime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_atime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_ctime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_blocks(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_ioepoch(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_ino(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_capability(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_mode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_uid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_gid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_flags(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_rdev(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_nlink(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_generation(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_suppgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_eadatasize(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_aclsize(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_max_mdsize(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_max_cookiesize(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_uid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_gid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_5(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_6(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_7(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_8(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_9(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_body_padding_10(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 mdt_rec_setattr { */ /* IDL: uint32 sa_opcode; */ /* IDL: uint32 sa_cap; */ /* IDL: uint32 sa_fsuid; */ /* IDL: uint32 sa_fsuid_h; */ /* IDL: uint32 sa_fsgid; */ /* IDL: uint32 sa_fsgid_h; */ /* IDL: uint32 sa_suppgid; */ /* IDL: uint32 sa_suppgid_h; */ /* IDL: uint32 sa_padding_1; */ /* IDL: uint32 sa_padding_1_h; */ /* IDL: struct lu_fid { */ /* IDL: } sa_fid; */ /* IDL: uint64 sa_valid; */ /* IDL: uint32 sa_uid; */ /* IDL: uint32 sa_gid; */ /* IDL: uint64 sa_size; */ /* IDL: uint64 sa_blocks; */ /* IDL: uint64 sa_mtime; */ /* IDL: uint64 sa_atime; */ /* IDL: uint64 sa_ctime; */ /* IDL: uint32 sa_attr_flags; */ /* IDL: uint32 sa_mode; */ /* IDL: uint32 sa_padding_2; */ /* IDL: uint32 sa_projid; */ /* IDL: uint32 sa_padding_4; */ /* IDL: uint32 sa_padding_5; */ /* IDL: } */ static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_opcode); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_cap); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsuid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_fsgid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_suppgid); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_suppgid_h); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_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_mdt_rec_setattr_sa_padding_1); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_padding_1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_1_h); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_setattr_sa_fid); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_valid); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_uid); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_gid); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_size); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_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_mdt_rec_setattr_sa_blocks); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_mtime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_atime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_ctime, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_attr_flags); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_setattr_sa_mode); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_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_mdt_rec_setattr_sa_padding_2); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_projid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_projid); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_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_mdt_rec_setattr_sa_padding_4); return offset; } static int lustre_dissect_element_mdt_rec_setattr_sa_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_mdt_rec_setattr_sa_padding_5); return offset; } int lustre_dissect_struct_mdt_rec_setattr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { 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_mdt_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_op_vals, "Unknown sa_opc")); offset=lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_suppgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_fid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_valid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_uid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_gid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_size(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_blocks(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_mtime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_atime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_ctime(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_attr_flags(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_mode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_projid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_5(tvb, offset, pinfo, tree); proto_item_set_len(item, offset-old_offset); return offset; } /* IDL: struct mdt_rec_create { */ /* IDL: uint32 cr_opcode; */ /* IDL: uint32 cr_cap; */ /* IDL: uint32 cr_fsuid; */ /* IDL: uint32 cr_fsuid_h; */ /* IDL: uint32 cr_fsgid; */ /* IDL: uint32 cr_fsgid_h; */ /* IDL: uint32 cr_suppgid1; */ /* IDL: uint32 cr_suppgid1_h; */ /* IDL: uint32 cr_suppgid2; */ /* IDL: uint32 cr_suppgid2_h; */ /* IDL: struct lu_fid { */ /* IDL: } cr_fid1; */ /* IDL: struct lu_fid { */ /* IDL: } cr_fid2; */ /* IDL: struct lustre_handle { */ /* IDL: } cr_old_handle; */ /* IDL: uint64 cr_time; */ /* IDL: uint64 cr_rdev; */ /* IDL: uint64 cr_ioepoch; */ /* IDL: uint64 cr_padding_1; */ /* IDL: uint32 cr_mode; */ /* IDL: uint32 cr_bias; */ /* IDL: uint32 cr_flags_l; */ /* IDL: uint32 cr_flags_h; */ /* IDL: uint32 cr_umask; */ /* IDL: uint32 cr_padding_4; */ /* IDL: } */ static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_opcode); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_cap); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsuid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_fsgid_h); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_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_mdt_rec_create_cr_suppgid1); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid1_h); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_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_mdt_rec_create_cr_suppgid2); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_suppgid2_h); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_create_cr_fid1); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_create_cr_fid2); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_old_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_mdt_rec_create_cr_old_handle); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_time, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_rdev); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_ioepoch(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_ioepoch); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_padding_1); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_mode); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_bias); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_flags_l(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_flags_l); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_flags_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_flags_h); return offset; } static int lustre_dissect_element_mdt_rec_create_cr_umask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_umask); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_create_cr_padding_4); return offset; } int lustre_dissect_struct_mdt_rec_create(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { 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_mdt_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_op_vals, "Unknown cr_opc")); offset=lustre_dissect_element_mdt_rec_create_cr_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_suppgid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_suppgid1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_suppgid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_suppgid2_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_fid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_old_handle(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_time(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_rdev(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_ioepoch(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_padding_1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_mode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_bias(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_flags_l(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_flags_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_umask(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_create_cr_padding_4(tvb, offset, pinfo, tree); proto_item_set_len(item, offset-old_offset); return offset; } /* TODO : find where this structure appear ! */ /* IDL: struct mdt_rec_link { */ /* IDL: uint32 lk_opcode; */ /* IDL: uint32 lk_cap; */ /* IDL: uint32 lk_fsuid; */ /* IDL: uint32 lk_fsuid_h; */ /* IDL: uint32 lk_fsgid; */ /* IDL: uint32 lk_fsgid_h; */ /* IDL: uint32 lk_suppgid1; */ /* IDL: uint32 lk_suppgid1_h; */ /* IDL: uint32 lk_suppgid2; */ /* IDL: uint32 lk_suppgid2_h; */ /* IDL: struct lu_fid { */ /* IDL: } lk_fid1; */ /* IDL: struct lu_fid { */ /* IDL: } lk_fid2; */ /* IDL: uint64 lk_time; */ /* IDL: uint64 lk_padding_1; */ /* IDL: uint64 lk_padding_2; */ /* IDL: uint64 lk_padding_3; */ /* IDL: uint64 lk_padding_4; */ /* IDL: uint32 lk_bias; */ /* IDL: uint32 lk_padding_5; */ /* IDL: uint32 lk_padding_6; */ /* IDL: uint32 lk_padding_7; */ /* IDL: uint32 lk_padding_8; */ /* IDL: uint32 lk_padding_9; */ /* IDL: } */ static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_opcode); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_cap); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsuid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_fsgid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_suppgid1); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid1_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_suppgid2); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_suppgid2_h); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_link_lk_fid1); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_link_lk_fid2); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_link_lk_time, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_rec_link_lk_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_1); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_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_mdt_rec_link_lk_padding_2); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_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_mdt_rec_link_lk_padding_3); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_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_mdt_rec_link_lk_padding_4); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_bias); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_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_mdt_rec_link_lk_padding_5); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_6); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_7); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_8); return offset; } static int lustre_dissect_element_mdt_rec_link_lk_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link_lk_padding_9); return offset; } int lustre_dissect_struct_mdt_rec_link(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { 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_mdt_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_op_vals, "Unknown lk_opc")); offset=lustre_dissect_element_mdt_rec_link_lk_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_suppgid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_suppgid1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_suppgid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_suppgid2_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_fid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_time(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_3(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_4(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_bias(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_5(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_6(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_7(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_8(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_link_lk_padding_9(tvb, offset, pinfo, tree); proto_item_set_len(item, offset-old_offset); return offset; } /* IDL: struct mdt_rec_unlink { */ /* IDL: uint32 ul_opcode; */ /* IDL: uint32 ul_cap; */ /* IDL: uint32 ul_fsuid; */ /* IDL: uint32 ul_fsuid_h; */ /* IDL: uint32 ul_fsgid; */ /* IDL: uint32 ul_fsgid_h; */ /* IDL: uint32 ul_suppgid1; */ /* IDL: uint32 ul_suppgid1_h; */ /* IDL: uint32 ul_suppgid2; */ /* IDL: uint32 ul_suppgid2_h; */ /* IDL: struct lu_fid { */ /* IDL: } ul_fid1; */ /* IDL: struct lu_fid { */ /* IDL: } ul_fid2; */ /* IDL: uint64 ul_time; */ /* IDL: uint64 ul_padding_2; */ /* IDL: uint64 ul_padding_3; */ /* IDL: uint64 ul_padding_4; */ /* IDL: uint64 ul_padding_5; */ /* IDL: uint32 ul_bias; */ /* IDL: uint32 ul_mode; */ /* IDL: uint32 ul_padding_6; */ /* IDL: uint32 ul_padding_7; */ /* IDL: uint32 ul_padding_8; */ /* IDL: uint32 ul_padding_9; */ /* IDL: } */ static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_opcode); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_cap); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsuid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_fsgid_h); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_suppgid1); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid1_h); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_suppgid2); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_suppgid2_h); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_unlink_ul_fid1); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_unlink_ul_fid2); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_time , tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_padding_2); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_padding_3); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_padding_4); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_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_mdt_rec_unlink_ul_padding_5); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_bias); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_unlink_ul_mode); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_6); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_7); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_8); return offset; } static int lustre_dissect_element_mdt_rec_unlink_ul_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink_ul_padding_9); return offset; } int lustre_dissect_struct_mdt_rec_unlink(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { 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_mdt_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_op_vals, "Unknown ul_opc")); offset=lustre_dissect_element_mdt_rec_unlink_ul_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_suppgid2_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_fid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_time(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_3(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_4(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_5(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_bias(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_mode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_6(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_7(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_8(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_unlink_ul_padding_9(tvb, offset, pinfo, tree); proto_item_set_len(item, offset-old_offset); return offset; } /* IDL: struct mdt_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_mdt_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_mdt_rec_rename_rn_opcode); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_cap); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsuid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_fsgid_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_suppgid1); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid1_h); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_suppgid2); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_suppgid2_h); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_fid1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_rename_rn_fid1); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_fid2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_rename_rn_fid2); return offset; } static int lustre_dissect_element_mdt_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_mdt_rec_rename_rn_time, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_1); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_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_mdt_rec_rename_rn_padding_2); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_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_mdt_rec_rename_rn_padding_3); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_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_mdt_rec_rename_rn_padding_4); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_bias(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_bias); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_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_mdt_rec_rename_rn_mode); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_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_mdt_rec_rename_rn_padding_5); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_padding_6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_6); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_7); return offset; } static int lustre_dissect_element_mdt_rec_rename_rn_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename_rn_padding_8); return offset; } int lustre_dissect_struct_mdt_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_mdt_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_op_vals, "Unknown rn_opc")); offset=lustre_dissect_element_mdt_rec_rename_rn_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_suppgid2_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_fid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_time(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_3(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_4(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_bias(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_mode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_5(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_6(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_7(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_rename_rn_padding_8(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_setxattr_pack() */ /* IDL: struct mdt_rec_setxattr { */ /* IDL: uint32 sx_opcode; */ /* IDL: uint32 sx_cap; */ /* IDL: uint32 sx_fsuid; */ /* IDL: uint32 sx_fsuid_h; */ /* IDL: uint32 sx_fsgid; */ /* IDL: uint32 sx_fsgid_h; */ /* IDL: uint32 sx_suppgid1; */ /* IDL: uint32 sx_suppgid1_h; */ /* IDL: uint32 sx_suppgid2; */ /* IDL: uint32 sx_suppgid2_h; */ /* IDL: struct lu_fid { */ /* IDL: } sx_fid; */ /* IDL: uint64 sx_padding_1; */ /* IDL: uint32 sx_padding_2; */ /* IDL: uint32 sx_padding_3; */ /* IDL: uint64 sx_valid; */ /* IDL: uint64 sx_time; */ /* IDL: uint64 sx_padding_5; */ /* IDL: uint64 sx_padding_6; */ /* IDL: uint64 sx_padding_7; */ /* IDL: uint32 sx_size; */ /* IDL: uint32 sx_flags; */ /* IDL: uint32 sx_padding_8; */ /* IDL: uint32 sx_padding_9; */ /* IDL: uint32 sx_padding_10; */ /* IDL: uint32 sx_padding_11; */ /* IDL: } */ static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_opcode); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_cap); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_fsuid); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_fsuid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsuid_h); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_fsgid); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_fsgid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_fsgid_h); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_suppgid1); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid1_h); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_suppgid2); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_suppgid2_h); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_mdt_rec_setxattr_sx_fid); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_1); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_padding_2); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_padding_3); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_valid); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_time, tvb, offset, 8, &ns ); offset+=8; return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_padding_5); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_padding_6); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_7); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_size); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_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_mdt_rec_setxattr_sx_flags); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_8); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_9); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_10(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_10); return offset; } static int lustre_dissect_element_mdt_rec_setxattr_sx_padding_11(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr_sx_padding_11); return offset; } int lustre_dissect_struct_mdt_rec_setxattr(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 sx_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_mdt_rec_setxattr); } sx_opcode=tvb_get_letohl(tvb,offset); display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_op_vals, "Unknown sx_opc")); offset=lustre_dissect_element_mdt_rec_setxattr_sx_opcode(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_cap(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsuid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsuid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsgid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_fsgid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid1_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_suppgid2_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_fid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_1(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_2(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_3(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_valid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_time(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_5(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_6(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_7(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_size(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_flags(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_8(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_9(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_10(tvb, offset, pinfo, tree); offset=lustre_dissect_element_mdt_rec_setxattr_sx_padding_11(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(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(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*/ #define DOBIT(_hf) dissect_uint32(tvb, offset, pinfo, tree, (_hf)) DOBIT(hf_lustre_ldlm_intent_opc_open ); DOBIT(hf_lustre_ldlm_intent_opc_creat ); DOBIT(hf_lustre_ldlm_intent_opc_readdir ); DOBIT(hf_lustre_ldlm_intent_opc_getattr ); DOBIT(hf_lustre_ldlm_intent_opc_lookup ); DOBIT(hf_lustre_ldlm_intent_opc_unlink ); DOBIT(hf_lustre_ldlm_intent_opc_getxattr); DOBIT(hf_lustre_ldlm_intent_opc_exec ); DOBIT(hf_lustre_ldlm_intent_opc_pin ); DOBIT(hf_lustre_ldlm_intent_opc_layout ); DOBIT(hf_lustre_ldlm_intent_opc_q_dqacq ); DOBIT(hf_lustre_ldlm_intent_opc_q_conn ); DOBIT(hf_lustre_ldlm_intent_opc_setxattr); #undef DOBIT 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_TRUNC ){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " trunc"); proto_item_append_text(tree, " trunc" ); } 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" ); } if(opcode & IT_LAYOUT ){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " layout"); proto_item_append_text(tree, " layout" ); } if(opcode & IT_QUOTA_DQACQ ){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_dqacq"); proto_item_append_text(tree, " quota_dqacq" ); } if(opcode & IT_QUOTA_CONN ){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_conn"); proto_item_append_text(tree, " quota_conn" ); } if(opcode & IT_SETXATTR ){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " setxattr"); proto_item_append_text(tree, " setxattr" ); } 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_) { guint64 intent_opc; proto_item * opcode_item = NULL; proto_tree * opcode_tree = NULL; 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: enum ldlm_type 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(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: enum ldlm_mode l_req_mode; */ /* IDL: enum ldlm_mode l_granted_mode; */ /* IDL: union ldlm_policy_data 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(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(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_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_) { /* 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 num_locks _U_) { int i; if (num_locks < 2) num_locks = 2; for (i = 0; i < num_locks; 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; */ guint32 num_locks = 2; 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); num_locks = tvb_get_letohl(tvb,offset); 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, num_locks); proto_item_set_len(item, offset-old_offset); 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_) { /* 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_config_body { * IDL: char mcb_name[64]; * IDL: __u64 mcb_offset; * IDL: __u16 mcb_type; * IDL: __u8 mcb_reserved; * IDL: __u8 mcb_bits; * IDL: __u32 mcb_units; * IDL: }; */ int lustre_dissect_element_mgs_config_body_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { int string_len = 64; proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); #ifdef WIRESHARK_COMPAT display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", (const gchar *)tvb_get_string(tvb, offset, string_len)); #else display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", (const gchar *)tvb_get_string_enc(wmem_packet_scope(), tvb, offset, string_len, ENC_ASCII)); #endif offset += string_len; return offset; } int lustre_dissect_struct_mgs_config_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_mgs_config_body); } offset = lustre_dissect_element_mgs_config_body_name(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_name); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_offset); offset = dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_type); offset = dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_reserved); offset = dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_bits); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_units); proto_item_set_len(item, offset-old_offset); return offset; } /* IDL: struct mgs_config_res { * IDL: __u64 mcr_offset; * IDL: __u64 mcr_size; * IDL: }; */ int lustre_dissect_struct_mgs_config_res(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_config_res); } offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_res_offset); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_res_size); 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_oseq; */ /* 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_oseq(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_oseq); 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_oseq(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 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 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; } /* IDL: struct obdo { */ /* IDL: uint64 o_valid; */ /* IDL: uint64 o_id; */ /* IDL: uint64 o_seq; */ /* IDL: uint64 o_parent_seq; */ /* 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_parent_oid; */ /* IDL: uint32 o_misc; */ /* IDL: uint64 o_ioepoch; */ /* IDL: uint32 o_stripe_idx; */ /* IDL: uint32 o_parent_ver; */ /* IDL: struct lustre_handle { */ /* IDL: } o_handle; */ /* IDL: struct llog_cookie { */ /* IDL: } o_lcookie; */ /* IDL: uint32 o_uid_h; */ /* IDL: uint32 o_gid_h; */ /* 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_seq(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_seq); return offset; } static int lustre_dissect_element_obdo_o_parent_seq(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_parent_seq); 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_SRVLOCK",*/ //} 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_parent_oid(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_parent_oid); 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_ioepoch(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_ioepoch); 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_parent_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_obdo_o_parent_ver); 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_uid_h(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_h); return offset; } static int lustre_dissect_element_obdo_o_gid_h(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_h); 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_seq(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_parent_seq(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_parent_oid(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_misc(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_ioepoch(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_stripe_idx(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_parent_ver(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_uid_h(tvb, offset, pinfo, tree); offset=lustre_dissect_element_obdo_o_gid_h(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; } int lustre_dissect_struct_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_ ) { offset=dissect_uint32(tvb, offset, pinfo, parent_tree, hf_index); /* Pad out to 8 bytes */ offset=add_extra_padding(tvb,offset,pinfo,parent_tree); return offset; } int lustre_dissect_struct_seq_range(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _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_lustre_seq_range, tvb, offset, -1, TRUE); tree = proto_item_add_subtree(item, ett_lustre_seq_range); } offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_seq_range_start); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_seq_range_end); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_seq_range_index); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_seq_range_flags); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_fld_range(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _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_lustre_fld_range, tvb, offset, -1, TRUE); tree = proto_item_add_subtree(item, ett_lustre_fld_range); } offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_fld_range_start); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_fld_range_end); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_fld_range_index); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_fld_range_flags); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_mdt_ioepoch(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_mdt_ioepoch); } offset=lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_handle); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_ioepoch); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_flags); offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch_padding); if (item) proto_item_set_len(item, offset-old_offset); return offset; } /* IDL: struct lustre_capa { * IDL: struct lu_fid lc_fid; * IDL: __u64 lc_opc; * IDL: __u64 lc_uid; * IDL: __u64 lc_gid; * IDL: __u32 lc_flags; * IDL: __u32 lc_keyid; * IDL: __u32 lc_timeout; * IDL: __u32 lc_expiry; * IDL: __u8 lc_hmac[64]; * IDL: } __attribute__((packed)); */ /** lustre_capa::lc_opc */ /* enum { */ /* CAPA_OPC_BODY_WRITE = 1<<0, **< write object data */ /* CAPA_OPC_BODY_READ = 1<<1, **< read object data */ /* CAPA_OPC_INDEX_LOOKUP = 1<<2, **< lookup object fid */ /* CAPA_OPC_INDEX_INSERT = 1<<3, **< insert object fid */ /* CAPA_OPC_INDEX_DELETE = 1<<4, **< delete object fid */ /* CAPA_OPC_OSS_WRITE = 1<<5, **< write oss object data */ /* CAPA_OPC_OSS_READ = 1<<6, **< read oss object data */ /* CAPA_OPC_OSS_TRUNC = 1<<7, **< truncate oss object */ /* CAPA_OPC_OSS_DESTROY = 1<<8, **< destroy oss object */ /* CAPA_OPC_META_WRITE = 1<<9, **< write object meta data */ /* CAPA_OPC_META_READ = 1<<10, **< read object meta data */ /* }; */ int lustre_dissect_element_capa_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) { /* TODO - pick apart bits */ offset = dissect_uint64(tvb, offset, pinfo, parent_tree, hf_lustre_capa_opc); return offset; } int lustre_dissect_element_capa_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) { /* TODO - pick apart flags */ offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_capa_flags); return offset; } int lustre_dissect_struct_capa(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_capa); } offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_capa_fid); offset=lustre_dissect_element_capa_opc(tvb,offset,pinfo,tree); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_capa_uid); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_capa_gid); offset=lustre_dissect_element_capa_flags(tvb,offset,pinfo,tree); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_keyid); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_timeout); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_capa_expiry); offset=lustre_dissect_struct_hmac(tvb,offset,pinfo,tree, hf_lustre_capa_hmac, 64); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_lquota_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_lquota_id); } offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_qid_fid); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_uid); offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_gid); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_quota_body(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_body); } offset = lustre_dissect_struct_lu_fid(tvb, offset, pinfo, tree, hf_lustre_qb_fid); offset = lustre_dissect_struct_lquota_id(tvb, offset, pinfo, tree, hf_lustre_qb_id); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_flags); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_padding); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_count); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_usage); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_slv_ver); offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, hf_lustre_qb_lockh); offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, hf_lustre_qb_glb_lockh); offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, hf_lustre_qb_padding, 32); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_layout_intent(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_layout_intent); } offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_opc); offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_flags); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_start); offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_end); if (item) proto_item_set_len(item, offset-old_offset); return offset; } int lustre_dissect_struct_acl(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_acl); } proto_tree_add_item(tree, hf_index, tvb, offset, data_len, TRUE); offset+=data_len; offset=add_extra_padding(tvb,offset,pinfo,tree); if (item) proto_item_set_len(item, offset-old_offset); return offset; } /* struct close_data { */ /* struct lustre_handle cd_handle; */ /* struct lu_fid cd_fid; */ /* __u64 cd_data_version; */ /* __u64 cd_reserved[8]; */ /* }; */ static int lustre_dissect_struct_close_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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_close_data); } offset=lustre_dissect_element_handle_cookie(tvb,offset,pinfo,tree); offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_close_fid); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_close_data_ver); offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_close_reserved,8*sizeof(guint64)); if (item) proto_item_set_len(item, offset-old_offset); return offset; } static int lustre_dissect_element_mds_getinfo_vallen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_, guint32 buf_num) { int data_len; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return offset; offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index); offset=add_extra_padding(tvb,offset,pinfo,tree); return offset; } /* ------------------------------------------------------------------------- * * HSM Dissection * * struct hsm_request { * __u32 hr_action; /\* enum hsm_user_action *\/ * __u32 hr_archive_id; /\* archive id, used only with HUA_ARCHIVE *\/ * __u64 hr_flags; /\* request flags *\/ * __u32 hr_itemcount; /\* item count in hur_user_item vector *\/ * __u32 hr_data_len; */ int lustre_dissect_element_hsm_req_action(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) { offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_action); return offset; } int lustre_dissect_element_hsm_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) { /* TODO - pick apart request flags - HSM_FORCE_ACTION, HSM_GHOST_COPY */ offset=dissect_uint64(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_flags); return offset; } static int lustre_dissect_struct_hsm_request(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; proto_tree *tree = NULL; int old_offset; int data_len; guint32 action; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_hsm_request); } action=tvb_get_letohl(tvb,offset); display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(action, lustre_hsm_user_action_t_vals, "Unknown cr_opc")); offset=lustre_dissect_element_hsm_req_action(tvb,offset,pinfo,tree); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_archive_id); offset=lustre_dissect_element_hsm_req_flags(tvb,offset,pinfo,tree); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_itemcount); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_data_len); if (item) proto_item_set_len(item, offset-old_offset); return offset; } /* struct hsm_extent { */ /* __u64 offset; */ /* __u64 length; */ /* } */ static int lustre_dissect_struct_hsm_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_hsm_extent); } offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_offset); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_length); if (item) proto_item_set_len(item, offset-old_offset); return offset; } /* struct hsm_user_item { */ /* struct lu_fid hui_fid; */ /* struct hsm_extent hui_extent; */ /* } __attribute__((packed)); */ static int lustre_dissect_struct_hsm_user_item(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_hsm_user_item); } offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_fid); offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_extent); if (item) proto_item_set_len(item, offset-old_offset); return offset; } /* struct hsm_progress_kernel { */ /* struct lu_fid hpk_fid; */ /* __u64 hpk_cookie; */ /* struct hsm_extent hpk_extent; */ /* __u16 hpk_flags; */ /* __u16 hpk_errval; */ /* __u32 hpk_padding1; */ /* __u64 hpk_data_version; */ /* __u64 hpk_padding2; */ /* } __attribute__((packed)); */ static int lustre_dissect_struct_hsm_progress(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_hsm_progress); } offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_fid); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_cookie); offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_extent); offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_flags); offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_errval); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_extra_padding); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_data_ver); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_extra_padding); if (item) proto_item_set_len(item, offset-old_offset); return offset; } static int lustre_dissect_struct_element_states(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_index); return offset; } /* struct hsm_user_state { */ /* ** Current HSM states, from enum hsm_states. */ /* __u32 hus_states; */ /* __u32 hus_archive_id; */ /* ** The current undergoing action, if there is one */ /* __u32 hus_in_progress_state; */ /* __u32 hus_in_progress_action; */ /* struct hsm_extent hus_in_progress_location; */ /* char hus_extended_info[]; */ /* }; */ static int lustre_dissect_struct_hsm_user_state(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_hsm_user_state); } offset=lustre_dissect_struct_element_states(tvb,offset,pinfo,tree,hf_lustre_hsm_us_states); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_archive_id); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_state); offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_action); offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_location); offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_hsm_us_ext_info, (data_len-(offset-old_offset))); if (item) 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 1) { #ifdef WIRESHARK_COMPAT display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s", (const gchar *)tvb_get_string(tvb, offset, string_len)); #else display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s", (const gchar *)tvb_get_string_enc(wmem_packet_scope(), tvb, offset, string_len, ENC_ASCII)); #endif } offset += string_len; proto_item_set_len(item, offset-old_offset); offset = add_extra_padding(tvb, offset, pinfo, parent_tree); return offset; } 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; string_len = LUSTRE_BUFFER_LEN(buf_num); if(string_len == 0) return offset; item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); 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; } /* ------------------------------------------------------------------------- */ static int lustre_dissect_raw_nstr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 max_len _U_) { proto_item *item = NULL; int old_offset, string_len; char c; old_offset = offset; string_len = -1; do { ++ string_len; c = tvb_get_guint8(tvb, offset + string_len); } while (string_len < max_len && c != '\0'); item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); offset += string_len+1; proto_item_set_len(item, offset-old_offset); return offset; } static int lustre_dissect_raw_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 length _U_) { proto_item *item = NULL; item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, length, TRUE); proto_item_set_len(item, length); return offset+length; } int lustre_dissect_xattr_eavals(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint32 buff_num) { /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] * * array length == sizeof(eavals_lens)/sizeof(uint32) * Buff 1: array of strings (name of xattr) * Buff 2: array of data (data of xattr) * Buff 3: array of data lengths (in buff 2) */ int count, i, size; int namestart, datastart, lenstart, namelen, datalen, lenlen; int nameoffset, dataoffset; proto_item *item = NULL; proto_tree *tree = NULL; namelen = LUSTRE_BUFFER_LEN(buff_num); datalen = LUSTRE_BUFFER_LEN(buff_num+1); lenlen = LUSTRE_BUFFER_LEN(buff_num+2); count = lenlen / sizeof(guint32); namestart = nameoffset = offset; datastart = namestart + namelen; datastart += (8- datastart%8)%8; dataoffset = datastart; lenstart = datastart + datalen; lenstart += (8- lenstart%8)%8; item = proto_tree_add_item(parent_tree, hf_lustre_xattrs, tvb, offset, -1, TRUE); tree = proto_item_add_subtree(item, ett_lustre_xattrs); for (i = 0; i < count; ++i) { int sizeoffset; sizeoffset = lenstart + sizeof(guint32)*i; size = tvb_get_letohl(tvb, sizeoffset); nameoffset = lustre_dissect_raw_nstr(tvb, nameoffset, pinfo, tree, hf_lustre_xattrs_name, (namestart+namelen)-nameoffset); dataoffset = lustre_dissect_raw_data(tvb, dataoffset, pinfo, tree, hf_lustre_xattrs_data, size); dissect_uint32(tvb, sizeoffset, pinfo, tree, hf_lustre_xattrs_size); } offset = lenstart + lenlen; offset += (8- offset%8)%8; proto_item_set_len(item, offset-namestart); return offset; } /* Process REINT opcode requests */ 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: /* 2.x+ [rec_setattr][capa1][mdt_epoch][eadata][cookie_data][ldlm_request] */ /* old? [rec_setattr][ldlm_request] */ offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr); if (LUSTRE_BUFCOUNT > 2) { offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+2) > 0) offset=lustre_dissect_struct_mdt_ioepoch(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch); offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+3); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); } 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_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); /* REINT_CREATE_SLAVE / SYM / RMT_ACL */ if (LUSTRE_BUFCOUNT > 4) { /* for CREATE_SYM this is actually name of target - encoded in mdt_rec_create.cr_mode */ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+3); offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request); } break; case REINT_LINK: /*[mdt_rec_link][filename][ldlm_req] */ offset=lustre_dissect_struct_mdt_rec_link(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; break; case REINT_UNLINK: /* reint_unlink_client: [mdt_rec_unlink][capa1][filename][ldlm_req] */ offset=lustre_dissect_struct_mdt_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); if (LUSTRE_BUFFER_LEN(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_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; } break; case REINT_RENAME: /*mds_rename_unpack : [mdt_rec_rename][filename source][filename target_name][ldlm_request] */ offset=lustre_dissect_struct_mdt_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+4); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+5) > 0) 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_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); offset=lustre_dissect_element_filename(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); break; case REINT_SETXATTR: /* 2.x+ [rec_setxattr][capa1][name][eadata][dlm_req] */ /* old? [rec_setxattr][ldlm_request] */ offset=lustre_dissect_struct_mdt_rec_setxattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr); if (LUSTRE_BUFCOUNT > 2) { offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata_str, LUSTRE_REQ_REC_OFF+3); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; } else if (LUSTRE_BUFCOUNT == 2) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request); 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_mdt_body_handle); offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data, 4); return offset; } int lustre_dissect_struct_lu_ladvise(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; proto_tree *tree = NULL; int old_offset; int data_len; old_offset=offset; data_len = LUSTRE_BUFFER_LEN(buf_num); if (data_len == 0) return 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_ladvise); } offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_start); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_end); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_advice); offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_padding); if (item) proto_item_set_len(item, offset-old_offset); 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) ; if (pb_type == PTL_RPC_MSG_REQUEST) offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); break; case OST_SETATTR: 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_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); 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); if(pb_type==PTL_RPC_MSG_REQUEST) { for (i = 0; i < (LUSTRE_BUFFER_LEN(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 < LUSTRE_BUFCOUNT-2; i++) /* -2 because we have already dissect 2 buffers : ptl + ost */ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_nio); offset=add_extra_padding(tvb, offset, pinfo, tree); } break; case OST_CREATE: 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_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); 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][ldlm_req][capa] */ if ( LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF +1) != 0) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request); offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+2); } break; case OST_GET_INFO: if(pb_type==PTL_RPC_MSG_REQUEST) /* [key] */ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); if (pb_type==PTL_RPC_MSG_REPLY) offset=lustre_dissect_element_filename(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, 1); 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) ; if (pb_type == PTL_RPC_MSG_REQUEST) offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); 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] */ if (pb_type==PTL_RPC_MSG_REPLY) 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) ; if (pb_type == PTL_RPC_MSG_REQUEST) offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); break; case OST_SET_INFO: if(pb_type==PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_element_filename(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) ; case OST_LADVISE: /*[ost_body] in both case */ 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_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_struct_lu_ladvise(tvb, offset, pinfo, tree, hf_lustre_lu_ladvise, LUSTRE_REQ_REC_OFF+2); } break; }; 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) { int i; switch (opc){ case MDS_DISCONNECT: /*[nothing]*/ break; case MDS_GET_ROOT: /*request: [mds body]*/ /*reply: [mds body][capa] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; if (pb_type == PTL_RPC_MSG_REPLY) offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+1); break; case MDS_SETXATTR: if(pb_type==PTL_RPC_MSG_REQUEST) /* [mds body] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; /*if(reply) : [nothing]*/ break; case MDS_GETXATTR: /*request: [mds body][capa][xattr name]*/ /*reply: [mds body][eadata] - ommited on error */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; if(pb_type==PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+1); offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2); } if (pb_type == PTL_RPC_MSG_REPLY) 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_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); if (pb_type == PTL_RPC_MSG_REPLY) { /* [mdt_md][acl][capa1][capa2] */ offset=lustre_dissect_struct_lov_mds_md(tvb, offset, pinfo, tree, hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, hf_lustre_acl, LUSTRE_REPLY_REC_OFF+3); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+4); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+5); } break; case MDS_GETATTR_NAME: if(pb_type==PTL_RPC_MSG_REQUEST) /*[mdt_body]*/ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; /*[nothing in reply]*/ break; case MDS_DONE_WRITING: /*[mdt_body]*/ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; break; case MDS_PIN: /* repbody.. */ /*[mdt_body]*/ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; break; case MDS_SYNC: /*[mdt_body]*/ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; break; case MDS_CLOSE: if(pb_type==PTL_RPC_MSG_REQUEST) { /* [mdt_ioepoch][rec_reint][capa1] */ offset=lustre_dissect_struct_mdt_ioepoch(tvb, offset, pinfo, tree, hf_lustre_mdt_ioepoch); if(LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+1) > 0) offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr); offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_struct_close_data(tvb,offset,pinfo,tree, hf_lustre_close_data, LUSTRE_REQ_REC_OFF+3); } if(pb_type==PTL_RPC_MSG_REPLY) { /* [mdt_body][md][cookie][capa1][capa2] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0) offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+3); offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+4); } 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: /* [mdt_body] but with some different interpration, need to modify the hf : TODO */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_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) { /* [mdt_body][mdt_md][??][capa1][capa2] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0) /* open : ...[ACL]... * unlink, rename : ...[log_cookies]... */ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REPLY_REC_OFF+2); lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+3); lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REPLY_REC_OFF+4); } 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 || pb_type == PTL_RPC_MSG_ERR) /*[obd_connect_data]*/ offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data, 1); break; case MDS_HSM_REQUEST: /* [mdt_body][hsm_request][array of hsm_user_item][generic_data] */ if (pb_type==PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); offset=lustre_dissect_struct_hsm_request(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); for(i = LUSTRE_REQ_REC_OFF+2; i < LUSTRE_BUFCOUNT-1; ++i) { offset=lustre_dissect_struct_hsm_user_item(tvb, offset, pinfo, tree, hf_lustre_hsm_user_item, i); } offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_generic_data, LUSTRE_REQ_REC_OFF+3); } break; case MDS_HSM_PROGRESS: /* [mdt_body][hsm_progress] */ if (pb_type==PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); offset=lustre_dissect_struct_hsm_progress(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); } break; case MDS_HSM_STATE_GET: offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); if (pb_type==PTL_RPC_MSG_REPLY) /* ...[hsm_user_state] */ offset=lustre_dissect_struct_hsm_user_state(tvb, offset, pinfo, tree, hf_lustre_hsm_state_get, LUSTRE_REQ_REC_OFF+1); break; case MDS_GET_INFO: if (pb_type == PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_key, LUSTRE_REQ_REC_OFF); offset=lustre_dissect_element_mds_getinfo_vallen(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_vallen, LUSTRE_REQ_REC_OFF+1); } if (pb_type == PTL_RPC_MSG_REPLY) offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_data, LUSTRE_REQ_REC_OFF); 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; /* [ldlm_reply] */ offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, &ldlm_type); /* Generic Reply: * [mdt_body][mdt_md][acl] * CREATE or GETATTR: * [mdt_body][mdt_md][acl][capa1] * OPEN: * [mdt_body][mdt_md][acl][capa1][capa2] * GETXATTR: * [mdt_body][mdt_md][acl][eadata][eavals][eavals_lens] * * LAYOUT: * [dlm_lvb] * QUOTA: * [dlm_lvb][quota_body] */ /* check if we're done processing */ if (LUSTRE_BUFCOUNT <= 2) break; /* LAYOUT and QUOTA */ if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) == 40) { /* TODO :this code need to be check and test, the * lustre corresponding code isn't 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, LUSTRE_DLM_REPLY_REC_OFF); if (LUSTRE_BUFCOUNT == 3) break; offset = lustre_dissect_struct_quota_body(tvb, offset, pinfo, tree, hf_lustre_qb, LUSTRE_DLM_REPLY_REC_OFF+1); break; } else if ((ldlm_type == LDLM_EXTENT) || (LUSTRE_BUFCOUNT == 3)) { int magic; // ?? magic=tvb_get_letohl(tvb, offset); if (magic == LOV_MAGIC_V1) offset = lustre_dissect_struct_lov_mds_md_v1(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1); else offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb, LUSTRE_DLM_REPLY_REC_OFF+1); break; } if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0) offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, LUSTRE_DLM_REPLY_REC_OFF+1); /* ldlm_intent_server : ACL */ offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, hf_lustre_acl, LUSTRE_DLM_REPLY_REC_OFF+2); if (LUSTRE_BUFCOUNT == 8) { /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] */ offset = lustre_dissect_xattr_eavals(tvb, offset, pinfo, tree, LUSTRE_DLM_REPLY_REC_OFF+3); break; } else if (LUSTRE_BUFCOUNT >= 6) { /* ldlm_intent_open_server : [capa1][capa2] */ /* ldlm_intent_open_server : [capa1] */ offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_DLM_REPLY_REC_OFF+3); offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_DLM_REPLY_REC_OFF+4); } } 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) ; break; case LDLM_BL_CALLBACK: 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) ; offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb, LUSTRE_DLM_REPLY_REC_OFF); } /*reply : [nothing] */ break; case LDLM_GL_CALLBACK: if(pb_type==PTL_RPC_MSG_REQUEST) { /*[ldlm_request] [lvb (for gl_desc)]*/ offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb, LUSTRE_REQ_REC_OFF+1); } if(pb_type==PTL_RPC_MSG_REPLY) /* [ost_lvb] */ offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb, LUSTRE_REPLY_REC_OFF); break; case LDLM_SET_INFO: /* ? [key-string][value-data] */ if(pb_type==PTL_RPC_MSG_REQUEST) { offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ldlm_key, LUSTRE_REQ_REC_OFF); /* key */ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_ldlm_value, LUSTRE_REQ_REC_OFF+1); /* value */ } 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, 1); 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; case MGS_CONFIG_READ: if (pb_type==PTL_RPC_MSG_REQUEST) /* [config_body] */ offset=lustre_dissect_struct_mgs_config_body(tvb,offset,pinfo,tree,hf_lustre_mgs_config_body); if (pb_type==PTL_RPC_MSG_REPLY) /* [config_res] */ offset=lustre_dissect_struct_mgs_config_res(tvb,offset,pinfo,tree,hf_lustre_mgs_config_res); 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_filename(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][eadata] * 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); if(pb_type==PTL_RPC_MSG_REPLY) offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk, LUSTRE_REPLY_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 (keyword == "config") */ if (strcmp( #ifdef WIRESHARK_COMPAT (const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF, tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * LUSTRE_REQ_REC_OFF)), #else (const char *)tvb_get_string_enc(wmem_packet_scope(), tvb, LUSTRE_REQ_REC_OFF, tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * LUSTRE_REQ_REC_OFF), ENC_ASCII), #endif "config") == 0) 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_REPLY_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_REPLY_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; } static int lustre_seq_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 SEQ_QUERY: if (pb_type == PTL_RPC_MSG_REQUEST) offset = lustre_dissect_struct_seq(tvb, offset, pinfo, tree, hf_lustre_seq_opc); offset = lustre_dissect_struct_seq_range(tvb, offset, pinfo, tree); break; default: g_print("error: SEQ Opcode: %d unknown\n", opc); col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); break; }; return offset; } static int lustre_fld_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 FLD_QUERY: if (pb_type == PTL_RPC_MSG_REQUEST) offset = lustre_dissect_struct_seq(tvb, offset, pinfo, tree, hf_lustre_fld_opc); offset = lustre_dissect_struct_seq_range(tvb, offset, pinfo, tree); break; default: g_print("error: FLD Opcode: %d unknown\n", opc); col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); 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) { /* No more buffers to process */ if (LUSTRE_BUFCOUNT == 1) return offset; 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) ; if( (opc >= SEQ_FIRST_OPC) && (opc <= SEQ_LAST_OPC) ) /* SEQ Opcodes */ offset=lustre_seq_opcode_process(tvb, offset, pinfo, tree, opc, pb_type); if( (opc >= FLD_FIRST_OPC) && (opc <= FLD_LAST_OPC) ) /* FLD Opcodes */ offset=lustre_fld_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][capa1][capa2][name][eada] */ offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+3); offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_DLM_INTENT_REC_OFF+4); } if (intent_opc & IT_UNLINK){ /* mdc_intent_unlink_pack(), d'où [opcode][mdt_rec_unlink][capa][name] */ offset=lustre_dissect_struct_mdt_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+1); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } if (intent_opc & IT_GETATTR){ /* mdc_intent_lookup_pack, d'où [mdt_body][capa][name] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ; offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+1); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } if (intent_opc & IT_LOOKUP){ /* mdc_intent_lookup_pack, d'où [mdt_body][capa][name] */ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+1); offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } if (intent_opc & IT_LAYOUT) { /* [layout_intent][eadata] */ offset = lustre_dissect_struct_layout_intent(tvb, offset, pinfo, tree, hf_lustre_layout_intent, LUSTRE_DLM_INTENT_REC_OFF); offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_DLM_INTENT_REC_OFF+1); } if (intent_opc & IT_QUOTA_DQACQ) { offset = lustre_dissect_struct_quota_body(tvb, offset, pinfo, tree, hf_lustre_qb, LUSTRE_DLM_INTENT_REC_OFF); } if (intent_opc & IT_GETXATTR) { /* [mdt_body][capa] */ offset = lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, 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 somme_buflen = 0 ; guint32 i ; /* magic_number = tvb_get_letohl(tvb, 8); */ for (i=0;icinfo, 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;icinfo, 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_element_ptlrpc_body_pb_pre_version(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_pre_version); return offset; } static int lustre_dissect_element_ptlrpc_body_pb_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_ptlrpc_body_pb_padding); return offset; } static int lustre_dissect_element_ptlrpc_body_pb_jobid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) { /* the lenght of the string is 32 bytes max, with \0 inside */ proto_tree_add_item(parent_tree, hf_lustre_ptlrpc_body_pb_jobid, tvb, offset, 32, TRUE); offset+=32; 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, i; guint32 opc, pb_type, pb_version; 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); pb_version = tvb_get_letohl(tvb, offset) & ~LUSTRE_VERSION_MASK; //g_print("msg_v2_version_offset %d : version == %d \n", offset, pb_version); 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); /* pb_pre_versions */ for(i = 0; i < 4; ++i) { offset=lustre_dissect_element_ptlrpc_body_pb_pre_version(tvb, offset, pinfo, tree); } for(i = 0; i < 4; ++i) { offset=lustre_dissect_element_ptlrpc_body_pb_padding(tvb, offset, pinfo, tree); } if (pb_version == LUSTRE_PTLRPC_MSG_VERSION && offset-old_offset < buf_len) { offset=lustre_dissect_element_ptlrpc_body_pb_jobid(tvb, offset, pinfo, tree); } if (offset-old_offset != buf_len) { g_print("ptlbody offset-old:%d buf_len:%d\n", offset-old_offset, buf_len); col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); } 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;icinfo, COL_PROTOCOL, "Lustre"); /*light display*/ 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 = 0; 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, offset, 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, offset, pinfo, lustre_tree, proto_lustre ) ; break; default: break; } } } void proto_register_dcerpc_lustre(void) { static hf_register_info hf[] = { { &hf_lustre_mdt_body, { "mdt body", "lustre.mdt_body", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL }}, { &hf_lustre_mdt_body_fid1, { "Fid1", "lustre.mdt_body.fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_fid2, { "Fid2", "lustre.mdt_body.fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_handle, { "Handle", "lustre.mdt_body.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_valid, { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_size, { "Size", "lustre.mdt_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_mtime, { "Mtime", "lustre.mdt_body.mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_atime, { "Atime", "lustre.mdt_body.atime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_ctime, { "Ctime", "lustre.mdt_body.ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_blocks, { "Blocks", "lustre.mdt_body.blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_ioepoch, { "Ioepoch", "lustre.mdt_body.ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_ino, { "Ino", "lustre.mdt_body.ino", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_fsuid, { "Fsuid", "lustre.mdt_body.fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_fsgid, { "Fsgid", "lustre.mdt_body.fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_capability, { "Capability", "lustre.mdt_body.capability", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_mode, { "Mode", "lustre.mdt_body.mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_uid, { "Uid", "lustre.mdt_body.uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_gid, { "Gid", "lustre.mdt_body.gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_flags, { "Flags", "lustre.mdt_body.flags", FT_UINT32, BASE_HEX, VALS(lustre_mds_flags_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_body_rdev, { "Rdev", "lustre.mdt_body.rdev", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_nlink, { "Nlink", "lustre.mdt_body.nlink", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_generation, { "Generation", "lustre.mdt_body.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_suppgid, { "Suppgid", "lustre.mdt_body.suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_eadatasize, { "Eadatasize", "lustre.mdt_body.eadatasize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_aclsize, { "Aclsize", "lustre.mdt_body.aclsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_max_mdsize, { "Max Mdsize", "lustre.mdt_body.max_mdsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_max_cookiesize, { "Max Cookiesize", "lustre.mdt_body.max_cookiesize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_uid_h, { "Uid H", "lustre.mdt_body.uid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_gid_h, { "Gid H", "lustre.mdt_body.gid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_5, { "Padding 5", "lustre.mdt_body.padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_6, { "Padding 6", "lustre.mdt_body.padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_7, { "Padding 7", "lustre.mdt_body.padding_7", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_8, { "Padding 8", "lustre.mdt_body.padding_8", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_9, { "Padding 9", "lustre.mdt_body.padding_9", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_padding_10, { "Padding 10", "lustre.mdt_body.padding_10", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr, { "mdt rec setattr", "lustre.mdt_rec_setattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_setattr_sa_opcode, { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_cap, { "Sa Cap", "lustre.mdt_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fsuid, { "Sa Fsuid", "lustre.mdt_rec_setattr.sa_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fsuid_h, { "Sa Fsuid H", "lustre.mdt_rec_setattr.sa_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fsgid, { "Sa Fsgid", "lustre.mdt_rec_setattr.sa_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fsgid_h, { "Sa Fsgid H", "lustre.mdt_rec_setattr.sa_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_suppgid, { "Sa Suppgid", "lustre.mdt_rec_setattr.sa_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_suppgid_h, { "Sa Suppgid H", "lustre.mdt_rec_setattr.sa_suppgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_1, { "Sa Padding 1", "lustre.mdt_rec_setattr.sa_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_1_h, { "Sa Padding 1 H", "lustre.mdt_rec_setattr.sa_padding_1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fid, { "Sa Fid", "lustre.mdt_rec_setattr.sa_fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setattr_sa_valid, { "Sa Valid", "lustre.mdt_rec_setattr.sa_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_uid, { "Sa Uid", "lustre.mdt_rec_setattr.sa_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_gid, { "Sa Gid", "lustre.mdt_rec_setattr.sa_gid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_size, { "Sa Size", "lustre.mdt_rec_setattr.sa_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_blocks, { "Sa Blocks", "lustre.mdt_rec_setattr.sa_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_mtime, { "Sa Mtime", "lustre.mdt_rec_setattr.sa_mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setattr_sa_atime, { "Sa Atime", "lustre.mdt_rec_setattr.sa_atime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setattr_sa_ctime, { "Sa Ctime", "lustre.mdt_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setattr_sa_attr_flags, { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_mode, { "Sa Mode", "lustre.mdt_rec_setattr.sa_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_2, { "Sa Padding 2", "lustre.mdt_rec_setattr.sa_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_projid, { "Sa Projid", "lustre.mdt_rec_setattr.sa_projid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_4, { "Sa Padding 4", "lustre.mdt_rec_setattr.sa_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_5, { "Sa Padding 5", "lustre.mdt_rec_setattr.sa_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create, { "mdt rec create", "lustre.mdt_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_create_cr_opcode, { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_cap, { "Cr Cap", "lustre.mdt_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fsuid, { "Cr Fsuid", "lustre.mdt_rec_create.cr_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fsuid_h, { "Cr Fsuid H", "lustre.mdt_rec_create.cr_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fsgid, { "Cr Fsgid", "lustre.mdt_rec_create.cr_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fsgid_h, { "Cr Fsgid H", "lustre.mdt_rec_create.cr_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_suppgid1, { "Cr Suppgid1", "lustre.mdt_rec_create.cr_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_suppgid1_h, { "Cr Suppgid1 H", "lustre.mdt_rec_create.cr_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_suppgid2, { "Cr Suppgid2", "lustre.mdt_rec_create.cr_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_suppgid2_h, { "Cr Suppgid2 H", "lustre.mdt_rec_create.cr_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fid1, { "Cr Fid1", "lustre.mdt_rec_create.cr_fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_create_cr_fid2, { "Cr Fid2", "lustre.mdt_rec_create.cr_fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_create_cr_old_handle, { "Cr Old Handle", "lustre.mdt_rec_create.cr_old_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_create_cr_time, { "Cr Time", "lustre.mdt_rec_create.cr_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_create_cr_rdev, { "Cr Rdev", "lustre.mdt_rec_create.cr_rdev", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_ioepoch, { "Cr Ioepoch", "lustre.mdt_rec_create.cr_ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_padding_1, { "Cr Padding 1", "lustre.mdt_rec_create.cr_padding_1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_mode, { "Cr Mode", "lustre.mdt_rec_create.cr_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_bias, { "Cr Bias", "lustre.mdt_rec_create.cr_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_flags_l, { "Cr Flags L", "lustre.mdt_rec_create.cr_flags_l", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_flags_h, { "Cr Flags H", "lustre.mdt_rec_create.cr_flags_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_umask, { "Cr Umask", "lustre.mdt_rec_create.cr_umask", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_padding_4, { "Cr Padding 4", "lustre.mdt_rec_create.cr_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link, { "mdt rec link", "lustre.mdt_rec_link", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_link_lk_opcode, { "Lk Opcode", "lustre.mdt_rec_link.lk_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_cap, { "Lk Cap", "lustre.mdt_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fsuid, { "Lk Fsuid", "lustre.mdt_rec_link.lk_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fsuid_h, { "Lk Fsuid H", "lustre.mdt_rec_link.lk_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fsgid, { "Lk Fsgid", "lustre.mdt_rec_link.lk_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fsgid_h, { "Lk Fsgid H", "lustre.mdt_rec_link.lk_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_suppgid1, { "Lk Suppgid1", "lustre.mdt_rec_link.lk_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_suppgid1_h, { "Lk Suppgid1 H", "lustre.mdt_rec_link.lk_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_suppgid2, { "Lk Suppgid2", "lustre.mdt_rec_link.lk_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_suppgid2_h, { "Lk Suppgid2 H", "lustre.mdt_rec_link.lk_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fid1, { "Lk Fid1", "lustre.mdt_rec_link.lk_fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_link_lk_fid2, { "Lk Fid2", "lustre.mdt_rec_link.lk_fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_link_lk_time, { "Lk Time", "lustre.mdt_rec_link.lk_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_link_lk_padding_1, { "Lk Padding 1", "lustre.mdt_rec_link.lk_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_2, { "Lk Padding 2", "lustre.mdt_rec_link.lk_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_3, { "Lk Padding 3", "lustre.mdt_rec_link.lk_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_4, { "Lk Padding 4", "lustre.mdt_rec_link.lk_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_bias, { "Lk Bias", "lustre.mdt_rec_link.lk_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_5, { "Lk Padding 5", "lustre.mdt_rec_link.lk_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_6, { "Lk Padding 6", "lustre.mdt_rec_link.lk_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_7, { "Lk Padding 7", "lustre.mdt_rec_link.lk_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_8, { "Lk Padding 8", "lustre.mdt_rec_link.lk_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_padding_9, { "Lk Padding 9", "lustre.mdt_rec_link.lk_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink, { "mdt rec unlink", "lustre.mdt_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_unlink_ul_opcode, { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_cap, { "Ul Cap", "lustre.mdt_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fsuid, { "Ul Fsuid", "lustre.mdt_rec_unlink.ul_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fsuid_h, { "Ul Fsuid H", "lustre.mdt_rec_unlink.ul_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fsgid, { "Ul Fsgid", "lustre.mdt_rec_unlink.ul_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fsgid_h, { "Ul Fsgid H", "lustre.mdt_rec_unlink.ul_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_suppgid1, { "Ul Suppgid1", "lustre.mdt_rec_unlink.ul_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_suppgid1_h, { "Ul Suppgid1 H", "lustre.mdt_rec_unlink.ul_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_suppgid2, { "Ul Suppgid2", "lustre.mdt_rec_unlink.ul_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_suppgid2_h, { "Ul Suppgid2 H", "lustre.mdt_rec_unlink.ul_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fid1, { "Ul Fid1", "lustre.mdt_rec_unlink.ul_fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_unlink_ul_fid2, { "Ul Fid2", "lustre.mdt_rec_unlink.ul_fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_unlink_ul_time, { "Ul Time", "lustre.mdt_rec_unlink.ul_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_unlink_ul_padding_2, { "Ul Padding 2", "lustre.mdt_rec_unlink.ul_padding_2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_3, { "Ul Padding 3", "lustre.mdt_rec_unlink.ul_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_4, { "Ul Padding 4", "lustre.mdt_rec_unlink.ul_padding_4", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_5, { "Ul Padding 5", "lustre.mdt_rec_unlink.ul_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_bias, { "Ul Bias", "lustre.mdt_rec_unlink.ul_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_mode, { "Ul Mode", "lustre.mdt_rec_unlink.ul_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_6, { "Ul Padding 6", "lustre.mdt_rec_unlink.ul_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_7, { "Ul Padding 7", "lustre.mdt_rec_unlink.ul_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_8, { "Ul Padding 8", "lustre.mdt_rec_unlink.ul_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_padding_9, { "Ul Padding 9", "lustre.mdt_rec_unlink.ul_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename, { "mdt rec rename", "lustre.mdt_rec_rename", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_rename_rn_opcode, { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_cap, { "Rn Cap", "lustre.mdt_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fsuid, { "Rn Fsuid", "lustre.mdt_rec_rename.rn_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fsuid_h, { "Rn Fsuid H", "lustre.mdt_rec_rename.rn_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fsgid, { "Rn Fsgid", "lustre.mdt_rec_rename.rn_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fsgid_h, { "Rn Fsgid H", "lustre.mdt_rec_rename.rn_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_suppgid1, { "Rn Suppgid1", "lustre.mdt_rec_rename.rn_suppgid1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_suppgid1_h, { "Rn Suppgid1 H", "lustre.mdt_rec_rename.rn_suppgid1_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_suppgid2, { "Rn Suppgid2", "lustre.mdt_rec_rename.rn_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_suppgid2_h, { "Rn Suppgid2 H", "lustre.mdt_rec_rename.rn_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fid1, { "Rn Fid1", "lustre.mdt_rec_rename.rn_fid1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_rename_rn_fid2, { "Rn Fid2", "lustre.mdt_rec_rename.rn_fid2", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_rename_rn_time, { "Rn Time", "lustre.mdt_rec_rename.rn_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_rename_rn_padding_1, { "Rn Padding 1", "lustre.mdt_rec_rename.rn_padding_1", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_2, { "Rn Padding 2", "lustre.mdt_rec_rename.rn_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_3, { "Rn Padding 3", "lustre.mdt_rec_rename.rn_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_4, { "Rn Padding 4", "lustre.mdt_rec_rename.rn_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_bias, { "Rn Bias", "lustre.mdt_rec_rename.rn_bias", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_mode, { "Rn Mode", "lustre.mdt_rec_rename.rn_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_5, { "Rn Padding 5", "lustre.mdt_rec_rename.rn_padding_5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_6, { "Rn Padding 6", "lustre.mdt_rec_rename.rn_padding_6", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_7, { "Rn Padding 7", "lustre.mdt_rec_rename.rn_padding_7", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_padding_8, { "Rn Padding 8", "lustre.mdt_rec_rename.rn_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr, { "mdt rec setxattr", "lustre.mdt_rec_setxattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_setxattr_sx_opcode, { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_cap, { "Sx Cap", "lustre.mdt_rec_setxattr.sx_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fsuid, { "Sx Fsuid", "lustre.mdt_rec_setxattr.sx_fsuid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fsuid_h, { "Sx Fsuid H", "lustre.mdt_rec_setxattr.sx_fsuid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fsgid, { "Sx Fsgid", "lustre.mdt_rec_setxattr.sx_fsgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fsgid_h, { "Sx Fsgid H", "lustre.mdt_rec_setxattr.sx_fsgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_suppgid1, { "Sx Suppgid1", "lustre.mdt_rec_setxattr.sx_suppgid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_suppgid1_h, { "Sx Suppgid1 H", "lustre.mdt_rec_setxattr.sx_suppgid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_suppgid2, { "Sx Suppgid2", "lustre.mdt_rec_setxattr.sx_suppgid2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_suppgid2_h, { "Sx Suppgid2 H", "lustre.mdt_rec_setxattr.sx_suppgid2_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fid, { "Sx Fid", "lustre.mdt_rec_setxattr.sx_fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setxattr_sx_padding_1, { "Sx Padding 1", "lustre.mdt_rec_setxattr.sx_padding_1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_2, { "Sx Padding 2", "lustre.mdt_rec_setxattr.sx_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_3, { "Sx Padding 3", "lustre.mdt_rec_setxattr.sx_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_valid, { "Sx Valid", "lustre.mdt_rec_setxattr.sx_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_time, { "Sx Time", "lustre.mdt_rec_setxattr.sx_time",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setxattr_sx_padding_5, { "Sx Padding 5", "lustre.mdt_rec_setxattr.sx_padding_5", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_6, { "Sx Padding 6", "lustre.mdt_rec_setxattr.sx_padding_6", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_7, { "Sx Padding 7", "lustre.mdt_rec_setxattr.sx_padding_7", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_size, { "Sx Size", "lustre.mdt_rec_setxattr.sx_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_flags, { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_8, { "Sx Padding 8", "lustre.mdt_rec_setxattr.sx_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_9, { "Sx Padding 9", "lustre.mdt_rec_setxattr.sx_padding_9", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_10, { "Sx Padding 10", "lustre.mdt_rec_setxattr.sx_padding_10", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_11, { "Sx Padding 11", "lustre.mdt_rec_setxattr.sx_padding_11", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_handle_cookie, { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_HEX, 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_ptlrpc_body_pb_pre_version, { "Pb Pre-Version", "lustre.ptlrpc_body.pb_pre_version", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_padding, { "Pb Padding", "lustre.ptlrpc_body.pb_padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_jobid, { "Pb JobId", "lustre.ptlrpc_body.pb_jobid", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_handle, { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_ost_lvb_lvb_atime, { "Lvb Atime", "lustre.ost_lvb.lvb_atime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, 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_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_HEX, 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_ptlrpc_body_pb_op_flags, { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_ctime, { "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, 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_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_mtime, { "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_ost_lvb_lvb_mtime_ns, { "Lvb Mtime NS", "lustre.ost_lvb.lvb_mtime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_atime_ns, { "Lvb Atime NS", "lustre.ost_lvb.lvb_atime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_ctime_ns, { "Lvb Ctime NS", "lustre.ost_lvb.lvb_ctime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_padding, { "padding", "lustre.ost_lvb.padding", FT_UINT32, BASE_HEX, 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_HEX, 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_seq, { "L Object SEQ", "lustre.lov_ost_data_v1.l_object_seq", 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_HEX, 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_lustre_msg_v1_lm_flags, { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_HEX, 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_HEX, 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_NONE, BASE_NONE, 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_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_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_obd_connect_data_ocd_max_easize, { "Ocd Max LOV EA Size", "lustre.obd_connect_data.ocd_max_easize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_obd_connect_data_ocd_instance, { "Ocd Instance", "lustre.obd_connect_data.ocd_instance", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_obd_connect_data_ocd_maxbytes, { "Ocd Max Stripe Size (Bytes)", "lustre.obd_connect_data.ocd_maxbytes", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_obd_connect_data_ocd_maxmodrpcs, { "Ocd Max Parallel Modify RPCs", "lustre.obd_connect_data.ocd_maxmodrpcs", FT_UINT16, 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_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_max_brw, /* TODO : create the corresponding value_string */ { "Ioo Max BRW Size", "lustre.obd_ioobj.ioo_max_brw", 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_INT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_niobuf_remote_flags, { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ll_fid_id, { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_HEX, 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_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_ioobj_ioo_seq, { "Ioo Gr", "lustre.obd_ioobj.ioo_seq", 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_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_NONE, 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_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_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_NONE, 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_HEX, 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_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_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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llog_rec_hdr_padding, { "Padding", "lustre.llog_rec_hdr.padding", 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_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_xattr_name, { "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_llog_cookie, { "llog cookie", "lustre.llog_cookie", 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_mds_xattr_eadata_str, { "mds xattr eadata", "lustre.mds_xattr_eadata.str", FT_STRING, 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_mds_md_data, { "mds md data", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_v1, { "lov mds md", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_magic, { "Lmm Magic", "lustre.lov_mds_md.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_stripe_size, { "Lmm Stripe Size", "lustre.lov_mds_md.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_object_id, { "Lmm Object Id", "lustre.lov_mds_md.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_oi, { "Lmm Object Id", "lustre.lov_mds_md.lmm_oi", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_object_seq, { "Lmm Object SEQ", "lustre.lov_mds_md.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_stripe_count, { "Lmm Stripe Count", "lustre.lov_mds_md.lmm_stripe_count", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_pattern, { "Lmm Pattern", "lustre.lov_mds_md.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_layout_gen, { "Lmm Layout Generation", "lustre.lov_mds_md.lmm_layout_gen", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_mds_md_lmm_pool_name, { "Lmm Poolname", "lustre.lov_mds_md.lmm_poolname", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_lov_mds_md_lmm_objects, { "Lmm Objects", "lustre.lov_mds_md.lmm_objects", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_ost_id_oi_id, { "OI Object Id", "lustre.ost_id.oi.oi_id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_id_oi_seq, { "OI Object Seq", "lustre.ost_id.oi.oi_seq", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obdo_o_valid, { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_reply_lock_flags, { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, #define WSHARK_INIT_DATA #include "lustre_dlm_flags_wshark.c" #undef WSHARK_INIT_DATA { &hf_lustre_obdo_o_misc, { "O Misc", "lustre.obdo.o_misc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_request_lock_handle, { "Lock Handle", "lustre.ldlm_request.lock_handle", FT_NONE, BASE_NONE, 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_llog_gen_rec_lgr_tail, { "Lgr Tail", "lustre.llog_gen_rec.lgr_tail", FT_NONE, BASE_NONE, 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_llog_setattr_rec_padding, { "Padding", "lustre.llog_setattr_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llog_cookie_lgc_lgl, { "Lgc Lgl", "lustre.llog_cookie.lgc_lgl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obd_quotactl_qc_dqinfo, { "Qc Dqinfo", "lustre.obd_quotactl.qc_dqinfo", FT_NONE, BASE_NONE, 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_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_llog_logid_rec_padding5, { "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, /*-------------------------------------------------------------------------------------------------------------*/ /*all this flags are uint64, but I don't find the way to use something like TFS() with a Uint64*/ /*like TFS() with a Uint64 */ { &hf_lustre_ldlm_intent_opc_open, { "open", "lustre.ldlm_intent.opc_open", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_OPEN, "", HFILL } }, { &hf_lustre_ldlm_intent_opc_creat, { "creat", "lustre.ldlm_intent.opc_creat", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_CREAT , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_readdir, { "readdir", "lustre.ldlm_intent.opc_readdir", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_READDIR , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_getattr, { "getattr", "lustre.ldlm_intent.opc_getattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETATTR, "", HFILL } }, { &hf_lustre_ldlm_intent_opc_lookup, { "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LOOKUP , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_unlink, { "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_UNLINK , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_trunc, { "trunc", "lustre.ldlm_intent.opc_trunc", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_TRUNC , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_getxattr, { "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETXATTR , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_exec, { "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_EXEC , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_pin, { "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_PIN , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_layout, { "layout", "lustre.ldlm_intent.opc_layout", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LAYOUT , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_q_dqacq, { "quota dqacq", "lustre.ldlm_intent.opc_quota_dqacq", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_DQACQ , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_q_conn, { "quota conn", "lustre.ldlm_intent.opc_quota_conn", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_CONN , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_setxattr, { "setxattr", "lustre.ldlm_intent.opc_setxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_SETXATTR , "", 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_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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llogd_conn_body_lgdc_gen, { "Lgdc Gen", "lustre.llogd_conn_body.lgdc_gen", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llog_log_hdr_llh_tail, { "Llh Tail", "lustre.llog_log_hdr.llh_tail", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_size, { "O Size", "lustre.obdo.o_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_extent_start, { "Start", "lustre.ldlm_extent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llog_size_change_rec_lsc_hdr, { "Lsc Hdr", "lustre.llog_size_change_rec.lsc_hdr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llog_logid_lgl_oseq, { "Lgl SEQ", "lustre.llog_logid.lgl_oseq", FT_UINT64, BASE_DEC, 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_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_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_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_OCT, 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_NONE, NULL, 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_obdo_o_handle, { "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_atime, { "O Atime", "lustre.obdo.o_atime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, 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_ldlm_lock_desc_l_policy_data, { "L Policy Data", "lustre.ldlm_lock_desc.l_policy_data", FT_NONE, BASE_NONE, 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_qunit_data_padding, { "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_quota_adjust_qunit_qaq_flags, { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_HEX, 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_vals), 0, "", HFILL }}, { &hf_lustre_obdo_o_seq, { "O SEQ", "lustre.obdo.o_seq", FT_UINT64, 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_NONE, 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_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_llog_unlink_rec_lur_hdr, { "Lur Hdr", "lustre.llog_unlink_rec.lur_hdr", FT_NONE, BASE_NONE, 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_llog_setattr_rec_lsr_ogen, { "Lsr Ogen", "lustre.llog_setattr_rec.lsr_ogen", 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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_ioepoch, { "O IOEpoch", "lustre.obdo.o_ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ost_body_oa, { "Oa", "lustre.ost_body.oa", FT_NONE, BASE_NONE, 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_HEX, 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(&lnet_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(&lnet_flags_set_truth), LLOG_F_IS_CAT, "", HFILL } }, { &hf_lustre_llog_hdr_llh_flag_is_play, { "LLOG_F_IS_PLAIN", "lustre.lustre.llog_log_hdr.llh_flag_play", FT_BOOLEAN, 32, TFS(&lnet_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_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_llog_catid_lci_padding1, { "Lci Padding1", "lustre.llog_catid.lci_padding1", FT_UINT32, 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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llog_gen_rec_lgr_gen, { "Lgr Gen", "lustre.llog_gen_rec.lgr_gen", FT_NONE, BASE_NONE, 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_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_NONE, 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_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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_ldlm_reply_lock_desc, { "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE, BASE_NONE, 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_cfg_marker_cm_flags, { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_HEX, 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_ldlm_request_lock_desc, { "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_flags, { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_HEX, 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_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_obdo_o_mtime, { "O Mtime", "lustre.obdo.o_mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_blksize, { "O Blksize", "lustre.obdo.o_blksize", 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_ldlm_reply_lock_handle, { "Lock Handle", "lustre.ldlm_reply.lock_handle", FT_NONE, BASE_NONE, 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_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_llog_logid_rec_lid_tail, { "Lid Tail", "lustre.llog_logid_rec.lid_tail", FT_NONE, BASE_NONE, 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_uid_h, { "O Uid H", "lustre.obdo.o_uid_h", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obdo_o_gid_h, { "O Gid H", "lustre.obdo.o_gid_h", FT_UINT32, 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_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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llogd_body_lgd_llh_flags, { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, 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_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_llog_logid_rec_padding4, { "Padding4", "lustre.llog_logid_rec.padding4", 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_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_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_NONE, 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_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_HEX, 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_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_llog_log_hdr_llh_tgtuuid, { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", FT_STRING, BASE_NONE, 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_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_NONE, 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_llog_log_hdr_llh_timestamp, { "Llh Timestamp", "lustre.llog_log_hdr.llh_timestamp", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, 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, ABSOLUTE_TIME_LOCAL, 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_parent_ver, { "O Parent VER", "lustre.obdo.o_parent_ver", FT_UINT32, BASE_HEX, 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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_parent_oid, { "O Parent OID", "lustre.obdo.o_parent_oid", FT_UINT32, BASE_HEX, 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_NONE, 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_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_parent_seq, { "O Parent SEQ", "lustre.obdo.o_parent_seq", FT_UINT64, 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_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_mgs_config_body, { "mgs config body", "lustre.mgs_config_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_body_name, { "mcb name", "lustre.mgs_config_body.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_body_offset, { "mcb offset", "lustre.mgs_config_body.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_body_type, { "mcb type", "lustre.mgs_config_body.type", FT_UINT16, BASE_DEC, VALS(lustre_mgs_config_body_types), 0, "", HFILL }}, { &hf_lustre_mgs_config_body_reserved, { "mcb reserved", "lustre.mgs_config_body.type", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_body_bits, { "mcb bit shift", "lustre.mgs_config_body.type", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_body_units, { "mcb units", "lustre.mgs_config_body.type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_res, { "mgs config res", "lustre.mgs_config_res", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_res_offset, { "mcr offset", "lustre.mgs_config_res.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_config_res_size, { "mcr size", "lustre.mgs_config_res.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, /* -------------------------------------------------------------------- */ { &hf_lustre_ost_lvb, { "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_xattrs, { "XATTR", "lustre.xattr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_xattrs_name, { "xattr name", "lustre.xattr.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_xattrs_data, { "xattr data", "lustre.xattr.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_xattrs_size, { "xattr size", "lustre.xattr.size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obdo_o_ctime, { "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, 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_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_vals), 0, "", HFILL }}, { &hf_lustre_llog_setattr_rec_lsr_tail, { "Lsr Tail", "lustre.llog_setattr_rec.lsr_tail", FT_NONE, BASE_NONE, 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_NONE, 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, ABSOLUTE_TIME_LOCAL, 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_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obd_dqblk_dqb_btime, { "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_obd_dqblk_dqb_ihardlimit, { "Dqb Ihardlimit", "lustre.obd_dqblk.dqb_ihardlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, /* seq */ { &hf_lustre_seq_opc, { "Seq OPC", "lustre.seq_opc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_seq_range, { "Seq Range", "lustre.seq_range", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_seq_range_start, { "Seq Range Start", "lustre.seq_range.start", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_seq_range_end, { "Seq Range End", "lustre.seq_range.end", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_seq_range_index, { "Seq Range Index", "lustre.seq_range.index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_seq_range_flags, { "Seq Range Flags", "lustre.seq_range.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, /* fld */ { &hf_lustre_fld_opc, { "Fld OPC", "lustre.fld_opc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_fld_range, { "Fld Range", "lustre.fld_range", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_fld_range_start, { "Fld Range Start", "lustre.fld_range.start", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_fld_range_end, { "Fld Range End", "lustre.fld_range.end", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_fld_range_index, { "Fld Range Index", "lustre.fld_range.index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_fld_range_flags, { "Fld Range Flags", "lustre.fld_range.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, /* struct mdt_ioepoch */ { &hf_lustre_mdt_ioepoch, { "MDT ioepoch", "lustre.mdt_ioepoch", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_ioepoch_handle, { "Handle", "lustre.mdt_ioepoch.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_ioepoch_ioepoch, { "ioepoch", "lustre.mdt_ioepoch.ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_ioepoch_flags, { "flags", "lustre.mdt_ioepoch.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_ioepoch_padding, { "Padding", "lustre.mdt_ioepoch.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, /* struct lustre_capa */ { &hf_lustre_capa, { "Capability", "lustre.capa", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_capa_fid, { "Capa fid", "lustre.capa.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_capa_opc, { "Capa opc", "lustre.capa.opc", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_capa_uid, { "Capa uid", "lustre.capa.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_capa_gid, { "Capa gid", "lustre.capa.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_capa_flags, { "Capa flags", "lustre.capa.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_capa_keyid, { "Capa keyid", "lustre.capa.keyid", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_capa_timeout, { "Capa timeout", "lustre.capa.timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_capa_expiry, { "Capa expiry", "lustre.capa.expiry", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_capa_hmac, { "Capa hmac", "lustre.capa.hmac", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, /* ACL */ { &hf_lustre_acl, { "ACL", "lustre.acl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, /* MDT Getinfo */ { &hf_lustre_mdt_getinfo_key, { "MDT getinfo key", "lustre.mdt_getinfo.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_getinfo_vallen, { "MDT getinfo Val Len", "lustre.mdt_getinfo.vallen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_getinfo_data, { "MDT getinfo data", "lustre.mdt_getinfo.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, /* Close Data */ { &hf_lustre_close_data, { "MDT Close", "lustre.mdt_close", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_close_fid, { "Close FID", "lustre.mdt_close.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_close_data_ver, { "Close data version", "lustre.mdt_close.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_close_reserved, { "Close Reserved Space", "lustre.mdt_close.reserved", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, /* LDLM SET INFO */ { &hf_lustre_ldlm_key, { "LDLM Set Info Key", "lustre.ldlm.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_value, { "LDLM Set Info Value", "lustre.ldlm.value", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, /* HSM Request */ { &hf_lustre_hsm_request, { "HSM Request", "lustre.hsm_req", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_req_action, { "HSM Req Action", "lustre.hsm_req.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, { &hf_lustre_hsm_req_archive_id, { "HSM Req Archive ID", "lustre.hsm_req.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_req_flags, { "HSM Req Flags", "lustre.hsm_req.flags", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_req_itemcount, { "HSM Req Itemcount", "lustre.hsm_req.itemcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_req_data_len, { "HSM Req Data Length", "lustre.hsm_req.data_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_user_item, { "HSM User Item", "lustre.user_item", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_user_item_fid, { "HSM User Item FID", "lustre.user_item.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_user_item_extent, { "HSM User Item Extent", "lustre.user_item.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_extent, { "HSM Extent", "lustre.hsm_extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_extent_offset, { "HSM Extent Offset", "lustre.hsm_extent.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_extent_length, { "HSM Extent Length", "lustre.hsm_extent.len", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_progress, { "HSM Progress", "lustre.hsm_progress", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_fid, { "HSM Prog FID", "lustre.hsm_progress.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_cookie, { "HSM Prog Cookie", "lustre.hsm_progress.cookie", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_extent, { "HSM Prog Extent", "lustre.hsm_progress.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_flags, { "HSM Prog Flags", "lustre.hsm_progress.flags", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_errval, { "HSM Prog Error Val", "lustre.hsm_progress.errval", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_prog_data_ver, { "HSM Prog Data Version", "lustre.hsm_progress.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_state_get, { "HSM State GET", "lustre.hsm_state_get", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_us_states, { "States", "lustre.hsm_state_get.states", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_us_archive_id, { "Archive ID", "lustre.hsm_state_get.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_us_in_prog_state, { "In Progress State", "lustre.hsm_state_get.in_prog.state", FT_UINT32, BASE_HEX, VALS(lustre_hsm_progress_state_t_vals), 0, "", HFILL } }, { &hf_lustre_hsm_us_in_prog_action, { "In Progress Action", "lustre.hsm_state_get.in_prog.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, { &hf_lustre_hsm_us_in_prog_location, { "In Progress Extent", "lustre.hsm_state_get.in_prog.location", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_hsm_us_ext_info, { "Extended Info", "lustre.hsm_state_get.ext_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb, { "Quota Body", "lustre.quota_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb_fid, { "Fid", "lustre.quota_body.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb_id, { "ID", "lustre.quota_body.id", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb_flags, { "Flags", "lustre.quota_body.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_qb_padding, { "padding", "lustre.quota_body.padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb_count, { "Count", "lustre.quota_body.count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_qb_usage, { "Usage", "lustre.quota_body.usage", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_qb_slv_ver, { "Slave Ver", "lustre.quota_body.slv_ver", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_qb_lockh, { "Per-ID Lock Handle", "lustre.quota_body.lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qb_glb_lockh, { "Global Lock Handle", "lustre.quota_body.glb_lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qid_fid, { "Fid", "lustre.lquota_id.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_qid_uid, { "UID", "lustre.lquota_id.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_qid_gid, { "GID", "lustre.lquota_id.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_layout_intent, { "Layout Intent", "lustre.layout_intent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_layout_intent_opc, { "Op Code", "lustre.layout_intent.opc", FT_UINT32, BASE_HEX, VALS(lustre_layout_intent_opc_values), 0, "", HFILL } }, { &hf_lustre_layout_intent_flags, { "Flags", "lustre.layout_intent.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_layout_intent_start, { "Start", "lustre.layout_intent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_layout_intent_end, { "End", "lustre.layout_intent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, { &hf_lustre_generic_data, { "generic data", "lustre.generic_data", FT_NONE, BASE_NONE, 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_mds_md_v3, &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_obd_quotactl, &ett_lustre_obd_dqinfo, &ett_lustre_obd_dqblk, &ett_lustre_quota_adjust_qunit, &ett_lustre_mdt_body, &ett_lustre_mdt_rec_setattr, &ett_lustre_mdt_rec_create, &ett_lustre_mdt_rec_link, &ett_lustre_mdt_rec_unlink, &ett_lustre_mdt_rec_rename, &ett_lustre_mdt_rec_setxattr, &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_lock_desc, &ett_lustre_ldlm_request, &ett_lustre_lustre_handle, &ett_lustre_ldlm_reply, &ett_lustre_mgs_send_param, &ett_lustre_mgs_target_info, &ett_lustre_mgs_config_body, &ett_lustre_mgs_config_res, &ett_lustre_cfg_marker, &ett_lustre_llog_catid, &ett_lustre_llog_logid, &ett_lustre_lov_mds_md, &ett_lustre_llog_rec_hdr, &ett_lustre_llog_rec_tail, &ett_lustre_llog_logid_rec, &ett_lustre_llog_unlink_rec, &ett_lustre_llog_setattr_rec, &ett_lustre_llog_size_change_rec, &ett_lustre_llog_gen, &ett_lustre_llog_gen_rec, &ett_lustre_llog_log_hdr, &ett_lustre_llog_cookie, &ett_lustre_llogd_body, &ett_lustre_llogd_conn_body, &ett_lustre_obdo, &ett_lustre_ost_body, &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, &ett_lustre_seq_range, &ett_lustre_fld_range, &ett_lustre_mdt_ioepoch, &ett_lustre_capa, &ett_lustre_close_data, &ett_lustre_acl, &ett_lustre_ladvise, &ett_lustre_hsm_request, &ett_lustre_hsm_user_item, &ett_lustre_hsm_extent, &ett_lustre_hsm_progress, &ett_lustre_hsm_user_state, &ett_lustre_quota_body, &ett_lustre_lquota_id, &ett_lustre_layout_intent, &ett_lustre_xattrs, &ett_lustre_ost_id, }; 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_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", CONNMGR_REQUEST_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", CONNMGR_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", OSC_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", OST_IO_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", OST_CREATE_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MDS_REQUEST_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", LDLM_CB_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle); dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MDS_SETATTR_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MDS_READPAGE_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MGC_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MGS_REQUEST_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", MGS_REPLY_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", OST_REQUEST_PORTAL , lustre_handle); dissector_add_uint("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle); dissector_add_uint("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle); dissector_add_uint("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle); dissector_add_uint("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle); }