* By Gerald Combs <gerald@wireshark.org>
* 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
*/
#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 */
} 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,
} ldlm_cmd_t;
#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_FL_LOCK_CHANGED 0x000001
#define LDLM_FL_BLOCK_GRANTED 0x000002
#define LDLM_FL_BLOCK_CONV 0x000004
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
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 = -1;
static gint ett_lustre_llog_rec_tail = -1;
static gint ett_lustre_lov_mds_md = -1;
-static gint ett_lustre_llog_create_rec = -1;
-static gint ett_lustre_llog_orphan_rec = -1;
static gint ett_lustre_llog_unlink_rec = -1;
static gint ett_lustre_llog_setattr_rec = -1;
static gint ett_lustre_llog_size_change_rec = -1;
static gint ett_lustre_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_acl = -1;
/* -----------------------------------------------*/
/* Header field declarations */
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 ;
static int hf_lustre_ldlm_fl_lock_changed = -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_padding_3 = -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_setxattr_sx_padding_10 = -1;
static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -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_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_ost_lvb_lvb_atime = -1;
static int hf_lustre_ptlrpc_body_pb_timeout = -1;
static int hf_lustre_lustre_msg_v2_lm_magic = -1;
static int hf_lustre_lov_mds_md_v1_lmm_object_id = -1;
static int hf_lustre_ptlrpc_body_pb_last_seen = -1;
-static int hf_lustre_obd_ioobj_ioo_type = -1;
+static int hf_lustre_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_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_orphan_rec_lor_tail = -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_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_create_rec_lcr_tail = -1;
static int hf_lustre_llog_logid_lgl_oseq = -1;
-static int hf_lustre_llog_create_rec_lcr_hdr = -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_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_llog_create_rec_padding = -1;
static int hf_lustre_obdo_o_handle = -1;
static int hf_lustre_obdo_o_atime = -1;
static int hf_lustre_quota_adjust_qunit_qaq_id = -1;
static int hf_lustre_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_llog_create_rec_lcr_oid = -1;
static int hf_lustre_ldlm_reply_lock_desc = -1;
static int hf_lustre_lov_desc_ld_padding_0 = -1;
static int hf_lustre_llog_unlink_rec_lur_ogen = -1;
-static int hf_lustre_llog_orphan_rec_lor_hdr = -1;
static int hf_lustre_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_llog_orphan_rec_padding = -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_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_padding_2 = -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_llog_orphan_rec_lor_ogen = -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_llog_orphan_rec_lor_oid = -1;
static int hf_lustre_ldlm_reply_lock_padding = -1;
static int hf_lustre_obd_quotactl_qc_id = -1;
static int hf_lustre_llog_logid_rec_padding4 = -1;
static int hf_lustre_ldlm_flock_blocking_pid = -1;
static int hf_lustre_lov_desc_ld_tgt_count = -1;
static int hf_lustre_llogd_body_lgd_cur_offset=-1;
-static int hf_lustre_llog_create_rec_lcr_ogen = -1;
static int hf_lustre_qunit_data_old2_qd_count = -1;
static int hf_lustre_qunit_data_old2_qd_flags = -1;
static int hf_lustre_ldlm_flock_start = -1;
static int hf_lustre_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_llog_create_rec_lcr_fid = -1;
static int hf_lustre_lov_desc_ld_default_stripe_offset=-1;
static int hf_lustre_ldlm_resource_desc_lr_name = -1;
static int hf_lustre_llog_rec_tail_lrt_len = -1;
{0x000002 , "LDLM_FL_BLOCK_GRANTED"},
{0x000004 , "LDLM_FL_BLOCK_CONV"},
{0x000008 , "LDLM_FL_BLOCK_WAIT"},
- {0x000010 , "LDLM_FL_CBPENDING"},
+ {0x000010 , "LDLM_FL_CBPENDING"},
{0x000020 , "LDLM_FL_AST_SENT"},
- {0x000040 , "LDLM_FL_WAIT_NOREPROC"},
- {0x000080 , "LDLM_FL_CANCEL"},
+ {0x000040 , "LDLM_FL_WAIT_NOREPROC"},
+ {0x000080 , "LDLM_FL_CANCEL"},
{0x000100 , "LDLM_FL_REPLAY"},
{0x000200 , "LDLM_FL_INTENT_ONLY"},
- {0x000400 , "LDLM_FL_LOCAL_ONLY"},
- {0x000800 , "LDLM_FL_FAILED"},
+ {0x000400 , "LDLM_FL_LOCAL_ONLY"},
+ {0x000800 , "LDLM_FL_FAILED"},
{0x001000 , "LDLM_FL_HAS_INTENT"},
- {0x002000 , "LDLM_FL_CANCELING"},
- {0x004000 , "LDLM_FL_LOCAL"},
- {0x008000 , "LDLM_FL_WARN"},
+ {0x002000 , "LDLM_FL_CANCELING"},
+ {0x004000 , "LDLM_FL_LOCAL"},
+ {0x008000 , "LDLM_FL_WARN"},
{0x010000 , "LDLM_FL_DISCARD_DATA"},
{0x020000 , "LDLM_FL_NO_TIMEOUT"},
{0x040000 , "LDLM_FL_BLOCK_NOWAIT"},
{0x080000 , "LDLM_FL_TEST_LOCK"},
- {0x100000 , "LDLM_FL_LVB_READY"},
- {0x200000 , "LDLM_FL_KMS_IGNORE"},
- {0x400000 , "LDLM_FL_NO_LRU"},
+ {0x100000 , "LDLM_FL_LVB_READY"},
+ {0x200000 , "LDLM_FL_KMS_IGNORE"},
+ {0x400000 , "LDLM_FL_NO_LRU"},
{0x800000 , "LDLM_FL_CANCEL_ON_BLOCK"},
- {0x1000000 , "LDLM_FL_CP_REQD"},
- {0x2000000 , "LDLM_FL_CLEANED"},
- {0x4000000 , "LDLM_FL_ATOMIC_CB"},
- {0x10000000 , "LDLM_FL_BL_AST"},
- {0x20000000 , "LDLM_FL_BL_DONE"},
+ {0x1000000 , "LDLM_FL_CP_REQD"},
+ {0x2000000 , "LDLM_FL_CLEANED"},
+ {0x4000000 , "LDLM_FL_ATOMIC_CB"},
+ {0x10000000 , "LDLM_FL_BL_AST"},
+ {0x20000000 , "LDLM_FL_BL_DONE"},
{0x40000000 , "LDLM_FL_DENY_ON_CONTENTION"},
{0x80000000 , "LDLM_AST_DISCARD_DATA"},
{ 0, NULL }
{ 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"},
{253 , "MGS_TARGET_REG"},
{254 , "MGS_TARGET_DEL"},
{255 , "MGS_SET_INFO"},
- {256 , "MGS_LAST_OPC"},
+ {256 , "MGS_CONFIG_READ"},
+ {257 , "MGS_LAST_OPC"},
/*OBD Opcodes*/
{400 , "OBD_PING"},
{401 , "OBD_LOG_CANCEL"},
{ 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 }
};
/*const value_string lustre_ldlm_mode_t_vals[] = {*/
}
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)
{
}
/* ------------------------------------------------------------------------- */
+/* 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;
+
+ 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;
+}
+
+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;
+}
+
+/* ------------------------------------------------------------------------ */
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;
+ default:
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree,
+ hf_lustre_extra_padding, buff_num);
+ break;
+ };
+
+ return offset;
+}
+
/* IDL: struct obd_statfs { */
/* IDL: struct obd_ioobj { */
/* IDL: uint64 ioo_id; */
/* IDL: uint64 ioo_seq; */
-/* IDL: uint32 ioo_type; */
+/* IDL: uint32 ioo_max_brw; */
/* IDL: uint32 ioo_bufcnt; */
/* IDL: } */
}
static int
-lustre_dissect_element_obd_ioobj_ioo_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+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_type);
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_ioobj_ioo_max_brw);
return offset;
}
offset=lustre_dissect_element_obd_ioobj_ioo_seq(tvb, offset, pinfo, tree);
- offset=lustre_dissect_element_obd_ioobj_ioo_type(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_tree *tree = NULL;
int old_offset;
-
-
old_offset=offset;
if (parent_tree) {
}
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_)
+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;
/* IDL: uint32 cr_bias; */
/* IDL: uint32 cr_flags_l; */
/* IDL: uint32 cr_flags_h; */
-/* IDL: uint32 cr_padding_3; */
+/* IDL: uint32 cr_umask; */
/* IDL: uint32 cr_padding_4; */
/* IDL: } */
}
static int
-lustre_dissect_element_mdt_rec_create_cr_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+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_padding_3);
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create_cr_umask);
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_)
+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) {
offset=lustre_dissect_element_mdt_rec_create_cr_flags_h(tvb, offset, pinfo, tree);
- offset=lustre_dissect_element_mdt_rec_create_cr_padding_3(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;
}
}
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_)
+ 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;
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;
}
int
lustre_dissect_struct_ldlm_intent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
{
- // proto_item *item = NULL;
- //proto_tree *tree = NULL;
- int old_offset;
guint64 intent_opc;
proto_item * opcode_item = NULL;
proto_tree * opcode_tree = NULL;
- old_offset=offset;
- // if (parent_tree) {
- // item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- // tree = proto_item_add_subtree(item, ett_lustre_ldlm_intent);
- // //tree = parent_tree; /* TODO : !!!!!!!!!!!!!!! ATTENTIon à revoir,
- // //fait rapidement pour ne pas avoir le subtree */
- // }
-
-
intent_opc = tvb_get_letoh64(tvb,offset);
if (parent_tree){
opcode_item = proto_tree_add_item(parent_tree, hf_lustre_ldlm_intent_opc, tvb, offset, 8, TRUE);
offset=ldlm_opcode_process(tvb, offset, pinfo, parent_tree, intent_opc);
-
-
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_)
+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;
- for (i = 0; i < 2; 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;
proto_item *item = NULL;
proto_tree *tree = NULL;
int old_offset;
- guint32 lock_flag ;
- guint32 ldlm_type;
+ /* guint32 lock_flag; */
+ /* guint32 ldlm_type; */
+ guint32 num_locks = 2;
old_offset=offset;
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);
+ /* 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);
+ /* 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);
+ offset=lustre_dissect_element_ldlm_request_lock_handle(tvb, offset, pinfo, tree, num_locks);
proto_item_set_len(item, offset-old_offset);
}
-
-
/* IDL: struct ldlm_reply { */
/* IDL: uint32 lock_flags; */
/* IDL: uint32 lock_padding; */
/* IDL: uint64 lock_policy_res2; */
/* IDL: } */
-
static int
lustre_dissect_element_ldlm_lock_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
{
proto_item *item = NULL;
proto_tree *tree = NULL;
int old_offset;
-
- guint32 lock_flag ;
+ /* guint32 lock_flag; */
old_offset=offset;
tree = proto_item_add_subtree(item, ett_lustre_ldlm_reply);
}
- lock_flag = tvb_get_letohl(tvb,offset);
+ /* 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);
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);
+ display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s",
+ (const gchar *) tvb_get_string(tvb,offset,string_len) );
+ 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; */
return offset;
}
-/* IDL: struct llog_create_rec { */
-/* IDL: struct llog_rec_hdr { */
-/* IDL: } lcr_hdr; */
-/* IDL: struct ll_fid { */
-/* IDL: } lcr_fid; */
-/* IDL: uint64 lcr_oid; */
-/* IDL: uint32 lcr_ogen; */
-/* IDL: uint32 padding; */
-/* IDL: struct llog_rec_tail { */
-/* IDL: } lcr_tail; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d56e0)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_hdr);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d5830)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_fid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_lcr_oid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_lcr_ogen);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_padding);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d69dc)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_tail);
-
- return offset;
-}
-
-int
-lustre_dissect_struct_llog_create_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
-
-
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_llog_create_rec);
- }
-
- offset=lustre_dissect_element_llog_create_rec_lcr_hdr(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_fid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_oid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_ogen(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_padding(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_tail(tvb, offset, pinfo, tree);
-
-
- proto_item_set_len(item, offset-old_offset);
-
- return offset;
-}
-
-
-
-
-/* IDL: struct llog_orphan_rec { */
-/* IDL: struct llog_rec_hdr { */
-/* IDL: } lor_hdr; */
-/* IDL: uint64 lor_oid; */
-/* IDL: uint32 lor_ogen; */
-/* IDL: uint32 padding; */
-/* IDL: struct llog_rec_tail { */
-/* IDL: } lor_tail; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d767c)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_hdr);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_lor_oid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_lor_ogen);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_padding);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d8550)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_tail);
- return offset;
-}
-
-int
-lustre_dissect_struct_llog_orphan_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
-
-
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_llog_orphan_rec);
- }
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_hdr(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_oid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_ogen(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_padding(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_tail(tvb, offset, pinfo, tree);
-
-
- proto_item_set_len(item, offset-old_offset);
-
- return offset;
-}
/* IDL: } o_handle; */
/* IDL: struct llog_cookie { */
/* IDL: } o_lcookie; */
-/* IDL: uint64 o_padding_2; */
+/* 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; */
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_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_parent_ver);
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_parent_ver);
return offset;
}
}
static int
-lustre_dissect_element_obdo_o_padding_2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+lustre_dissect_element_obdo_o_uid_h(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obdo_o_padding_2);
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obdo_o_uid_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_)
+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);
int old_offset;
-
old_offset=offset;
if (parent_tree) {
offset=lustre_dissect_element_obdo_o_lcookie(tvb, offset, pinfo, tree);
- offset=lustre_dissect_element_obdo_o_padding_2(tvb, offset, pinfo, tree);
+ offset=lustre_dissect_element_obdo_o_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);
proto_tree *tree = NULL;
int old_offset;
-
-
old_offset=offset;
if (parent_tree) {
offset=lustre_dissect_element_ost_body_oa(tvb, offset, pinfo, tree);
-
proto_item_set_len(item, offset-old_offset);
return 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_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;
+}
+
/* ------------------------------------------------------------------------- */
/* dissect string .
lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
{
proto_item *item = NULL;
-
int old_offset;
guint32 string_len;
old_offset=offset;
- // if (parent_tree) { item = proto_tree_add_item(parent_tree, hf_index, tvb,
- // offset, -1, TRUE); // tree = proto_item_add_subtree(item,
- // ett_lustre); }
+ /* if (parent_tree) {
+ * item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ * tree = proto_item_add_subtree(item, ett_lustre);
+ * }
+ */
- if(buf_num+1>LUSTRE_BUFCOUNT)
+ string_len = LUSTRE_BUFFER_LEN(buf_num);
+ if(string_len == 0)
return offset;
- string_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
+ /* g_print("buf_num:%d (max:%d) BUFLEN_OFF:%#x strlen:%d\n",
+ buf_num, LUSTRE_BUFCOUNT,
+ LUSTRE_BUFLEN_OFF, string_len);*/
+
proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
if(string_len>1)
display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s",
- (const gchar *) tvb_get_string(tvb,offset,string_len) );
+ (const gchar *) tvb_get_string(tvb,offset,string_len) );
offset+=string_len;
proto_item_set_len(item, offset-old_offset);
offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* after a string we must be aligned to 8 bytes. */
-
return offset;
}
/* ------------------------------------------------------------------------- */
-/* dissect raw data */
-static int
-lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
-{
- proto_item *item = NULL;
-
- guint32 data_len ;
- int old_offset;
-
- old_offset=offset;
- if(buf_num+1>LUSTRE_BUFCOUNT)
- return offset;
-
- data_len = tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * buf_num) ; /* 4 because a buflen is on a guint32 */
- proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
-
- offset+=data_len;
- proto_item_set_len(item, offset-old_offset);
- offset=add_extra_padding(tvb,offset,pinfo,parent_tree); /* align on 8 bytes */
-
- return offset;
-}
-/* ------------------------------------------------------------------------ */
+/* 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 ;
switch(opcode){
case REINT_SETATTR:
- /* [eadata][cookie_data][ldlm_request] */
- offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_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) ;
+ 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_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); /* this string is all the time =="\0"*/
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
- hf_lustre_ldlm_request) ;
+ 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_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 :
+ 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_ldlm_request(tvb, offset, pinfo, tree,
- hf_lustre_ldlm_request) ;
- /*TODO : need to be check*/
+ 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_string(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 : /* mds_unlink_unpack : [mdt_rec_unlink][filename][ldlm_req] */
- /* [mdt_rec_unlink][filename][ldlm_req][..]*/
+ 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_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);
- if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +2))) == 112) /* TODO : ugly .. but
- for now we have to do this */
+ offset=lustre_dissect_struct_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_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
+ } else {
+ offset=lustre_dissect_element_string(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] */
+ 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_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+2);
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
+ 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_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3);
+ offset=lustre_dissect_element_string(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] */
+ 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_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); /* TODO : replace with hf_eadata */
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2);
break;
- case REINT_SETXATTR :
- /* [eadata][cookie_data][ldlm_request] */
+ case REINT_SETXATTR:
+ /* 2.x+ [rec_setxattr][capa1][name][eadata] */
+ /* old? [rec_setxattr][ldlm_request] */
offset=lustre_dissect_struct_mdt_rec_setxattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr);
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
- hf_lustre_ldlm_request) ;
+ 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_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);
+ } else if (LUSTRE_BUFCOUNT == 2)
+ offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
+ hf_lustre_ldlm_request);
break;
default:
break;
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) ;
}
break;
case OST_WRITE:
- offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo,
- tree, hf_lustre_ost_body) ; /* [ost_body] in both case */
- if(pb_type==PTL_RPC_MSG_REQUEST)
- {
- for (i=0;i<tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+ 4*(LUSTRE_REQ_REC_OFF+1))/24;i++)
+ offset=lustre_dissect_struct_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<tvb_get_letohl(tvb, LUSTRE_BUFCOUNT_OFF)-2;i++) /* -2 because we have already dissect 2 buffers : ptl + ost */
+ 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);
- if (i & 1 ) /* if odd we add extra padding */
- offset=dissect_uint32(tvb, offset, pinfo, tree,
- hf_lustre_extra_padding);
+ 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][-si buf- ldlm_request] */
- if ( (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF +1))) != 0)
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ost_body);
- /* TODO : test that */
+ 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_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF+1);
- }
+ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF);
if (pb_type==PTL_RPC_MSG_REPLY)
- {
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */
- }
-
break;
case OST_CONNECT:
if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
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] check that : TODO */
- if(LUSTRE_BUFCOUNT>=2)
- offset=lustre_dissect_struct_obd_statfs(tvb, offset, pinfo, tree, hf_lustre_obd_statfs) ;
+ 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_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_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 */
/* [quota_adjust_qunit] in both case ? */
offset=lustre_dissect_struct_quota_adjust_qunit(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit) ;
};
-
return offset;
}
/*[nothing]*/
break;
case MDS_GETSTATUS:
- /*[mds body]*/
+ /*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)
/*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)
- /*[string_xattr_name]*/
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+1);
- if(pb_type==PTL_RPC_MSG_REPLY)
- /*[eada]*/
+ 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) ;
- /* TODO [ something ??? ] */
+ 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_element_string(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)
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
break;
- case MDS_CLOSE: /* TODO : check the corresponding structure in lustre code */
+ case MDS_CLOSE:
if(pb_type==PTL_RPC_MSG_REQUEST)
- { /* [mdt_body] [lov_mds_md][log_cookie] */
- offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
- if(LUSTRE_BUFCOUNT>=3)
- offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
- if(LUSTRE_BUFCOUNT>=4)
- if( tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
- offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie);
+ { /* [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);
}
if(pb_type==PTL_RPC_MSG_REPLY)
- { /* [mdt_body][md][cookie] TODO : check that (reread the code about shrink in lustre) */
+ { /* [mdt_body][md][cookie][capa1][capa2] */
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
- if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0)
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_md_data,LUSTRE_REQ_REC_OFF+1); /* key */
- if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0)
+ offset=lustre_dissect_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_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][??][llog_logid_rec] */
- offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
- if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){
- /* OPEN, RENAME, and UNLINK */
- if(tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+1)) > 0){ /* rec_unlink or rec_rename */
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata,
- LUSTRE_REQ_REC_OFF+1); // replace by eadata TODO TODO //
- if(tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*(LUSTRE_REQ_REC_OFF+2)) > 0) /* with unlink or rename we have 4 buffers handler.c line 1691*/
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree,
- hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); // replace withe eadata TODO TODO //
- }
- }
+ 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_lov_mds_md_v1, 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:
case MDS_CONNECT:
if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);
- if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
+ 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);
break;
default:
static int
lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type)
{
-
- switch (opc)
- {
- case LDLM_ENQUEUE:
- /*[ldlm_request] if we have one more buffer it's [intent_opcode] and the opcode give us the
- * corresponding intent structure [intent] */
- if(pb_type==PTL_RPC_MSG_REQUEST)
- {
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- if (LUSTRE_BUFCOUNT>=3)
- offset=lustre_dissect_struct_ldlm_intent(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent);
- }
- if(pb_type==PTL_RPC_MSG_REPLY)
- {
- guint32 ldlm_type;
- guint32 magic;
- /*[ldlm_reply]*/
- offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply,&ldlm_type) ;
- if(LUSTRE_BUFCOUNT>2 && (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*2) == 40))
- /* TODO :this code need to be check and test, the lustre corresponding code is'nt explicit, so
- * not sure to have this buffer, but in example it works fine
- */
- offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb);
- else
- if(LUSTRE_BUFCOUNT>2)
- {
- offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
- /*g_print("buflen_off+4*3 = %d", tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF));*/
- if(LUSTRE_BUFCOUNT>2 &&
- (tvb_get_letohl(tvb,LUSTRE_BUFLEN_OFF+4*LUSTRE_DLM_INTENT_REC_OFF) > 0))
- {
- magic=tvb_get_letohl(tvb, offset); /* TODO : replace this with a macro */
- switch(magic)
- {
- case LOV_MAGIC_V1:
- offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1);
- break;
- default:
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree,
- hf_lustre_extra_padding, LUSTRE_DLM_INTENT_REC_OFF);
- break;
- };
- }
- }
+ 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);
+ /* check if we're done processing */
+ if (LUSTRE_BUFCOUNT <= 2)
+ break;
+
+ if (LUSTRE_BUFFER_LEN(LUSTRE_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);
+
+ else if (ldlm_type == LDLM_EXTENT) {
+ offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1,
+ LUSTRE_DLM_REPLY_REC_OFF);
+ break;
}
- break;
- case LDLM_CONVERT:
- if(pb_type==PTL_RPC_MSG_REQUEST)
- /*[ldlm_request]*/
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- if(pb_type==PTL_RPC_MSG_REPLY)
- /*[ldlm_reply]*/
- offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, NULL) ;
- break;
+ 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_lov_mds_md_v1,
+ LUSTRE_DLM_INTENT_REC_OFF);
+
+ /* ldlm_intent_server : ACL */
+ offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree,
+ hf_lustre_acl, LUSTRE_DLM_INTENT_REC_OFF+1);
+
+ /* ldlm_intent_open_server : [capa1][capa2] */
+ offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
+ hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+2);
+ offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
+ hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+3);
+ }
+ break;
- case LDLM_CANCEL:
- if(pb_type==PTL_RPC_MSG_REQUEST)
- /*[ldlm_request]*/
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- /*[nothing en reply]*/
- break;
+ case LDLM_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_BL_CALLBACK: /* TODO : check the corresponding code in lustre*/
- if(pb_type==PTL_RPC_MSG_REQUEST)
- /*[ldlm_request]*/
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- break;
+ case LDLM_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_CP_CALLBACK:
- if(pb_type==PTL_RPC_MSG_REQUEST){
- /*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO :
- * check that */
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- if(LUSTRE_BUFCOUNT>=3)
- offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
- }
- /*reply : [nothing] */
- break;
+ case LDLM_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_GL_CALLBACK:
- if(pb_type==PTL_RPC_MSG_REQUEST)
- /*[ldlm_request] */
- offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- else
- if(pb_type==PTL_RPC_MSG_REPLY)
- /*reply : [ost_lvb] <-- need to be check*/
- offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb);
- break;
+ case LDLM_CP_CALLBACK:
+ if(pb_type==PTL_RPC_MSG_REQUEST){
+ /*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO :
+ * check that */
+ offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
+ if(LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0)
+ offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
+ }
+ /*reply : [nothing] */
+ break;
- default :
- 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) ;
+ if(LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0)
+ offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
+ }
+ if(pb_type==PTL_RPC_MSG_REPLY) /* [ost_lvb] */
+ offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb);
+ break;
+
+ default :
+ break;
}
return offset;
}
/*[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;
};
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(pb_type==PTL_RPC_MSG_REQUEST) /* [filename] */
if (LUSTRE_BUFCOUNT>2)
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_name,
- LUSTRE_REQ_REC_OFF+1);
+ LUSTRE_REQ_REC_OFF+1);
break;
case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */
- /* [llogd_body][???]
+ /* [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);
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk,
- LUSTRE_REQ_REC_OFF + 1 );
+ 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);
+ 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);
case LLOG_CATINFO : /*in handler.c */
if(pb_type==PTL_RPC_MSG_REQUEST){
/* [keyword][if keyword=config [char*] else [nothing]] */
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword,
- LUSTRE_REQ_REC_OFF);
- if (strcmp((const char *)tvb_get_string(tvb,
- LUSTRE_REQ_REC_OFF,
- tvb_get_letohl(tvb,
- LUSTRE_BUFLEN_OFF + 4 *
- LUSTRE_REQ_REC_OFF)),
- "config") == 0)
- /* if(keyword == "config") */
+ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword,
+ LUSTRE_REQ_REC_OFF);
+ if (strcmp((const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF,
+ tvb_get_letohl(tvb,
+ LUSTRE_BUFLEN_OFF + 4 *
+ LUSTRE_REQ_REC_OFF)),
+ "config") == 0)
+ /* if(keyword == "config") */
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_client,
- LUSTRE_REQ_REC_OFF+1);
+ LUSTRE_REQ_REC_OFF+1);
}
if(pb_type==PTL_RPC_MSG_REPLY)
/*[buf] sizeof = llog_chunk_size*/
offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk,
- LUSTRE_REQ_REC_OFF + 1 );
+ LUSTRE_REPLY_REC_OFF + 1 );
/* TODO TODO : check if it's note a catid */
break;
case LLOG_ORIGIN_HANDLE_PREV_BLOCK : /* in handler.c */
if(pb_type==PTL_RPC_MSG_REPLY)
/*[buf] size of llog_chunk_size*/
offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_llogd_chunk,
- LUSTRE_REQ_REC_OFF + 1 );
+ LUSTRE_REPLY_REC_OFF + 1 );
break;
case LLOG_ORIGIN_HANDLE_DESTROY : /* in handler.c */
/*[llogd_body] in both case*/
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);
+ if (check_col(pinfo->cinfo, COL_INFO))
+ 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);
+ if (check_col(pinfo->cinfo, COL_INFO))
+ 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>=LLOG_FIRST_OPC) && (opc<=LLOG_LAST_OPC)) /* LLOG Opcodes */
offset=lustre_llog_opcode_process( tvb , offset ,pinfo , tree , opc , pb_type) ;
- return offset ;
+ 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;
}
/* ----------------------------------------------- */
/* ----------------------------------------------- */
static int
-ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_)
+ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree * tree _U_, guint64 intent_opc _U_)
{
/* all corresponding code is in mdc_locks.c in function mdc_enqueue() */
/* if 0x0003 we have CREAT + OPEN
- */
+ */
if (intent_opc & IT_OPEN) {
- /* mdc_intent_open_pack(), d'où [opcode][mdc_rec_create][name][eada] */
- offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata,
- LUSTRE_DLM_INTENT_REC_OFF+2); /* TODO : replace hf with eada hf */
-
+ /* 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_string(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][name] */
- offset=lustre_dissect_struct_mdt_rec_unlink(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_unlink);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+ /* 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_string(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][name] */
+ /* 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_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+ offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa,
+ LUSTRE_DLM_INTENT_REC_OFF+1);
+ offset=lustre_dissect_element_string(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][name] */
- 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_reint_name, LUSTRE_DLM_INTENT_REC_OFF+1);
+ /* 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_string(tvb, offset, pinfo, tree, hf_lustre_reint_name,
+ LUSTRE_DLM_INTENT_REC_OFF+2);
}
return offset;
}
static void
sanity_check(tvbuff_t *tvb, packet_info *pinfo, guint32 val_offset _U_)
{
- guint32 magic_number ;
guint32 somme_buflen = 0 ;
guint32 i ;
- magic_number = tvb_get_letohl(tvb, 8);
-
+ /* magic_number = tvb_get_letohl(tvb, 8); */
for (i=0;i<LUSTRE_BUFCOUNT;i++)
somme_buflen += tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF +
}
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;
-
- guint32 opc, pb_type;
-
+ 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_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);
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);
offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_extra_padding);
}
-
-
current_buf_len = tvb_get_letohl(tvb, buf_len_offset);
offset=lustre_dissect_struct_ptlrpc_body(tvb,offset, pinfo, tree, hf_lustre_ptlrpc_body_pb, current_buf_len);
}
-
-
static void
dissect_lustre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
if (tree) {
guint32 magic_number ;
- guint32 offset;
+ 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, 0, pinfo, lustre_tree, proto_lustre ) ;
+ 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, 0, pinfo, lustre_tree, proto_lustre ) ;
+ offset=lustre_dissect_struct_msg_v2(tvb, offset, pinfo, lustre_tree, proto_lustre ) ;
break;
default:
break;
}
-
}
}
{ &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_DEC, NULL, 0, "", HFILL }},
+ { "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,
{ &hf_lustre_mdt_rec_setattr_sa_attr_flags,
{ "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_mode,
- { "Sa Mode", "lustre.mdt_rec_setattr.sa_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_padding_3,
{ &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 } },
+ { "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 } },
+ { "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,
{ &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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_DEC, NULL, 0, "", HFILL }},
+ { "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_padding_3,
- { "Cr Padding 3", "lustre.mdt_rec_create.cr_padding_3", 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_t_vals) , 0, "", HFILL }},
+ { "Lk Opcode", "lustre.mdt_rec_link.lk_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_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,
{ &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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_DEC, NULL, 0, "", HFILL }},
+ { "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,
{ &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_DEC, NULL, 0, "", HFILL }},
+ { "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,
{ "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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,
{ &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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_DEC, 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,
{ "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 } },
{ "Lmm Object Id", "lustre.lov_mds_md_v1.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_last_seen,
{ "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_obd_ioobj_ioo_type, /* TODO : create the
+ { &hf_lustre_obd_ioobj_ioo_max_brw, /* TODO : create the
corresponding value_string */
- { "Ioo Type", "lustre.obd_ioobj.ioo_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { "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_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ll_fid_id,
{ "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
-
{ &hf_lustre_obdo_o_valid,
{ "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_flags,
{ "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_orphan_rec_lor_tail,
- { "Lor Tail", "lustre.llog_orphan_rec.lor_tail", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_llog_logid_rec_padding5,
{ "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, 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_create_rec_lcr_tail,
- { "Lcr Tail", "lustre.llog_create_rec.lcr_tail", 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_create_rec_lcr_hdr,
- { "Lcr Hdr", "lustre.llog_create_rec.lcr_hdr", FT_NONE,
- BASE_NONE, 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,
{ &hf_lustre_ldlm_request_lock_flags,
{ "Lock Flags", "lustre.ldlm_request.lock_flags", FT_UINT32, BASE_HEX, NULL, 0 , "", HFILL }},
{ &hf_lustre_obdo_o_mode,
- { "O Mode", "lustre.obdo.o_mode", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "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,
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_llog_create_rec_padding,
- { "Padding", "lustre.llog_create_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_handle,
{ "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_obdo_o_atime,
{ "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_llog_create_rec_lcr_oid,
- { "Lcr Oid", "lustre.llog_create_rec.lcr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_desc,
{ "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
{ "Ld Padding 0", "lustre.lov_desc.ld_padding_0", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_unlink_rec_lur_ogen,
{ "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_orphan_rec_lor_hdr,
- { "Lor Hdr", "lustre.llog_orphan_rec.lor_hdr", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_cfg_marker_cm_flags,
{ "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_padding_3,
{ &hf_lustre_ldlm_request_lock_desc,
{ "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_orphan_rec_padding,
- { "Padding", "lustre.llog_orphan_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_flags,
{ "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mgs_target_info_mti_params,
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_padding_2,
- { "O Padding 2", "lustre.obdo.o_padding_2", 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,
{ &hf_lustre_llog_gen_rec_lgr_hdr,
{ "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_orphan_rec_lor_ogen,
- { "Lor Ogen", "lustre.llog_orphan_rec.lor_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llogd_body_lgd_llh_flags,
{ "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_log_hdr_llh_cat_idx,
{ "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_log_hdr_llh_bitmap_offset,
{ "Llh Bitmap Offset", "lustre.llog_log_hdr.llh_bitmap_offset", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_orphan_rec_lor_oid,
- { "Lor Oid", "lustre.llog_orphan_rec.lor_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_padding,
{ "Lock Padding", "lustre.ldlm_reply.lock_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_quotactl_qc_id,
{ "Ld Tgt Count", "lustre.lov_desc.ld_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llogd_body_lgd_cur_offset,
{ "Lgd Cur Offset", "lustre.llogd_body.lgd_cur_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_lcr_ogen,
- { "Lcr Ogen", "lustre.llog_create_rec.lcr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_qunit_data_old2_qd_count,
{ "Qd Count", "lustre.qunit_data_old2.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_opnum,
{ "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mgs_send_param_mgs_param,
{ "Mgs Param", "lustre.mgs_send_param.mgs_param", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_lcr_fid,
- { "Lcr Fid", "lustre.llog_create_rec.lcr_fid", FT_NONE,
- BASE_NONE, 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,
{ "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 }},
{ "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 }}
-
+ { "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_DEC, 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 } },
};
&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_llog_rec_hdr,
&ett_lustre_llog_rec_tail,
&ett_lustre_llog_logid_rec,
- &ett_lustre_llog_create_rec,
- &ett_lustre_llog_orphan_rec,
&ett_lustre_llog_unlink_rec,
&ett_lustre_llog_setattr_rec,
&ett_lustre_llog_size_change_rec,
&ett_lustre_qunit_data_old2,
&ett_lustre_qunit_data_old,
&ett_lustre_ldlm_lock_flags,
- &ett_lustre_llog_log_llh_flags
+ &ett_lustre_llog_log_llh_flags,
+ &ett_lustre_seq_range,
+ &ett_lustre_fld_range,
+ &ett_lustre_mdt_ioepoch,
+ &ett_lustre_capa,
+ &ett_lustre_acl,
};
proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre");
dissector_add("lnet.ptl_index", MGS_REQUEST_PORTAL , lustre_handle);
dissector_add("lnet.ptl_index", MGS_REPLY_PORTAL , lustre_handle);
dissector_add("lnet.ptl_index", OST_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", MGS_BULK_PORTAL, lustre_handle);
+ dissector_add("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle);
+ dissector_add("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle);
+ dissector_add("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle);
+ dissector_add("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle);
}