X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fcontrib%2Fwireshark%2Fpacket-lustre.c;h=87b1378c99ee249cb283fef7b9d2921e31959d95;hp=b8397e795bf3ae3c7f0b5dc6c2f667b471e8304f;hb=06be2b427fbca4f8a9a2be37b951a47ef3315925;hpb=4ce3219eb8e6a07c5c37e4b425b29195488005c3 diff --git a/lustre/contrib/wireshark/packet-lustre.c b/lustre/contrib/wireshark/packet-lustre.c index b8397e7..87b1378 100644 --- a/lustre/contrib/wireshark/packet-lustre.c +++ b/lustre/contrib/wireshark/packet-lustre.c @@ -36,6 +36,8 @@ #include #include +#include "wireshark-compat.h" + #include #include "lustre_dlm_flags.h" @@ -82,9 +84,11 @@ const true_false_string lnet_flags_set_truth = { "Set", "Unset" }; -#define LOV_MAGIC_V1 0x0BD10BD0 -#define LOV_MAGIC LOV_MAGIC_V1 -#define LOV_MAGIC_JOIN_V1 0x0BD20BD0 +#define LOV_MAGIC_V1 0x0BD10BD0 +#define LOV_MAGIC_V3 0x0BD30BD0 + +/* defined in lustre/include/lustre/lustre_user.h */ +#define LOV_MAXPOOLNAME 15 /* defined in lustre/include/lustre/lustre_idl.h */ typedef enum { @@ -229,23 +233,47 @@ typedef enum { MDS_SWAP_LAYOUTS = 61, MDS_LAST_OPC } mds_cmd_t; +#define MDS_FIRST_OPC MDS_GETATTR + +enum { + LAYOUT_INTENT_ACCESS = 0, + LAYOUT_INTENT_READ = 1, + LAYOUT_INTENT_WRITE = 2, + LAYOUT_INTENT_GLIMPSE = 3, + LAYOUT_INTENT_TRUNC = 4, + LAYOUT_INTENT_RELEASE = 5, + LAYOUT_INTENT_RESTORE = 6 +}; + +static const value_string lustre_layout_intent_opc_values[] = { + { LAYOUT_INTENT_ACCESS, "ACCESS"}, + { LAYOUT_INTENT_READ, "READ"}, + { LAYOUT_INTENT_WRITE, "WRITE"}, + { LAYOUT_INTENT_GLIMPSE, "GLIMPSE"}, + { LAYOUT_INTENT_TRUNC, "TRUNC"}, + { LAYOUT_INTENT_RELEASE, "RELEASE"}, + { LAYOUT_INTENT_RESTORE, "RESTORE"}, + { 0, NULL }, +}; +/* From lustre/include/obd.h */ #define IT_OPEN 0x0001 #define IT_CREAT 0x0002 #define IT_READDIR 0x0004 #define IT_GETATTR 0x0008 #define IT_LOOKUP 0x0010 #define IT_UNLINK 0x0020 -#define IT_GETXATTR 0x0040 -#define IT_EXEC 0x0080 -#define IT_PIN 0x0100 - - - -#define MDS_FIRST_OPC MDS_GETATTR -#define LDLM_FIRST_OPC LDLM_ENQUEUE - -typedef enum { +#define IT_TRUNC 0x0040 +#define IT_GETXATTR 0x0080 +#define IT_EXEC 0x0100 +#define IT_PIN 0x0200 +#define IT_LAYOUT 0x0400 +#define IT_QUOTA_DQACQ 0x0800 +#define IT_QUOTA_CONN 0x1000 +#define IT_SETXATTR 0x2000 + +/* lustre/include/uapi/linux/lustre/lustre_idl.h */ +enum mds_reint_op { REINT_SETATTR = 1, REINT_CREATE = 2, REINT_LINK = 3, @@ -256,7 +284,7 @@ typedef enum { REINT_RMENTRY = 8, REINT_MIGRATE = 9, REINT_MAX -} mds_reint_t; +}; enum ldlm_cmd { LDLM_ENQUEUE = 101, @@ -265,6 +293,7 @@ enum ldlm_cmd { LDLM_BL_CALLBACK = 104, LDLM_CP_CALLBACK = 105, LDLM_GL_CALLBACK = 106, + LDLM_SET_INFO = 107, LDLM_LAST_OPC }; #define LDLM_FIRST_OPC LDLM_ENQUEUE @@ -360,6 +389,43 @@ typedef enum { #define PTL_RPC_MSG_ERR 4712 #define PTL_RPC_MSG_REPLY 4713 +/* Connect flags from lustre_idl.h */ +#define OBD_CONNECT_RDONLY 0x1ULL /*client has read-only access*/ +#define OBD_CONNECT_INDEX 0x2ULL /*connect specific LOV idx */ +#define OBD_CONNECT_MDS 0x4ULL /*connect from MDT to OST */ +#define OBD_CONNECT_GRANT 0x8ULL /*OSC gets grant at connect */ +#define OBD_CONNECT_SRVLOCK 0x10ULL /*server takes locks for cli */ +#define OBD_CONNECT_VERSION 0x20ULL /*Lustre versions in ocd */ +#define OBD_CONNECT_REQPORTAL 0x40ULL /*Separate non-IO req portal */ +#define OBD_CONNECT_ACL 0x80ULL /*access control lists */ +#define OBD_CONNECT_XATTR 0x100ULL /*client use extended attr */ +#define OBD_CONNECT_CROW 0x200ULL /*MDS+OST create obj on write*/ +#define OBD_CONNECT_TRUNCLOCK 0x400ULL /*locks on server for punch */ +#define OBD_CONNECT_TRANSNO 0x800ULL /*replay sends init transno */ +#define OBD_CONNECT_IBITS 0x1000ULL /*support for inodebits locks*/ +#define OBD_CONNECT_JOIN 0x2000ULL /*files can be concatenated. + *We do not support JOIN FILE + *anymore, reserve this flags + *just for preventing such bit + *to be reused.*/ +#define OBD_CONNECT_ATTRFID 0x4000ULL /*Server can GetAttr By Fid*/ +#define OBD_CONNECT_NODEVOH 0x8000ULL /*No open hndl on specl nodes*/ +#define OBD_CONNECT_RMT_CLIENT 0x10000ULL /*Remote client */ +#define OBD_CONNECT_RMT_CLIENT_FORCE 0x20000ULL /*Remote client by force */ +#define OBD_CONNECT_BRW_SIZE 0x40000ULL /*Max bytes per rpc */ +#define OBD_CONNECT_QUOTA64 0x80000ULL /*Not used since 2.4 */ +#define OBD_CONNECT_MDS_CAPA 0x100000ULL /*MDS capability */ +#define OBD_CONNECT_OSS_CAPA 0x200000ULL /*OSS capability */ +#define OBD_CONNECT_CANCELSET 0x400000ULL /*Early batched cancels. */ +#define OBD_CONNECT_SOM 0x800000ULL /*Size on MDS */ +#define OBD_CONNECT_AT 0x1000000ULL /*client uses AT */ +#define OBD_CONNECT_LRU_RESIZE 0x2000000ULL /*LRU resize feature. */ +#define OBD_CONNECT_MDS_MDS 0x4000000ULL /*MDS-MDS connection */ +#define OBD_CONNECT_REAL 0x8000000ULL /*real connection */ +#define OBD_CONNECT_CHANGE_QS 0x10000000ULL /*Not used since 2.4 */ +#define OBD_CONNECT_CKSUM 0x20000000ULL /*support several cksum algos*/ +#define OBD_CONNECT_FID 0x40000000ULL /*FID is supported by server */ +#define OBD_CONNECT_VBR 0x80000000ULL /*version based recovery */ /* Ett declarations */ static gint ett_lustre_llog_log_llh_flags = -1 ; @@ -372,6 +438,7 @@ static gint ett_lustre_ptlrpc_body = -1; static gint ett_lustre_lustre_handle_v2 = -1; static gint ett_lustre_obd_connect_data = -1; static gint ett_lustre_lov_mds_md_v1 = -1; +static gint ett_lustre_lov_mds_md_v3 = -1; static gint ett_lustre_lov_ost_data_v1 = -1; static gint ett_lustre_obd_statfs = -1; static gint ett_lustre_obd_ioobj = -1; @@ -431,8 +498,19 @@ static gint ett_lustre_seq_range = -1; static gint ett_lustre_fld_range = -1; static gint ett_lustre_mdt_ioepoch = -1; static gint ett_lustre_capa = -1; +static gint ett_lustre_close_data = -1; static gint ett_lustre_acl = -1; static gint ett_lustre_ladvise = -1; +static gint ett_lustre_hsm_request = -1; +static gint ett_lustre_hsm_user_item = -1; +static gint ett_lustre_hsm_extent = -1; +static gint ett_lustre_hsm_progress = -1; +static gint ett_lustre_hsm_user_state = -1; +static gint ett_lustre_quota_body = -1; +static gint ett_lustre_lquota_id = -1; +static gint ett_lustre_layout_intent = -1; +static gint ett_lustre_xattrs = -1; +static gint ett_lustre_ost_id = -1; /* -----------------------------------------------*/ /* Header field declarations */ @@ -466,6 +544,7 @@ static int hf_lustre_llog_cookie= -1; static int hf_lustre_mds_md_data= -1; static int hf_lustre_mds_reint_opcode= -1; static int hf_lustre_mds_xattr_eadata = -1; +static int hf_lustre_mds_xattr_eadata_str = -1; static int hf_lustre_reint_name= -1; static int hf_lustre_reint_old_name= -1; @@ -680,6 +759,15 @@ static int hf_lustre_mdt_rec_setxattr_sx_padding_9 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_10 = -1; static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -1; +static int hf_lustre_mdt_getinfo_key = -1; +static int hf_lustre_mdt_getinfo_vallen = -1; +static int hf_lustre_mdt_getinfo_data = -1; + +static int hf_lustre_close_data = -1; +static int hf_lustre_close_fid = -1; +static int hf_lustre_close_data_ver = -1; +static int hf_lustre_close_reserved = -1; + static int hf_lustre_seq_opc = -1; static int hf_lustre_seq_range = -1; static int hf_lustre_seq_range_start = -1; @@ -713,6 +801,21 @@ static int hf_lustre_capa_hmac = -1; static int hf_lustre_acl = -1; +static int hf_lustre_ost_lvb_lvb_size = -1; +static int hf_lustre_ost_lvb_lvb_mtime = -1; +static int hf_lustre_ost_lvb_lvb_atime = -1; +static int hf_lustre_ost_lvb_lvb_ctime = -1; +static int hf_lustre_ost_lvb_lvb_blocks = -1; +static int hf_lustre_ost_lvb_lvb_mtime_ns = -1; +static int hf_lustre_ost_lvb_lvb_atime_ns = -1; +static int hf_lustre_ost_lvb_lvb_ctime_ns = -1; +static int hf_lustre_ost_lvb_lvb_padding = -1; + +static int hf_lustre_xattrs = -1; +static int hf_lustre_xattrs_name = -1; +static int hf_lustre_xattrs_data = -1; +static int hf_lustre_xattrs_size = -1; + static int hf_lustre_lustre_handle_cookie = -1; static int hf_lustre_ptlrpc_body_pb_last_committed = -1; static int hf_lustre_ptlrpc_body_pb_version = -1; @@ -723,12 +826,10 @@ 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_obd_statfs_os_bavail = -1; static int hf_lustre_obd_statfs_os_bsize = -1; static int hf_lustre_lustre_msg_v2_lm_repsize = -1; -static int hf_lustre_lov_mds_md_v1_lmm_stripe_size = -1; static int hf_lustre_lustre_msg_v1_lm_last_xid = -1; static int hf_lustre_ll_fid_f_type = -1; static int hf_lustre_lustre_msg_v2_lm_cksum = -1; @@ -736,21 +837,17 @@ static int hf_lustre_lustre_msg_v2_lm_buflens = -1; static int hf_lustre_lustre_msg_v1_lm_status = -1; static int hf_lustre_lustre_msg_v1_lm_type = -1; static int hf_lustre_niobuf_remote_len = -1; -static int hf_lustre_lov_mds_md_v1_lmm_magic = -1; static int hf_lustre_ptlrpc_body_pb_op_flags = -1; -static int hf_lustre_ost_lvb_lvb_ctime = -1; static int hf_lustre_ptlrpc_body_pb_type = -1; static int hf_lustre_obd_connect_data_ocd_nllg = -1; static int hf_lustre_obd_connect_data_ocd_nllu = -1; static int hf_lustre_ll_fid_generation = -1; -static int hf_lustre_ost_lvb_lvb_mtime = -1; static int hf_lustre_obd_connect_data_ocd_ibits_known = -1; static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1; static int hf_lustre_ptlrpc_body_pb_flags = -1; static int hf_lustre_obd_statfs_os_spare4 = -1; static int hf_lustre_obd_connect_data_ocd_group = -1; static int hf_lustre_lov_ost_data_v1_l_object_seq = -1; -static int hf_lustre_lov_mds_md_v1_lmm_object_seq = -1; static int hf_lustre_obd_connect_data_ocd_brw_size = -1; static int hf_lustre_ptlrpc_body_pb_limit = -1; static int hf_lustre_obd_statfs_os_maxbytes = -1; @@ -758,7 +855,6 @@ static int hf_lustre_obd_statfs_os_spare5 = -1; static int hf_lustre_lustre_msg_v2_lm_flags = -1; static int hf_lustre_obd_statfs_os_ffree = -1; static int hf_lustre_obd_statfs_os_files = -1; -static int hf_lustre_lov_mds_md_v1_lmm_stripe_count = -1; static int hf_lustre_lustre_msg_v1_lm_flags = -1; static int hf_lustre_lustre_msg_v1_lm_last_committed = -1; static int hf_lustre_obd_statfs_os_spare9 = -1; @@ -777,12 +873,10 @@ static int hf_lustre_lov_ost_data_v1_l_object_id = -1; static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1; static int hf_lustre_obd_statfs_os_bfree = -1; static int hf_lustre_obd_connect_data_ocd_version = -1; -static int hf_lustre_lov_mds_md_v1_lmm_objects = -1; static int hf_lustre_obd_statfs_os_namelen = -1; static int hf_lustre_obd_statfs_os_blocks = -1; static int hf_lustre_lustre_msg_v2_lm_secflvr = -1; static int hf_lustre_lustre_msg_v1_lm_transno = -1; -static int hf_lustre_lov_mds_md_v1_lmm_pattern = -1; static int hf_lustre_lustre_msg_v1_lm_opc = -1; static int hf_lustre_obd_connect_data_ocd_grant = -1; static int hf_lustre_obd_ioobj_ioo_bufcnt = -1; @@ -790,24 +884,23 @@ static int hf_lustre_lustre_msg_v1_lm_version = -1; static int hf_lustre_obd_statfs_os_spare7 = -1; static int hf_lustre_obd_statfs_os_fsid = -1; static int hf_lustre_obd_connect_data_ocd_cksum_types = -1; -static int hf_lustre_ost_lvb_lvb_size = -1; +static int hf_lustre_obd_connect_data_ocd_max_easize = -1; +static int hf_lustre_obd_connect_data_ocd_instance = -1; +static int hf_lustre_obd_connect_data_ocd_maxbytes = -1; +static int hf_lustre_obd_connect_data_ocd_maxmodrpcs = -1; static int hf_lustre_obd_statfs_os_type = -1; static int hf_lustre_obd_statfs_os_spare6 = -1; static int hf_lustre_obd_statfs_os_state = -1; static int hf_lustre_obd_statfs_os_spare3 = -1; static int hf_lustre_lustre_msg_v2_lm_magic = -1; -static int hf_lustre_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_max_brw = -1; static int hf_lustre_ptlrpc_body_pb_last_xid = -1; static int hf_lustre_ptlrpc_body_pb_status = -1; static int hf_lustre_niobuf_remote_flags = -1; static int hf_lustre_ll_fid_id = -1; -static int hf_lustre_ost_lvb_lvb_blocks = -1; static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1; -static int hf_lustre_obd_connect_data_padding1 = -1; static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1; -static int hf_lustre_obd_connect_data_padding2 = -1; static int hf_lustre_obd_ioobj_ioo_seq = -1; static int hf_lustre_niobuf_remote_offset=-1; static int hf_lustre_obd_statfs_os_spare2 = -1; @@ -1018,9 +1111,14 @@ static int hf_lustre_ldlm_intent_opc_readdir = -1; static int hf_lustre_ldlm_intent_opc_getattr = -1; static int hf_lustre_ldlm_intent_opc_lookup = -1; static int hf_lustre_ldlm_intent_opc_unlink = -1; +static int hf_lustre_ldlm_intent_opc_trunc = -1; static int hf_lustre_ldlm_intent_opc_getxattr = -1; static int hf_lustre_ldlm_intent_opc_exec = -1; static int hf_lustre_ldlm_intent_opc_pin = -1; +static int hf_lustre_ldlm_intent_opc_layout = -1; +static int hf_lustre_ldlm_intent_opc_q_dqacq = -1; +static int hf_lustre_ldlm_intent_opc_q_conn = -1; +static int hf_lustre_ldlm_intent_opc_setxattr = -1; static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1; static int hf_lustre_llog_hdr_llh_flag_is_cat = -1; static int hf_lustre_llog_hdr_llh_flag_is_play = -1; @@ -1029,6 +1127,81 @@ static int hf_lustre_lu_ladvise_lla_start = -1; static int hf_lustre_lu_ladvise_lla_end = -1; static int hf_lustre_lu_ladvise_lla_advice = -1; static int hf_lustre_lu_ladvise_lla_padding = -1; + +static int hf_lustre_ldlm_key = -1; +static int hf_lustre_ldlm_value = -1; + +static int hf_lustre_hsm_request = -1; +static int hf_lustre_hsm_req_action = -1; +static int hf_lustre_hsm_req_archive_id = -1; +static int hf_lustre_hsm_req_flags = -1; +static int hf_lustre_hsm_req_itemcount = -1; +static int hf_lustre_hsm_req_data_len = -1; + +static int hf_lustre_hsm_user_item = -1; +static int hf_lustre_hsm_user_item_fid = -1; +static int hf_lustre_hsm_user_item_extent = -1; + +static int hf_lustre_hsm_extent = -1; +static int hf_lustre_hsm_extent_offset = -1; +static int hf_lustre_hsm_extent_length = -1; + +static int hf_lustre_hsm_progress = -1; +static int hf_lustre_hsm_prog_fid = -1; +static int hf_lustre_hsm_prog_cookie = -1; +static int hf_lustre_hsm_prog_extent = -1; +static int hf_lustre_hsm_prog_flags = -1; +static int hf_lustre_hsm_prog_errval = -1; +static int hf_lustre_hsm_prog_data_ver = -1; + +static int hf_lustre_hsm_state_get = -1; +static int hf_lustre_hsm_us_states = -1; +static int hf_lustre_hsm_us_archive_id = -1; +static int hf_lustre_hsm_us_in_prog_state = -1; +static int hf_lustre_hsm_us_in_prog_action = -1; +static int hf_lustre_hsm_us_in_prog_location = -1; +static int hf_lustre_hsm_us_ext_info = -1; + +/* Quota Body */ +static int hf_lustre_qb = -1; +static int hf_lustre_qb_fid = -1; +static int hf_lustre_qb_id = -1; +static int hf_lustre_qb_flags = -1; +static int hf_lustre_qb_padding = -1; +static int hf_lustre_qb_count = -1; +static int hf_lustre_qb_usage = -1; +static int hf_lustre_qb_slv_ver = -1; +static int hf_lustre_qb_lockh = -1; +static int hf_lustre_qb_glb_lockh = -1; + +static int hf_lustre_qid_fid = -1; +static int hf_lustre_qid_uid = -1; +static int hf_lustre_qid_gid = -1; + +/* Layout Intent */ +static int hf_lustre_layout_intent = -1; +static int hf_lustre_layout_intent_opc = -1; +static int hf_lustre_layout_intent_flags = -1; +static int hf_lustre_layout_intent_start = -1; +static int hf_lustre_layout_intent_end = -1; + +/* mds md v1 and v3 */ +static int hf_lustre_lov_mds_md_lmm_magic = -1; +static int hf_lustre_lov_mds_md_lmm_pattern = -1; +static int hf_lustre_lov_mds_md_lmm_object_id = -1; /* v1 only */ +static int hf_lustre_lov_mds_md_lmm_oi = -1; /* v3 only */ +static int hf_lustre_lov_mds_md_lmm_object_seq = -1; /* v1 only */ +static int hf_lustre_lov_mds_md_lmm_stripe_size = -1; +static int hf_lustre_lov_mds_md_lmm_stripe_count = -1; +static int hf_lustre_lov_mds_md_lmm_layout_gen = -1; +static int hf_lustre_lov_mds_md_lmm_pool_name = -1; /* v3 only */ +static int hf_lustre_lov_mds_md_lmm_objects = -1; + +/* struct ost_id */ +static int hf_lustre_ost_id_oi_id = -1; +static int hf_lustre_ost_id_oi_seq = -1; + +static int hf_lustre_generic_data = -1; /* --------------------------------------------------------------------*/ @@ -1066,6 +1239,7 @@ const value_string lustre_ldlm_opcode[] = { const value_string lustre_lov_magic[] = { { LOV_MAGIC_V1, "LOV_MAGIC_V1" }, + { LOV_MAGIC_V3, "LOV_MAGIC_V3" }, {0, NULL} }; @@ -1120,7 +1294,7 @@ const value_string lustre_LMTypes[] = { { 0, NULL } }; -const value_string lustre_mds_reint_t_vals[] = { +const value_string lustre_mds_reint_op_vals[] = { { REINT_SETATTR, "REINT_SETATTR" }, { REINT_CREATE, "REINT_CREATE" }, { REINT_LINK, "REINT_LINK" }, @@ -1195,7 +1369,8 @@ const value_string lustre_op_codes[] = { {104 , "LDLM_BL_CALLBACK"}, {105 , "LDLM_CP_CALLBACK"}, {106 , "LDLM_GL_CALLBACK"}, - {107 , "LDLM_LAST_OPC"}, + {107 , "LDLM_SET_INFO"}, + {108 , "LDLM_LAST_OPC"}, /*MGS Opcodes*/ {250 , "MGS_CONNECT"}, {251 , "MGS_DISCONNECT"}, @@ -1228,17 +1403,6 @@ const value_string lustre_op_codes[] = { { 901, "FLD_LAST_OPC"}, { 0, NULL } }; -/*const value_string lustre_ldlm_mode_vals[] = {*/ -/* { LCK_MINMODE, "MINMODE" },*/ -/* { LCK_EX, "EX" },*/ -/* { LCK_PW, "PW" },*/ -/* { LCK_PR, "PR" },*/ -/* { LCK_CW, "CW" },*/ -/* { LCK_CR, "CR" },*/ -/* { LCK_NL, "NL" },*/ -/* { LCK_GROUP, "GROUP" },*/ -/* { 0, NULL }*/ -/*};*/ /* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */ const value_string lustre_ldlm_mode_vals[] = { @@ -1275,6 +1439,54 @@ const value_string lustre_llog_cmd_t_vals[] = { { 0, NULL } }; +/* from lustre_user.h */ +enum hsm_user_action { + HUA_NONE = 1, /* no action (noop) */ + HUA_ARCHIVE = 10, /* copy to hsm */ + HUA_RESTORE = 11, /* prestage */ + HUA_RELEASE = 12, /* drop ost objects */ + HUA_REMOVE = 13, /* remove from archive */ + HUA_CANCEL = 14 /* cancel a request */ +}; +const value_string lustre_hsm_user_action_t_vals[] = { + { HUA_NONE, "NOOP" }, + { HUA_ARCHIVE, "ARCHIVE" }, + { HUA_RESTORE, "RESTORE" }, + { HUA_RELEASE, "RELEASE" }, + { HUA_REMOVE, "REMOVE" }, + { HUA_CANCEL, "CANCEL" }, +}; + +enum hsm_states { + HS_EXISTS = 0x00000001, + HS_DIRTY = 0x00000002, + HS_RELEASED = 0x00000004, + HS_ARCHIVED = 0x00000008, + HS_NORELEASE = 0x00000010, + HS_NOARCHIVE = 0x00000020, + HS_LOST = 0x00000040, +}; +const value_string lustre_hsm_states_t_vals[] = { + { HS_EXISTS, "EXISTS" }, + { HS_DIRTY, "DIRTY" }, + { HS_RELEASED, "RELEASED" }, + { HS_ARCHIVED, "ARCHIVED" }, + { HS_NORELEASE, "NORELEASED" }, + { HS_NOARCHIVE, "NOARCHIVED" }, + { HS_LOST, "LOST" }, +}; + +enum hsm_progress_states { + HPS_WAITING = 1, + HPS_RUNNING = 2, + HPS_DONE = 3, +}; +const value_string lustre_hsm_progress_state_t_vals[] = { + { HPS_WAITING, "WAITING" }, + { HPS_RUNNING, "RUNNING" }, + { HPS_DONE, "DONE" }, +}; + #ifndef ENABLE_STATIC const gchar version[] = VERSION; @@ -1306,48 +1518,38 @@ plugin_reg_handoff(void) static void display_info_str(proto_item *pi, column_info *cinfo, gint col, const gchar *str) { - if (NULL !=pi) - proto_item_append_text(pi, str); + if (NULL != pi) + proto_item_append_text(pi, str); - if (NULL !=cinfo) - if (check_col(cinfo, col)) - col_append_str(cinfo, col, str); + if (NULL != cinfo) + col_append_str(cinfo, col, str); } /* * Need to be (re)written */ -static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, const char* format, const gchar * str){ - - if (NULL !=pi){ - //va_start(ap, format); - proto_item_append_text(pi, format, str); - //va_end(ap); - } +static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, + const char *format, const gchar *str) +{ + if (NULL != pi) + proto_item_append_text(pi, format, str); - if (NULL !=cinfo){ - if (check_col(cinfo, col)){ - // va_list ap; - // va_start(ap, format); - col_append_fstr(cinfo, col, format, str); - // va_end(ap); - } - } + if (NULL != cinfo) + col_append_fstr(cinfo, col, format, str); } -/* ------------------------------ basic dissect functions ------------------------ */ -static int -dissect_uint64 -(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex) +/* -------------------------- basic dissect functions ------------------- */ +static int dissect_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, + proto_tree *tree, int hfindex) { proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE); return offset+8; } static int -dissect_uint32 -(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex) +dissect_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, + proto_tree *tree, int hfindex) { proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE); return offset+4; @@ -1368,6 +1570,7 @@ dissect_uint8 proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE); return offset+1; } + /* ------------------------------------------------------------------------- */ /* dissect raw data */ @@ -1387,7 +1590,7 @@ lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, if (data_len == 0) return offset; - proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); offset += data_len; proto_item_set_len(item, offset-old_offset); @@ -1396,6 +1599,25 @@ lustre_dissect_element_data(tvbuff_t *tvb _U_, int offset _U_, return offset; } +static int +lustre_dissect_struct_element_data(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, proto_tree *parent_tree _U_, + int hf_index _U_, guint32 data_len) +{ + proto_item *item = NULL; + + if (data_len == 0) + return offset; + + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE); + + offset += data_len; + proto_item_set_len(item, data_len); + offset = add_extra_padding(tvb, offset, pinfo, parent_tree); + + return offset; +} + int lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, int max_length) @@ -1415,6 +1637,37 @@ lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo return offset; } +/* struct ost_id { */ +/* union { */ +/* struct { */ +/* __u64 oi_id; */ +/* __u64 oi_seq; */ +/* } oi; */ +/* struct lu_fid oi_fid; */ +/* }; */ +/* }; */ +int +lustre_dissect_struct_ostid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + old_offset=offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_ost_id); + } + + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_id); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_seq); + + proto_item_set_len(item, offset-old_offset); + + return offset; +} /* ------------------------------------------------------------------------ */ @@ -1473,16 +1726,33 @@ static int lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags); - return offset; } static int lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_version); + guint32 version; + guint32 major, minor, patch, fix; + proto_item *item; - return offset; + version = tvb_get_letohl(tvb, offset); + fix = version & 0xff; + version >>= 8; + patch = version & 0xff; + version >>= 8; + minor = version & 0xff; + version >>= 8; + major = version & 0xff; + + item = proto_tree_add_item(tree, hf_lustre_obd_connect_data_ocd_version, + tvb, offset, 0, TRUE); + proto_item_append_text(item, ": %d.%d.%d.%d", + major, minor, patch, fix); + proto_item_set_len(item, 4); + + offset += 4; + return offset; } static int @@ -1526,30 +1796,6 @@ lustre_dissect_element_obd_connect_data_ocd_nllu(tvbuff_t *tvb _U_, int offset _ } static int -lustre_dissect_element_obd_connect_data_ocd_nllg(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_ocd_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group); - - return offset; -} - -static int lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types); @@ -1558,67 +1804,89 @@ lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int o } static int -lustre_dissect_element_obd_connect_data_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding1); - - return offset; -} - -static int -lustre_dissect_element_obd_connect_data_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding2); - - return offset; -} - -static int -lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) +lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *parent_tree _U_, + int hf_index _U_, guint32 buf_num) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - - - old_offset=offset; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_obd_connect_data); - } + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; - offset=lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, offset, pinfo, tree); + old_offset = offset; - offset=lustre_dissect_element_obd_connect_data_ocd_version(tvb, offset, pinfo, tree); + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, + offset, -1, TRUE); + tree = proto_item_add_subtree(item, + ett_lustre_obd_connect_data); + } - offset=lustre_dissect_element_obd_connect_data_ocd_grant(tvb, offset, pinfo, tree); + /* ocd_connect_flags = get_... */ + offset = lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_index(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_obd_connect_data_ocd_version(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_obd_connect_data_ocd_grant(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_obd_connect_data_ocd_index(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_nllg(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_transno(tvb, offset, pinfo, tree); + if (data_len == 72) { + offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_ocd_group(tvb, offset, pinfo, tree); + } else { /* if data_len == 192 */ + /* Actually blocksize, inodespace, grant_extent */ + offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, + offset, pinfo, tree); + } - offset=lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_nllg); + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_transno); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_group); + offset = lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, + offset, pinfo, tree); - offset=lustre_dissect_element_obd_connect_data_padding1(tvb, offset, pinfo, tree); + /* if (ocd_connect_flags & OBD_CONNECT_MAX_EASIZE) */ + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_max_easize); - offset=lustre_dissect_element_obd_connect_data_padding2(tvb, offset, pinfo, tree); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_instance); + /* if (ocd_connect_flags & OBD_CONNECT_MAXBYTES) */ + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_maxbytes); + if (data_len >= 74) /* && (flags & OBD_CONNECT_MULTIMODRPCS) */ + offset = dissect_uint16(tvb, offset, pinfo, tree, + hf_lustre_obd_connect_data_ocd_maxmodrpcs); + if (old_offset+data_len > offset) { + proto_tree_add_item(tree, hf_lustre_extra_padding, + tvb, offset, (old_offset+data_len)-offset, TRUE); + offset = old_offset+data_len; + } - proto_item_set_len(item, offset-old_offset); + proto_item_set_len(item, offset-old_offset); - return offset; + return offset; } @@ -1697,116 +1965,110 @@ lustre_dissect_struct_lov_ost_data_v1(tvbuff_t *tvb _U_, int offset _U_, packet_ /* IDL: uint64 lmm_object_id; */ /* IDL: uint64 lmm_object_seq; */ /* IDL: uint32 lmm_stripe_size; */ -/* IDL: uint32 lmm_stripe_count; */ +/* IDL: uint16 lmm_stripe_count; */ +/* IDL: uint16 lmm_layout_gen; */ /* IDL: struct lov_ost_data_v1 { */ /* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */ /* IDL: } */ -static int -lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_magic); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_pattern); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_id); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_object_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_seq); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_size); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_count); - - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=lustre_dissect_struct_lov_ost_data_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1_lmm_objects); - return offset; -} - -static int -lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int num) -{ - int i; - /*g_print("num = %d", num);*/ - for (i = 0; i < num; i++){ - offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvb, offset, pinfo, tree); - } - - return offset; -} - - - int lustre_dissect_struct_lov_mds_md_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; - - guint32 stripe_count ; - - - old_offset=offset; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1); - } - - offset=lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvb, offset, pinfo, tree); + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset, i; + + guint16 stripe_count; + + old_offset=offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, + tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1); + } + + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_magic); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_pattern); + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_object_id); + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_object_seq); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_stripe_size); + + stripe_count = tvb_get_letohs(tvb, offset); + offset = dissect_uint16(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_stripe_count); + offset = dissect_uint16(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_layout_gen); + + for (i = 0; i < stripe_count; ++i) + offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, + pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); + + proto_item_set_len(item, offset-old_offset); + + return offset; +} + + +/* struct lov_mds_md_v3 { /\* LOV EA mds/wire data (little-endian) *\/ */ +/* __u32 lmm_magic; /\* magic number = LOV_MAGIC_V3 *\/ */ +/* __u32 lmm_pattern; /\* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 *\/ */ +/* struct ost_id lmm_oi; /\* LOV object ID *\/ */ +/* __u32 lmm_stripe_size; /\* size of stripe in bytes *\/ */ +/* /\* lmm_stripe_count used to be __u32 *\/ */ +/* __u16 lmm_stripe_count; /\* num stripes in use for this object *\/ */ +/* __u16 lmm_layout_gen; /\* layout generation number *\/ */ +/* char lmm_pool_name[LOV_MAXPOOLNAME + 1]; /\* must be 32bit aligned *\/ */ +/* struct lov_ost_data_v1 lmm_objects[0]; /\* per-stripe data *\/ */ +/* }; */ - offset=lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvb, offset, pinfo, tree); +int +lustre_dissect_struct_lov_mds_md_v3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset, i; - offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvb, offset, pinfo, tree); + guint16 stripe_count; - offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_seq(tvb, offset, pinfo, tree); + old_offset=offset; - offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvb, offset, pinfo, tree); + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, + tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v3); + } - stripe_count = tvb_get_letohl(tvb,offset); - offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvb, offset, pinfo, tree); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_magic); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_pattern); + offset = lustre_dissect_struct_ostid(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_oi); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_stripe_size); - offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvb, offset, pinfo, tree, stripe_count); + stripe_count = tvb_get_letohs(tvb, offset); + offset = dissect_uint16(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_stripe_count); + offset = dissect_uint16(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_layout_gen); + offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, + hf_lustre_lov_mds_md_lmm_pool_name, + LOV_MAXPOOLNAME+1); + for (i = 0; i < stripe_count; ++i) + offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset, + pinfo, tree, hf_lustre_lov_mds_md_lmm_objects); - proto_item_set_len(item, offset-old_offset); + proto_item_set_len(item, offset-old_offset); - return offset; + return offset; } int @@ -1825,9 +2087,13 @@ lustre_dissect_struct_lov_mds_md(tvbuff_t *tvb _U_, int offset _U_, packet_info offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,parent_tree, hf_index); break; + case LOV_MAGIC_V3: + offset=lustre_dissect_struct_lov_mds_md_v3(tvb,offset,pinfo,parent_tree, + hf_index); + break; default: offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree, - hf_lustre_extra_padding, buff_num); + hf_lustre_generic_data, buff_num); break; }; @@ -2226,92 +2492,88 @@ lustre_dissect_struct_niobuf_remote(tvbuff_t *tvb _U_, int offset _U_, packet_in /* IDL: uint64 lvb_atime; */ /* IDL: uint64 lvb_ctime; */ /* IDL: uint64 lvb_blocks; */ +/* v1 of this type ends here */ +/* uint32 lvb_mtime_ns; */ +/* uint32 lvb_atime_ns; */ +/* uint32 lvb_ctime_ns; */ +/* uint32 lvb_padding; */ /* IDL: } */ static int -lustre_dissect_element_ost_lvb_lvb_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size); - - return offset; -} - -static int -lustre_dissect_element_ost_lvb_lvb_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_mtime, tvb, offset, 8, &ns ); - offset+=8; - return offset; -} - -static int -lustre_dissect_element_ost_lvb_lvb_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_atime, tvb, offset, 8, &ns ); - offset+=8; - - return offset; -} - -static int -lustre_dissect_element_ost_lvb_lvb_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - nstime_t ns; - /* timestamp */ - ns.secs = tvb_get_letohl(tvb,offset); - ns.nsecs=0; - proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_ctime, tvb, offset, 8, &ns ); - offset+=8; - - return offset; -} - -static int -lustre_dissect_element_ost_lvb_lvb_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) +lustre_dissect_element_ost_lvb_lvb_time(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *tree _U_, + int hf_index _U_, int ns_offset _U_) { - offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks); - - return offset; + nstime_t ns; + /* timestamp */ + ns.secs = tvb_get_letoh64(tvb, offset); + if (ns_offset != 0) + ns.nsecs = tvb_get_letohl(tvb, offset+ns_offset); + proto_tree_add_time(tree, hf_index, tvb, offset, 8, &ns); + offset += 8; + return offset; } int -lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_) +lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *parent_tree _U_, + int hf_index _U_, int buff_num _U_) { - proto_item *item = NULL; - proto_tree *tree = NULL; - int old_offset; + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int buff_len; + buff_len = LUSTRE_BUFFER_LEN(buff_num); + if (buff_len == 0) + return offset; - old_offset=offset; + old_offset=offset; - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); - tree = proto_item_add_subtree(item, ett_lustre_ost_lvb); - } + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_ost_lvb); + } - offset=lustre_dissect_element_ost_lvb_lvb_size(tvb, offset, pinfo, tree); + /* v1 format size is 40 + * v2 format size is 56 w/ ns for times + */ - offset=lustre_dissect_element_ost_lvb_lvb_mtime(tvb, offset, pinfo, tree); + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_size); - offset=lustre_dissect_element_ost_lvb_lvb_atime(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, + pinfo, tree, hf_lustre_ost_lvb_lvb_mtime, + (buff_len >= 56) ?32 :0); - offset=lustre_dissect_element_ost_lvb_lvb_ctime(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, + pinfo, tree, hf_lustre_ost_lvb_lvb_atime, + (buff_len >= 56) ?28 :0); - offset=lustre_dissect_element_ost_lvb_lvb_blocks(tvb, offset, pinfo, tree); + offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset, + pinfo, tree, hf_lustre_ost_lvb_lvb_ctime, + (buff_len >= 56) ?24 :0); + offset = dissect_uint64(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_blocks); - proto_item_set_len(item, offset-old_offset); + /* post-v1 format */ + if (buff_len >= 56) { + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_mtime_ns); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_atime_ns); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_ctime_ns); + offset = dissect_uint32(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb_lvb_padding); + } + proto_item_set_len(item, offset-old_offset); - return offset; + return offset; } @@ -3433,7 +3695,7 @@ lustre_dissect_struct_mdt_rec_setattr(tvbuff_t *tvb _U_, int offset _U_, packet_ tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setattr); } sa_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_t_vals, "Unknown sa_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_op_vals, "Unknown sa_opc")); offset=lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvb, offset, pinfo, tree); @@ -3724,7 +3986,7 @@ lustre_dissect_struct_mdt_rec_create(tvbuff_t *tvb _U_, int offset _U_, tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_create); } cr_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_t_vals, "Unknown cr_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_op_vals, "Unknown cr_opc")); offset=lustre_dissect_element_mdt_rec_create_cr_opcode(tvb, offset, pinfo, tree); @@ -4009,7 +4271,7 @@ lustre_dissect_struct_mdt_rec_link(tvbuff_t *tvb _U_, int offset _U_, packet_inf tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_link); } lk_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_t_vals, "Unknown lk_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_op_vals, "Unknown lk_opc")); offset=lustre_dissect_element_mdt_rec_link_lk_opcode(tvb, offset, pinfo, tree); @@ -4295,7 +4557,7 @@ lustre_dissect_struct_mdt_rec_unlink(tvbuff_t *tvb _U_, int offset _U_, packet_i } ul_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_t_vals, "Unknown ul_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_op_vals, "Unknown ul_opc")); offset=lustre_dissect_element_mdt_rec_unlink_ul_opcode(tvb, offset, pinfo, tree); @@ -4571,7 +4833,7 @@ lustre_dissect_struct_mdt_rec_rename(tvbuff_t *tvb _U_, int offset _U_, packet_i } rn_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_t_vals, "Unknown rn_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_op_vals, "Unknown rn_opc")); offset=lustre_dissect_element_mdt_rec_rename_rn_opcode(tvb, offset, pinfo, tree); @@ -4877,7 +5139,7 @@ int tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setxattr); } sx_opcode=tvb_get_letohl(tvb,offset); - display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_t_vals, "Unknown sx_opc")); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_op_vals, "Unknown sx_opc")); offset=lustre_dissect_element_mdt_rec_setxattr_sx_opcode(tvb, offset, pinfo, tree); @@ -5098,8 +5360,6 @@ lustre_dissect_struct_obd_uuid(tvbuff_t *tvb _U_, int offset _U_, packet_info *p return offset; } - - /* IDL: struct ldlm_res_id { */ /* IDL: uint64 name[4]; */ /* IDL: } */ @@ -5363,20 +5623,28 @@ lustre_dissect_struct_ldlm_flock(tvbuff_t *tvb _U_, int offset _U_, packet_info /* IDL: } */ static int -lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) -{ - guint32 opcode; - /* this opcode is like a flag*/ - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_open ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_creat ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_readdir ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getattr ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_lookup ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_unlink ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getxattr); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_exec ); - dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_pin ); - opcode = tvb_get_letohl(tvb,offset); +lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *tree _U_) +{ + guint32 opcode; + /* this opcode is like a flag*/ +#define DOBIT(_hf) dissect_uint32(tvb, offset, pinfo, tree, (_hf)) + DOBIT(hf_lustre_ldlm_intent_opc_open ); + DOBIT(hf_lustre_ldlm_intent_opc_creat ); + DOBIT(hf_lustre_ldlm_intent_opc_readdir ); + DOBIT(hf_lustre_ldlm_intent_opc_getattr ); + DOBIT(hf_lustre_ldlm_intent_opc_lookup ); + DOBIT(hf_lustre_ldlm_intent_opc_unlink ); + DOBIT(hf_lustre_ldlm_intent_opc_getxattr); + DOBIT(hf_lustre_ldlm_intent_opc_exec ); + DOBIT(hf_lustre_ldlm_intent_opc_pin ); + DOBIT(hf_lustre_ldlm_intent_opc_layout ); + DOBIT(hf_lustre_ldlm_intent_opc_q_dqacq ); + DOBIT(hf_lustre_ldlm_intent_opc_q_conn ); + DOBIT(hf_lustre_ldlm_intent_opc_setxattr); +#undef DOBIT + opcode = tvb_get_letohl(tvb,offset); display_info_str(tree->parent, pinfo->cinfo, COL_INFO, "[ intent :"); if(opcode & IT_OPEN ){ @@ -5403,6 +5671,10 @@ lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " unlink"); proto_item_append_text(tree, " unlink" ); } + if(opcode & IT_TRUNC ){ + display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " trunc"); + proto_item_append_text(tree, " trunc" ); + } if(opcode & IT_GETXATTR){ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getxattr"); proto_item_append_text(tree, " getxattr" ); @@ -5415,6 +5687,22 @@ lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " pin"); proto_item_append_text(tree, " pin" ); } + if(opcode & IT_LAYOUT ){ + display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " layout"); + proto_item_append_text(tree, " layout" ); + } + if(opcode & IT_QUOTA_DQACQ ){ + display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_dqacq"); + proto_item_append_text(tree, " quota_dqacq" ); + } + if(opcode & IT_QUOTA_CONN ){ + display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_conn"); + proto_item_append_text(tree, " quota_conn" ); + } + if(opcode & IT_SETXATTR ){ + display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " setxattr"); + proto_item_append_text(tree, " setxattr" ); + } display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " ]"); offset+=8; @@ -5634,7 +5922,6 @@ lustre_dissect_element_ldlm_request_lock_desc(tvbuff_t *tvb _U_, int offset _U_, static int lustre_dissect_element_ldlm_request_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - /*if (check_col(pinfo->cinfo, COL_INFO)) */ /* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/ offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_handle); @@ -5705,7 +5992,6 @@ lustre_dissect_element_ldlm_reply_lock_desc(tvbuff_t *tvb _U_, int offset _U_, p static int lustre_dissect_element_ldlm_reply_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - /*if (check_col(pinfo->cinfo, COL_INFO)) */ /* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/ offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_handle); @@ -5825,41 +6111,57 @@ lustre_dissect_struct_mgs_send_param(tvbuff_t *tvb _U_, int offset _U_, packet_i 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; + int string_len = 64; + proto_tree_add_item(parent_tree, hf_index, tvb, + offset, string_len, TRUE); +#ifdef WIRESHARK_COMPAT + display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", + (const gchar *)tvb_get_string(tvb, offset, + string_len)); +#else + display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s", + (const gchar *)tvb_get_string_enc(wmem_packet_scope(), + tvb, offset, + string_len, + ENC_ASCII)); +#endif + offset += string_len; - return offset; + 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; - + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; - old_offset=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); - } + 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 = 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); + 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); + proto_item_set_len(item, offset-old_offset); - return offset; + return offset; } /* IDL: struct mgs_config_res { @@ -7135,8 +7437,6 @@ lustre_dissect_struct_llog_log_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_inf proto_tree *tree = NULL; int old_offset; - - old_offset=offset; if (parent_tree) { @@ -7166,7 +7466,6 @@ lustre_dissect_struct_llog_log_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_inf offset=lustre_dissect_element_llog_log_hdr_llh_tail(tvb, offset, pinfo, tree); - proto_item_set_len(item, offset-old_offset); return offset; @@ -8196,6 +8495,102 @@ lustre_dissect_struct_capa(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo return offset; } +int +lustre_dissect_struct_lquota_id(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *parent_tree _U_, + int hf_index _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + old_offset=offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_lquota_id); + } + + offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_qid_fid); + offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_uid); + offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_gid); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +int +lustre_dissect_struct_quota_body(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *parent_tree _U_, + int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_quota_body); + } + + offset = lustre_dissect_struct_lu_fid(tvb, offset, pinfo, tree, hf_lustre_qb_fid); + offset = lustre_dissect_struct_lquota_id(tvb, offset, pinfo, tree, hf_lustre_qb_id); + offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_flags); + offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_padding); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_count); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_usage); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_slv_ver); + offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, + hf_lustre_qb_lockh); + offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, + hf_lustre_qb_glb_lockh); + offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree, + hf_lustre_qb_padding, 32); + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +int +lustre_dissect_struct_layout_intent(tvbuff_t *tvb _U_, int offset _U_, + packet_info *pinfo _U_, + proto_tree *parent_tree _U_, + int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_layout_intent); + } + + offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_opc); + offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_flags); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_start); + offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_end); + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} int lustre_dissect_struct_acl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) @@ -8228,6 +8623,288 @@ lustre_dissect_struct_acl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo return offset; } +/* struct close_data { */ +/* struct lustre_handle cd_handle; */ +/* struct lu_fid cd_fid; */ +/* __u64 cd_data_version; */ +/* __u64 cd_reserved[8]; */ +/* }; */ +static int +lustre_dissect_struct_close_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_close_data); + } + + offset=lustre_dissect_element_handle_cookie(tvb,offset,pinfo,tree); + offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_close_fid); + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_close_data_ver); + offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_close_reserved,8*sizeof(guint64)); + + if (item) + proto_item_set_len(item, offset-old_offset); + + return offset; +} + +static int +lustre_dissect_element_mds_getinfo_vallen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_, guint32 buf_num) +{ + int data_len; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index); + + offset=add_extra_padding(tvb,offset,pinfo,tree); + + return offset; +} + + +/* ------------------------------------------------------------------------- * + * HSM Dissection + * + * struct hsm_request { + * __u32 hr_action; /\* enum hsm_user_action *\/ + * __u32 hr_archive_id; /\* archive id, used only with HUA_ARCHIVE *\/ + * __u64 hr_flags; /\* request flags *\/ + * __u32 hr_itemcount; /\* item count in hur_user_item vector *\/ + * __u32 hr_data_len; + */ + +int +lustre_dissect_element_hsm_req_action(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) +{ + offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_action); + return offset; +} + +int +lustre_dissect_element_hsm_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_) +{ + /* TODO - pick apart request flags - HSM_FORCE_ACTION, HSM_GHOST_COPY */ + offset=dissect_uint64(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_flags); + return offset; +} + +static int +lustre_dissect_struct_hsm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + guint32 action; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_hsm_request); + } + + action=tvb_get_letohl(tvb,offset); + display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(action, lustre_hsm_user_action_t_vals, "Unknown cr_opc")); + + offset=lustre_dissect_element_hsm_req_action(tvb,offset,pinfo,tree); + + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_archive_id); + + offset=lustre_dissect_element_hsm_req_flags(tvb,offset,pinfo,tree); + + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_itemcount); + + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_data_len); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +/* struct hsm_extent { */ +/* __u64 offset; */ +/* __u64 length; */ +/* } */ +static int +lustre_dissect_struct_hsm_extent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + + old_offset=offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_hsm_extent); + } + + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_offset); + + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_length); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +/* struct hsm_user_item { */ +/* struct lu_fid hui_fid; */ +/* struct hsm_extent hui_extent; */ +/* } __attribute__((packed)); */ +static int +lustre_dissect_struct_hsm_user_item(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_hsm_user_item); + } + + offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_fid); + + offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_extent); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +/* struct hsm_progress_kernel { */ +/* struct lu_fid hpk_fid; */ +/* __u64 hpk_cookie; */ +/* struct hsm_extent hpk_extent; */ +/* __u16 hpk_flags; */ +/* __u16 hpk_errval; */ +/* __u32 hpk_padding1; */ +/* __u64 hpk_data_version; */ +/* __u64 hpk_padding2; */ +/* } __attribute__((packed)); */ +static int +lustre_dissect_struct_hsm_progress(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_hsm_progress); + } + + offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_fid); + + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_cookie); + + offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_extent); + + offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_flags); + + offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_errval); + + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_extra_padding); + + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_data_ver); + + offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_extra_padding); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + +static int +lustre_dissect_struct_element_states(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_) +{ + offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_index); + return offset; +} + +/* struct hsm_user_state { */ +/* ** Current HSM states, from enum hsm_states. */ +/* __u32 hus_states; */ +/* __u32 hus_archive_id; */ +/* ** The current undergoing action, if there is one */ +/* __u32 hus_in_progress_state; */ +/* __u32 hus_in_progress_action; */ +/* struct hsm_extent hus_in_progress_location; */ +/* char hus_extended_info[]; */ +/* }; */ +static int +lustre_dissect_struct_hsm_user_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) +{ + proto_item *item = NULL; + proto_tree *tree = NULL; + int old_offset; + int data_len; + + old_offset=offset; + + data_len = LUSTRE_BUFFER_LEN(buf_num); + if (data_len == 0) + return offset; + + if (parent_tree) { + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_hsm_user_state); + } + + offset=lustre_dissect_struct_element_states(tvb,offset,pinfo,tree,hf_lustre_hsm_us_states); + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_archive_id); + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_state); + offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_action); + offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_location); + offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_hsm_us_ext_info, + (data_len-(offset-old_offset))); + + if (item) + proto_item_set_len(item, offset-old_offset); + return offset; +} + /* ------------------------------------------------------------------------- */ /* dissect string . @@ -8241,6 +8918,44 @@ lustre_dissect_struct_acl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo * determine the string length), must respect : 0 1) { +#ifdef WIRESHARK_COMPAT + display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, + " filename : %s", + (const gchar *)tvb_get_string(tvb, offset, + string_len)); +#else + display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, + " filename : %s", + (const gchar *)tvb_get_string_enc(wmem_packet_scope(), + tvb, offset, + string_len, + ENC_ASCII)); +#endif + } + + offset += string_len; + proto_item_set_len(item, offset-old_offset); + offset = add_extra_padding(tvb, offset, pinfo, parent_tree); + + return offset; +} + +static int lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num) { proto_item *item = NULL; @@ -8249,24 +8964,11 @@ lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *p 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); - * } - */ - string_len = LUSTRE_BUFFER_LEN(buf_num); if(string_len == 0) return offset; - /* 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) ); + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); offset+=string_len; proto_item_set_len(item, offset-old_offset); @@ -8274,8 +8976,91 @@ lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *p return offset; } - /* ------------------------------------------------------------------------- */ +static int +lustre_dissect_raw_nstr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, + guint32 max_len _U_) +{ + proto_item *item = NULL; + int old_offset, string_len; + char c; + + old_offset = offset; + + string_len = -1; + do { + ++ string_len; + c = tvb_get_guint8(tvb, offset + string_len); + } while (string_len < max_len && c != '\0'); + + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE); + offset += string_len+1; + proto_item_set_len(item, offset-old_offset); + return offset; +} + +static int +lustre_dissect_raw_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, + proto_tree *parent_tree _U_, int hf_index _U_, + guint32 length _U_) +{ + proto_item *item = NULL; + + item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, length, TRUE); + proto_item_set_len(item, length); + return offset+length; +} + +int +lustre_dissect_xattr_eavals(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint32 buff_num) +{ + /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] * + * array length == sizeof(eavals_lens)/sizeof(uint32) + * Buff 1: array of strings (name of xattr) + * Buff 2: array of data (data of xattr) + * Buff 3: array of data lengths (in buff 2) + */ + int count, i, size; + int namestart, datastart, lenstart, namelen, datalen, lenlen; + int nameoffset, dataoffset; + proto_item *item = NULL; + proto_tree *tree = NULL; + + namelen = LUSTRE_BUFFER_LEN(buff_num); + datalen = LUSTRE_BUFFER_LEN(buff_num+1); + lenlen = LUSTRE_BUFFER_LEN(buff_num+2); + + count = lenlen / sizeof(guint32); + + namestart = nameoffset = offset; + datastart = namestart + namelen; + datastart += (8- datastart%8)%8; + dataoffset = datastart; + lenstart = datastart + datalen; + lenstart += (8- lenstart%8)%8; + + item = proto_tree_add_item(parent_tree, hf_lustre_xattrs, tvb, offset, -1, TRUE); + tree = proto_item_add_subtree(item, ett_lustre_xattrs); + + for (i = 0; i < count; ++i) { + int sizeoffset; + sizeoffset = lenstart + sizeof(guint32)*i; + size = tvb_get_letohl(tvb, sizeoffset); + + nameoffset = lustre_dissect_raw_nstr(tvb, nameoffset, pinfo, tree, + hf_lustre_xattrs_name, + (namestart+namelen)-nameoffset); + dataoffset = lustre_dissect_raw_data(tvb, dataoffset, pinfo, tree, + hf_lustre_xattrs_data, size); + dissect_uint32(tvb, sizeoffset, pinfo, tree, hf_lustre_xattrs_size); + } + + offset = lenstart + lenlen; + offset += (8- offset%8)%8; + proto_item_set_len(item, offset-namestart); + return offset; +} /* Process REINT opcode requests */ @@ -8310,8 +9095,8 @@ static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info * /* [rec_create][filename][tgt.. à 0 pour l'instant][ldlm_request] */ offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); - /* REINT_CREATE_SLAVE / SYM */ + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); + /* REINT_CREATE_SLAVE / SYM / RMT_ACL */ if (LUSTRE_BUFCOUNT > 4) { /* for CREATE_SYM this is actually name of target - encoded in mdt_rec_create.cr_mode */ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+3); @@ -8324,7 +9109,7 @@ static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset=lustre_dissect_struct_mdt_rec_link(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_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; @@ -8337,7 +9122,7 @@ static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl); } else { - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2); offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; } break; @@ -8345,35 +9130,32 @@ static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info * offset=lustre_dissect_struct_mdt_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_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); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+4); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+5) > 0) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; break; case REINT_OPEN: /* [rec_create][filename][eadata] */ offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create); - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2); break; case REINT_SETXATTR: - /* 2.x+ [rec_setxattr][capa1][name][eadata] */ + /* 2.x+ [rec_setxattr][capa1][name][eadata][dlm_req] */ /* old? [rec_setxattr][ldlm_request] */ offset=lustre_dissect_struct_mdt_rec_setxattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr); if (LUSTRE_BUFCOUNT > 2) { offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1); offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2); - offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, + offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata_str, LUSTRE_REQ_REC_OFF+3); if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0) - offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie); + offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ; } else if (LUSTRE_BUFCOUNT == 2) offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request); break; - default: - break; - } return offset ; @@ -8384,12 +9166,16 @@ static int reint_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info * static int lustre_dissect_generic_connect(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { - /*TODO : add a cuuid and target uid */ - offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid); - offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid); - offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mdt_body_handle); - offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data); - return offset; + /*TODO : add a cuuid and target uid */ + offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, + hf_lustre_obd_uuid); + offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, + hf_lustre_obd_uuid); + offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree, + hf_lustre_mdt_body_handle); + offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, + tree, hf_lustre_obd_connect_data, 4); + return offset; } int @@ -8480,15 +9266,16 @@ lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo 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); + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); if (pb_type==PTL_RPC_MSG_REPLY) - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */ + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */ break; case OST_CONNECT: if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree); if (pb_type==PTL_RPC_MSG_REPLY) - offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data); + offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, + tree, hf_lustre_obd_connect_data, 1); break; case OST_DISCONNECT: /* [nothing] */ break; @@ -8514,7 +9301,7 @@ lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo 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_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); /* key */ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */ } /* if Key = "evict_by_nid" --> need to be process.. TODO */ @@ -8545,6 +9332,7 @@ lustre_ost_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo static int lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type) { + int i; switch (opc){ case MDS_DISCONNECT: /*[nothing]*/ @@ -8576,7 +9364,7 @@ lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo case MDS_GETATTR: offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); if (pb_type == PTL_RPC_MSG_REPLY) { /* [mdt_md][acl][capa1][capa2] */ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, + offset=lustre_dissect_struct_lov_mds_md(tvb, offset, pinfo, tree, hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, @@ -8617,6 +9405,7 @@ lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr); offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2); + offset=lustre_dissect_struct_close_data(tvb,offset,pinfo,tree, hf_lustre_close_data, LUSTRE_REQ_REC_OFF+3); } if(pb_type==PTL_RPC_MSG_REPLY) { /* [mdt_body][md][cookie][capa1][capa2] */ @@ -8650,7 +9439,7 @@ lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo /* [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); + offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1); if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0) /* open : ...[ACL]... @@ -8685,8 +9474,40 @@ lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree); if (pb_type==PTL_RPC_MSG_REPLY || pb_type == PTL_RPC_MSG_ERR) /*[obd_connect_data]*/ - offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data); + offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, + tree, hf_lustre_obd_connect_data, 1); break; + case MDS_HSM_REQUEST: + /* [mdt_body][hsm_request][array of hsm_user_item][generic_data] */ + if (pb_type==PTL_RPC_MSG_REQUEST) { + offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); + offset=lustre_dissect_struct_hsm_request(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); + for(i = LUSTRE_REQ_REC_OFF+2; i < LUSTRE_BUFCOUNT-1; ++i) { + offset=lustre_dissect_struct_hsm_user_item(tvb, offset, pinfo, tree, hf_lustre_hsm_user_item, i); + } + offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_generic_data, LUSTRE_REQ_REC_OFF+3); + } + break; + case MDS_HSM_PROGRESS: + /* [mdt_body][hsm_progress] */ + if (pb_type==PTL_RPC_MSG_REQUEST) { + offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); + offset=lustre_dissect_struct_hsm_progress(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1); + } + break; + case MDS_HSM_STATE_GET: + offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); + if (pb_type==PTL_RPC_MSG_REPLY) + /* ...[hsm_user_state] */ + offset=lustre_dissect_struct_hsm_user_state(tvb, offset, pinfo, tree, hf_lustre_hsm_state_get, LUSTRE_REQ_REC_OFF+1); + break; + case MDS_GET_INFO: + if (pb_type == PTL_RPC_MSG_REQUEST) { + offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_key, LUSTRE_REQ_REC_OFF); + offset=lustre_dissect_element_mds_getinfo_vallen(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_vallen, LUSTRE_REQ_REC_OFF+1); + } + if (pb_type == PTL_RPC_MSG_REPLY) + offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_data, LUSTRE_REQ_REC_OFF); default: break; }; @@ -8713,44 +9534,87 @@ lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo } if (pb_type==PTL_RPC_MSG_REPLY) { guint32 ldlm_type; - /*[ldlm_reply]*/ + + /* [ldlm_reply] */ offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree, hf_lustre_ldlm_reply, &ldlm_type); + /* Generic Reply: + * [mdt_body][mdt_md][acl] + * CREATE or GETATTR: + * [mdt_body][mdt_md][acl][capa1] + * OPEN: + * [mdt_body][mdt_md][acl][capa1][capa2] + * GETXATTR: + * [mdt_body][mdt_md][acl][eadata][eavals][eavals_lens] + * + * LAYOUT: + * [dlm_lvb] + * QUOTA: + * [dlm_lvb][quota_body] + */ + /* check if we're done processing */ if (LUSTRE_BUFCOUNT <= 2) break; - if (LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF) == 40) + /* LAYOUT and QUOTA */ + if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) == 40) { /* TODO :this code need to be check and test, the * lustre corresponding code isn't explicit, so not * sure to have this buffer, but in example it works * fine */ offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, - hf_lustre_ost_lvb); + hf_lustre_ost_lvb, + LUSTRE_DLM_REPLY_REC_OFF); + if (LUSTRE_BUFCOUNT == 3) + break; + offset = lustre_dissect_struct_quota_body(tvb, offset, + pinfo, tree, hf_lustre_qb, + LUSTRE_DLM_REPLY_REC_OFF+1); + break; - else if (ldlm_type == LDLM_EXTENT) { - offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1, - LUSTRE_DLM_REPLY_REC_OFF); + } else if ((ldlm_type == LDLM_EXTENT) || (LUSTRE_BUFCOUNT == 3)) { + int magic; + // ?? + magic=tvb_get_letohl(tvb, offset); + if (magic == LOV_MAGIC_V1) + offset = lustre_dissect_struct_lov_mds_md_v1(tvb, offset, + pinfo, tree, hf_lustre_lov_mds_md_v1); + else + offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, + tree, hf_lustre_ost_lvb, + LUSTRE_DLM_REPLY_REC_OFF+1); break; } if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0) offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body); - offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1, - LUSTRE_DLM_INTENT_REC_OFF); + offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, + LUSTRE_DLM_REPLY_REC_OFF+1); /* ldlm_intent_server : ACL */ offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree, - hf_lustre_acl, LUSTRE_DLM_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); + hf_lustre_acl, LUSTRE_DLM_REPLY_REC_OFF+2); + + if (LUSTRE_BUFCOUNT == 8) { + /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] */ + offset = lustre_dissect_xattr_eavals(tvb, offset, pinfo, tree, + LUSTRE_DLM_REPLY_REC_OFF+3); + break; + + } else if (LUSTRE_BUFCOUNT >= 6) { + /* ldlm_intent_open_server : [capa1][capa2] */ + /* ldlm_intent_open_server : [capa1] */ + offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, + hf_lustre_capa, + LUSTRE_DLM_REPLY_REC_OFF+3); + offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree, + hf_lustre_capa, + LUSTRE_DLM_REPLY_REC_OFF+4); + } } break; @@ -8776,8 +9640,9 @@ lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo /*[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); + offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb, + LUSTRE_DLM_REPLY_REC_OFF); } /*reply : [nothing] */ break; @@ -8785,13 +9650,23 @@ lustre_ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo 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); + offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb, + LUSTRE_REQ_REC_OFF+1); } if(pb_type==PTL_RPC_MSG_REPLY) /* [ost_lvb] */ - offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb); + offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, + hf_lustre_ost_lvb, + LUSTRE_REPLY_REC_OFF); break; + case LDLM_SET_INFO: + /* ? [key-string][value-data] */ + if(pb_type==PTL_RPC_MSG_REQUEST) { + offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ldlm_key, LUSTRE_REQ_REC_OFF); /* key */ + offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_ldlm_value, LUSTRE_REQ_REC_OFF+1); /* value */ + } + break; default : break; } @@ -8804,9 +9679,10 @@ lustre_mgs_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo switch (opc){ case MGS_CONNECT : if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */ - offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree); + offset = lustre_dissect_generic_connect(tvb, offset, pinfo, tree); if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/ - offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data); + offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo, + tree, hf_lustre_obd_connect_data, 1); break; case MGS_DISCONNECT : /*[nothing]*/ @@ -8867,7 +9743,7 @@ lustre_llog_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body); if(pb_type==PTL_RPC_MSG_REQUEST) /* [filename] */ if (LUSTRE_BUFCOUNT>2) - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_name, + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_llogd_name, LUSTRE_REQ_REC_OFF+1); break; case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */ @@ -8903,14 +9779,25 @@ lustre_llog_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo /* [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, + /* if (keyword == "config") */ + if (strcmp( +#ifdef WIRESHARK_COMPAT + (const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF, tvb_get_letohl(tvb, LUSTRE_BUFLEN_OFF + 4 * LUSTRE_REQ_REC_OFF)), +#else + (const char *)tvb_get_string_enc(wmem_packet_scope(), tvb, + LUSTRE_REQ_REC_OFF, + tvb_get_letohl(tvb, + LUSTRE_BUFLEN_OFF + 4 * + LUSTRE_REQ_REC_OFF), + ENC_ASCII), +#endif "config") == 0) - /* if(keyword == "config") */ - offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_client, - LUSTRE_REQ_REC_OFF+1); + offset = lustre_dissect_element_string(tvb, offset, pinfo, tree, + hf_lustre_llogd_client, + LUSTRE_REQ_REC_OFF+1); } if(pb_type==PTL_RPC_MSG_REPLY) /*[buf] sizeof = llog_chunk_size*/ @@ -8941,42 +9828,44 @@ 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; - }; + switch (opc) { + case SEQ_QUERY: + if (pb_type == PTL_RPC_MSG_REQUEST) + offset = lustre_dissect_struct_seq(tvb, offset, pinfo, + tree, hf_lustre_seq_opc); + offset = lustre_dissect_struct_seq_range(tvb, offset, + pinfo, tree); + break; + + default: + g_print("error: SEQ Opcode: %d unknown\n", opc); + col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); + break; + }; - return offset; + 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; - }; + switch (opc) { + case FLD_QUERY: + if (pb_type == PTL_RPC_MSG_REQUEST) + offset = lustre_dissect_struct_seq(tvb, offset, pinfo, + tree, hf_lustre_fld_opc); + offset = lustre_dissect_struct_seq_range(tvb, offset, + pinfo, tree); + break; + + default: + g_print("error: FLD Opcode: %d unknown\n", opc); + col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); + break; + }; - return offset; + return offset; } @@ -9043,7 +9932,7 @@ ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, /* 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, + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+3); offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, @@ -9057,7 +9946,7 @@ ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, 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, + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } @@ -9066,7 +9955,7 @@ ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, 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, + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } @@ -9075,9 +9964,31 @@ ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, 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, + offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_DLM_INTENT_REC_OFF+2); } + if (intent_opc & IT_LAYOUT) { + /* [layout_intent][eadata] */ + offset = lustre_dissect_struct_layout_intent(tvb, offset, + pinfo, tree, hf_lustre_layout_intent, + LUSTRE_DLM_INTENT_REC_OFF); + offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, + hf_lustre_mds_xattr_eadata, + LUSTRE_DLM_INTENT_REC_OFF+1); + } + if (intent_opc & IT_QUOTA_DQACQ) { + offset = lustre_dissect_struct_quota_body(tvb, offset, + pinfo, tree, hf_lustre_qb, + LUSTRE_DLM_INTENT_REC_OFF); + } + if (intent_opc & IT_GETXATTR) { + /* [mdt_body][capa] */ + offset = lustre_dissect_struct_mdt_body(tvb, offset, pinfo, + tree, hf_lustre_mdt_body); + offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, + hf_lustre_capa, + LUSTRE_DLM_INTENT_REC_OFF+1); + } return offset; } @@ -9103,13 +10014,8 @@ sanity_check(tvbuff_t *tvb, packet_info *pinfo, guint32 val_offset _U_) count in buflen */ - if(val_offset!=somme_buflen){ - /*g_print("somme_buflen=%d, val_offset = %d \n",somme_buflen,val_offset);*/ - if (check_col(pinfo->cinfo, COL_INFO)) { - col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); - } - } - + if (val_offset != somme_buflen) + col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG"); } @@ -9736,12 +10642,10 @@ lustre_dissect_struct_msg_v2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin static void dissect_lustre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - if (check_col(pinfo->cinfo, COL_PROTOCOL)) - col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre"); + col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre"); - /*light display*/ - if (check_col(pinfo->cinfo, COL_INFO)) - col_set_str(pinfo->cinfo, COL_INFO, ""); + /*light display*/ + col_set_str(pinfo->cinfo, COL_INFO, ""); /* guint32 magic_number ; */ /* magic_number = tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET); */ /* switch (magic_number)*/ @@ -9797,7 +10701,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_body_handle, { "Handle", "lustre.mdt_body.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_body_valid, - { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_size, { "Size", "lustre.mdt_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_body_mtime, @@ -9865,7 +10769,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_setattr, { "mdt rec setattr", "lustre.mdt_rec_setattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_setattr_sa_opcode, - { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }}, + { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_cap, { "Sa Cap", "lustre.mdt_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_fsuid, @@ -9904,7 +10808,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_setattr_sa_ctime, { "Sa Ctime", "lustre.mdt_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_rec_setattr_sa_attr_flags, - { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_mode, { "Sa Mode", "lustre.mdt_rec_setattr.sa_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setattr_sa_padding_2, @@ -9919,7 +10823,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_create, { "mdt rec create", "lustre.mdt_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_create_cr_opcode, - { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }}, + { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_cap, { "Cr Cap", "lustre.mdt_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_create_cr_fsuid, @@ -9968,7 +10872,7 @@ void proto_register_dcerpc_lustre(void) { &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_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_cap, { "Lk Cap", "lustre.mdt_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_link_lk_fsuid, @@ -10020,7 +10924,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_unlink, { "mdt rec unlink", "lustre.mdt_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_unlink_ul_opcode, - { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }}, + { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_cap, { "Ul Cap", "lustre.mdt_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_unlink_ul_fsuid, @@ -10071,7 +10975,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_rename, { "mdt rec rename", "lustre.mdt_rec_rename", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_rename_rn_opcode, - { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }}, + { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_cap, { "Rn Cap", "lustre.mdt_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_rename_rn_fsuid, @@ -10122,7 +11026,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_setxattr, { "mdt rec setxattr", "lustre.mdt_rec_setxattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}}, { &hf_lustre_mdt_rec_setxattr_sx_opcode, - { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }}, + { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_cap, { "Sx Cap", "lustre.mdt_rec_setxattr.sx_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_fsuid, @@ -10163,7 +11067,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_mdt_rec_setxattr_sx_size, { "Sx Size", "lustre.mdt_rec_setxattr.sx_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_flags, - { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_8, { "Sx Padding 8", "lustre.mdt_rec_setxattr.sx_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mdt_rec_setxattr_sx_padding_9, @@ -10174,7 +11078,8 @@ void proto_register_dcerpc_lustre(void) { "Sx Padding 11", "lustre.mdt_rec_setxattr.sx_padding_11", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_handle_cookie, - { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_HEX, + NULL, 0, "", HFILL } }, { &hf_lustre_ptlrpc_body_pb_last_committed, { "Pb Last Committed", "lustre.ptlrpc_body.pb_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_version, @@ -10194,11 +11099,11 @@ void proto_register_dcerpc_lustre(void) { "Pb JobId", "lustre.ptlrpc_body.pb_jobid", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_handle, - { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, - { &hf_lustre_ost_lvb_lvb_atime, - { "Lvb Atime", "lustre.ost_lvb.lvb_atime",FT_ABSOLUTE_TIME, - ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, + { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_NONE, + NULL, 0, "", HFILL } }, + { &hf_lustre_ost_lvb_lvb_atime, + { "Lvb Atime", "lustre.ost_lvb.lvb_atime", + FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, { &hf_lustre_ptlrpc_body_pb_timeout, { "Pb Timeout", "lustre.ptlrpc_body.pb_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_bavail, @@ -10207,12 +11112,10 @@ void proto_register_dcerpc_lustre(void) { "Os Bsize", "lustre.obd_statfs.os_bsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_repsize, { "Lm Repsize", "lustre.lustre_msg_v2.lm_repsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_stripe_size, - { "Lmm Stripe Size", "lustre.lov_mds_md_v1.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_last_xid, { "Lm Last Xid", "lustre.lustre_msg_v1.lm_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ll_fid_f_type, - { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_cksum, { "Lm Cksum", "lustre.lustre_msg_v2.lm_cksum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_buflens, @@ -10223,10 +11126,8 @@ void proto_register_dcerpc_lustre(void) { "Lm Type", "lustre.lustre_msg_v1.lm_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }}, { &hf_lustre_niobuf_remote_len, { "Len", "lustre.niobuf_remote.len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_magic, - { "Lmm Magic", "lustre.lov_mds_md_v1.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_op_flags, - { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_ctime, { "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, @@ -10237,24 +11138,30 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_obd_connect_data_ocd_nllu, { "Ocd Nllu", "lustre.obd_connect_data.ocd_nllu", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ll_fid_generation, - { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_mtime, { "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, + { &hf_lustre_ost_lvb_lvb_mtime_ns, + { "Lvb Mtime NS", "lustre.ost_lvb.lvb_mtime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_ost_lvb_lvb_atime_ns, + { "Lvb Atime NS", "lustre.ost_lvb.lvb_atime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_ost_lvb_lvb_ctime_ns, + { "Lvb Ctime NS", "lustre.ost_lvb.lvb_ctime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_ost_lvb_lvb_padding, + { "padding", "lustre.ost_lvb.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_ibits_known, { "Ocd Ibits Known", "lustre.obd_connect_data.ocd_ibits_known", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_padding_3, { "Lm Padding 3", "lustre.lustre_msg_v2.lm_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_flags, - { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_spare4, { "Os Spare4", "lustre.obd_statfs.os_spare4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_group, { "Ocd Group", "lustre.obd_connect_data.ocd_group", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_ost_data_v1_l_object_seq, { "L Object SEQ", "lustre.lov_ost_data_v1.l_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_object_seq, - { "Lmm Object SEQ", "lustre.lov_mds_md_v1.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_brw_size, { "Ocd Brw Size", "lustre.obd_connect_data.ocd_brw_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_limit, @@ -10264,15 +11171,13 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_obd_statfs_os_spare5, { "Os Spare5", "lustre.obd_statfs.os_spare5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_flags, - { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_ffree, { "Os Ffree", "lustre.obd_statfs.os_ffree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_files, { "Os Files", "lustre.obd_statfs.os_files", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_stripe_count, - { "Lmm Stripe Count", "lustre.lov_mds_md_v1.lmm_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_flags, - { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_last_committed, { "Lm Last Committed", "lustre.lustre_msg_v1.lm_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_spare9, @@ -10296,18 +11201,17 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_ptlrpc_body_pb_opc, { "Pb Opc", "lustre.ptlrpc_body.pb_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_connect_flags, - { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", + FT_UINT64 , BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_lov_ost_data_v1_l_object_id, { "L Object Id", "lustre.lov_ost_data_v1.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_ost_data_v1_l_ost_gen, { "L Ost Gen", "lustre.lov_ost_data_v1.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_bfree, { "Os Bfree", "lustre.obd_statfs.os_bfree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_ocd_version, - { "Ocd Version", "lustre.obd_connect_data.ocd_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_objects, - { "Lmm Objects", "lustre.lov_mds_md_v1.lmm_objects", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_obd_connect_data_ocd_version, + { "Ocd Version", "lustre.obd_connect_data.ocd_version", + FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obd_statfs_os_namelen, { "Os Namelen", "lustre.obd_statfs.os_namelen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_blocks, @@ -10316,8 +11220,6 @@ void proto_register_dcerpc_lustre(void) { "Lm Secflvr", "lustre.lustre_msg_v2.lm_secflvr", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_transno, { "Lm Transno", "lustre.lustre_msg_v1.lm_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_pattern, - { "Lmm Pattern", "lustre.lov_mds_md_v1.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v1_lm_opc, { "Lm Opc", "lustre.lustre_msg_v1.lm_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_grant, @@ -10331,7 +11233,23 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_obd_statfs_os_fsid, { "Os Fsid", "lustre.obd_statfs.os_fsid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_connect_data_ocd_cksum_types, - { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", + FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_obd_connect_data_ocd_max_easize, + { "Ocd Max LOV EA Size", "lustre.obd_connect_data.ocd_max_easize", + FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_obd_connect_data_ocd_instance, + { "Ocd Instance", "lustre.obd_connect_data.ocd_instance", + FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_obd_connect_data_ocd_maxbytes, + { "Ocd Max Stripe Size (Bytes)", + "lustre.obd_connect_data.ocd_maxbytes", + FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_obd_connect_data_ocd_maxmodrpcs, + { "Ocd Max Parallel Modify RPCs", + "lustre.obd_connect_data.ocd_maxmodrpcs", + FT_UINT16, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_ost_lvb_lvb_size, { "Lvb Size", "lustre.ost_lvb.lvb_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_statfs_os_type, @@ -10344,8 +11262,6 @@ void proto_register_dcerpc_lustre(void) { "Os Spare3", "lustre.obd_statfs.os_spare3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_magic, { "Lm Magic", "lustre.lustre_msg_v2.lm_magic", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1_lmm_object_id, - { "Lmm Object Id", "lustre.lov_mds_md_v1.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ptlrpc_body_pb_last_seen, { "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_ioobj_ioo_max_brw, /* TODO : create the @@ -10356,19 +11272,15 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_ptlrpc_body_pb_status, { "Pb Status", "lustre.ptlrpc_body.pb_status", FT_INT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_niobuf_remote_flags, - { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ll_fid_id, - { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ost_lvb_lvb_blocks, { "Lvb Blocks", "lustre.ost_lvb.lvb_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lustre_msg_v2_lm_padding_2, { "Lm Padding 2", "lustre.lustre_msg_v2.lm_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_padding1, - { "Padding1", "lustre.obd_connect_data.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_ost_data_v1_l_ost_idx, { "L Ost Idx", "lustre.lov_ost_data_v1.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_obd_connect_data_padding2, - { "Padding2", "lustre.obd_connect_data.padding2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_ioobj_ioo_seq, { "Ioo Gr", "lustre.obd_ioobj.ioo_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_niobuf_remote_offset, @@ -10434,7 +11346,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_llog_size_change_rec_lsc_io_epoch, { "Lsc Io Epoch", "lustre.llog_size_change_rec.lsc_io_epoch", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_target_info_mti_flags, - { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_reply_lock_policy_res1, { "Lock Policy Res1", "lustre.ldlm_reply.lock_policy_res1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llogd_body_lgd_len, @@ -10458,16 +11370,14 @@ void proto_register_dcerpc_lustre(void) { "O Uid", "lustre.obdo.o_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mds_xattr_name, { "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_lov_mds_md_v1, - { "lov mds md v1", "lustre.lov_mds_md_v1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_llog_cookie, { "llog cookie", "lustre.llog_cookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, - { &hf_lustre_mds_md_data, - { "mds md data", "lustre.mds_md_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_mds_reint_opcode, { "mds reint opcode", "lustre.mds_reint_opcode", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_mds_xattr_eadata, { "mds xattr eadata", "lustre.mds_xattr_eadata", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_mds_xattr_eadata_str, + { "mds xattr eadata", "lustre.mds_xattr_eadata.str", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_reint_name, { "mds reint name", "lustre.mds_reint_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, { &hf_lustre_reint_old_name, @@ -10475,11 +11385,40 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_reint_new_name, { "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_mds_md_data, + { "mds md data", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_v1, + { "lov mds md", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_magic, + { "Lmm Magic", "lustre.lov_mds_md.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_stripe_size, + { "Lmm Stripe Size", "lustre.lov_mds_md.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_object_id, + { "Lmm Object Id", "lustre.lov_mds_md.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_oi, + { "Lmm Object Id", "lustre.lov_mds_md.lmm_oi", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_object_seq, + { "Lmm Object SEQ", "lustre.lov_mds_md.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_stripe_count, + { "Lmm Stripe Count", "lustre.lov_mds_md.lmm_stripe_count", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_pattern, + { "Lmm Pattern", "lustre.lov_mds_md.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_layout_gen, + { "Lmm Layout Generation", "lustre.lov_mds_md.lmm_layout_gen", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_lov_mds_md_lmm_pool_name, + { "Lmm Poolname", "lustre.lov_mds_md.lmm_poolname", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_lov_mds_md_lmm_objects, + { "Lmm Objects", "lustre.lov_mds_md.lmm_objects", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + { &hf_lustre_ost_id_oi_id, + { "OI Object Id", "lustre.ost_id.oi.oi_id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_lustre_ost_id_oi_seq, + { "OI Object Seq", "lustre.ost_id.oi.oi_seq", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obdo_o_valid, - { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, + { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_reply_lock_flags, - { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32,BASE_HEX, NULL, 0, "", HFILL }}, + { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, #define WSHARK_INIT_DATA #include "lustre_dlm_flags_wshark.c" @@ -10535,12 +11474,22 @@ void proto_register_dcerpc_lustre(void) { "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LOOKUP , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_unlink, { "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_UNLINK , "", HFILL } }, + { &hf_lustre_ldlm_intent_opc_trunc, + { "trunc", "lustre.ldlm_intent.opc_trunc", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_TRUNC , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_getxattr, { "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETXATTR , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_exec, { "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_EXEC , "", HFILL } }, { &hf_lustre_ldlm_intent_opc_pin, { "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_PIN , "", HFILL } }, + { &hf_lustre_ldlm_intent_opc_layout, + { "layout", "lustre.ldlm_intent.opc_layout", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LAYOUT , "", HFILL } }, + { &hf_lustre_ldlm_intent_opc_q_dqacq, + { "quota dqacq", "lustre.ldlm_intent.opc_quota_dqacq", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_DQACQ , "", HFILL } }, + { &hf_lustre_ldlm_intent_opc_q_conn, + { "quota conn", "lustre.ldlm_intent.opc_quota_conn", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_CONN , "", HFILL } }, + { &hf_lustre_ldlm_intent_opc_setxattr, + { "setxattr", "lustre.ldlm_intent.opc_setxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_SETXATTR , "", HFILL } }, /*-------------------------------------------------------------------*/ { &hf_lustre_ldlm_intent_opc, { "intent opcode", "lustre.ldlm_intent.opc", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, @@ -10611,7 +11560,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_qunit_data_padding, { "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_quota_adjust_qunit_qaq_flags, - { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_lock_desc_l_granted_mode, { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_vals), 0, "", HFILL }}, { &hf_lustre_obdo_o_seq, @@ -10648,13 +11597,19 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_llog_logid_rec_padding3, { "Padding3", "lustre.llog_logid_rec.padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llog_log_hdr_llh_flags, - { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, - {&hf_lustre_llog_hdr_llh_flag_zap_when_empty, - {"LLOG_F_ZAP_WHEN_EMPTY","lustre.lustre.llog_log_hdr.llh_flag_zap",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_ZAP_WHEN_EMPTY,"",HFILL } }, - {&hf_lustre_llog_hdr_llh_flag_is_cat, - {"LLOG_F_IS_CAT","lustre.lustre.llog_log_hdr.llh_flag_cat",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_IS_CAT,"",HFILL } }, - {&hf_lustre_llog_hdr_llh_flag_is_play, - {"LOG_F_IS_PLAIN","lustre.lustre.llog_log_hdr.llh_flag_play",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_IS_PLAIN,"",HFILL } }, + { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, + { &hf_lustre_llog_hdr_llh_flag_zap_when_empty, + {"LLOG_F_ZAP_WHEN_EMPTY", "lustre.lustre.llog_log_hdr.llh_flag_zap", + FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), + LLOG_F_ZAP_WHEN_EMPTY, "", HFILL } }, + { &hf_lustre_llog_hdr_llh_flag_is_cat, + { "LLOG_F_IS_CAT", "lustre.lustre.llog_log_hdr.llh_flag_cat", + FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), + LLOG_F_IS_CAT, "", HFILL } }, + { &hf_lustre_llog_hdr_llh_flag_is_play, + { "LLOG_F_IS_PLAIN", "lustre.lustre.llog_log_hdr.llh_flag_play", + FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), + LLOG_F_IS_PLAIN, "", HFILL } }, { &hf_lustre_llog_setattr_rec_lsr_oid, { "Lsr Oid", "lustre.llog_setattr_rec.lsr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, @@ -10702,14 +11657,14 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_llog_unlink_rec_lur_ogen, { "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_cfg_marker_cm_flags, - { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obdo_o_padding_3, { "O Padding 3", "lustre.obdo.o_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_request_lock_desc, { "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_obdo_o_flags, - { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_target_info_mti_params, { "Mti Params", "lustre.mgs_target_info.mti_params", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llog_logid_lgl_ogen, @@ -10759,7 +11714,7 @@ void proto_register_dcerpc_lustre(void) { "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_llogd_body_lgd_llh_flags, - { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_llog_log_hdr_llh_cat_idx, { "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_llog_log_hdr_llh_bitmap_offset, @@ -10794,7 +11749,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_opnum, { "Operation", "lustre.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_qunit_data_old2_qd_flags, - { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_ldlm_flock_start, { "Start", "lustre.ldlm_flock.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_quota_adjust_qunit_qaq_bunit_sz, @@ -10803,9 +11758,9 @@ void proto_register_dcerpc_lustre(void) { "Pid", "lustre.ldlm_flock.pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_lov_desc_ld_default_stripe_size, { "Ld Default Stripe Size", "lustre.lov_desc.ld_default_stripe_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, - { &hf_lustre_llog_log_hdr_llh_tgtuuid, - { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", FT_NONE, - BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_llog_log_hdr_llh_tgtuuid, + { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", + FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, { &hf_lustre_cfg_marker_cm_step, { "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_mgs_send_param_mgs_param, @@ -10886,6 +11841,15 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_ost_lvb, { "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_xattrs, + { "XATTR", "lustre.xattr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_xattrs_name, + { "xattr name", "lustre.xattr.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_xattrs_data, + { "xattr data", "lustre.xattr.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_xattrs_size, + { "xattr size", "lustre.xattr.size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { &hf_lustre_obdo_o_ctime, { "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, @@ -10940,7 +11904,7 @@ void proto_register_dcerpc_lustre(void) { &hf_lustre_obd_dqblk_dqb_bsoftlimit, { "Dqb Bsoftlimit", "lustre.obd_dqblk.dqb_bsoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }}, { &hf_lustre_obd_dqinfo_dqi_flags, - { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }}, + { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }}, { &hf_lustre_obd_dqblk_dqb_btime, { "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } }, @@ -10983,7 +11947,7 @@ void proto_register_dcerpc_lustre(void) { &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 } }, + { "flags", "lustre.mdt_ioepoch.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, { &hf_lustre_mdt_ioepoch_padding, { "Padding", "lustre.mdt_ioepoch.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, @@ -11012,6 +11976,130 @@ void proto_register_dcerpc_lustre(void) /* ACL */ { &hf_lustre_acl, { "ACL", "lustre.acl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + /* MDT Getinfo */ + { &hf_lustre_mdt_getinfo_key, + { "MDT getinfo key", "lustre.mdt_getinfo.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_mdt_getinfo_vallen, + { "MDT getinfo Val Len", "lustre.mdt_getinfo.vallen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_mdt_getinfo_data, + { "MDT getinfo data", "lustre.mdt_getinfo.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + /* Close Data */ + { &hf_lustre_close_data, + { "MDT Close", "lustre.mdt_close", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_close_fid, + { "Close FID", "lustre.mdt_close.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_close_data_ver, + { "Close data version", "lustre.mdt_close.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_close_reserved, + { "Close Reserved Space", "lustre.mdt_close.reserved", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + /* LDLM SET INFO */ + { &hf_lustre_ldlm_key, + { "LDLM Set Info Key", "lustre.ldlm.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }}, + { &hf_lustre_ldlm_value, + { "LDLM Set Info Value", "lustre.ldlm.value", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + /* HSM Request */ + { &hf_lustre_hsm_request, + { "HSM Request", "lustre.hsm_req", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_req_action, + { "HSM Req Action", "lustre.hsm_req.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, + { &hf_lustre_hsm_req_archive_id, + { "HSM Req Archive ID", "lustre.hsm_req.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_req_flags, + { "HSM Req Flags", "lustre.hsm_req.flags", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_req_itemcount, + { "HSM Req Itemcount", "lustre.hsm_req.itemcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_req_data_len, + { "HSM Req Data Length", "lustre.hsm_req.data_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } }, + + { &hf_lustre_hsm_user_item, + { "HSM User Item", "lustre.user_item", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_user_item_fid, + { "HSM User Item FID", "lustre.user_item.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_user_item_extent, + { "HSM User Item Extent", "lustre.user_item.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + { &hf_lustre_hsm_extent, + { "HSM Extent", "lustre.hsm_extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_extent_offset, + { "HSM Extent Offset", "lustre.hsm_extent.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_extent_length, + { "HSM Extent Length", "lustre.hsm_extent.len", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + + { &hf_lustre_hsm_progress, + { "HSM Progress", "lustre.hsm_progress", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_fid, + { "HSM Prog FID", "lustre.hsm_progress.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_cookie, + { "HSM Prog Cookie", "lustre.hsm_progress.cookie", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_extent, + { "HSM Prog Extent", "lustre.hsm_progress.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_flags, + { "HSM Prog Flags", "lustre.hsm_progress.flags", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_errval, + { "HSM Prog Error Val", "lustre.hsm_progress.errval", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_prog_data_ver, + { "HSM Prog Data Version", "lustre.hsm_progress.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } }, + + { &hf_lustre_hsm_state_get, + { "HSM State GET", "lustre.hsm_state_get", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_us_states, + { "States", "lustre.hsm_state_get.states", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_us_archive_id, + { "Archive ID", "lustre.hsm_state_get.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_us_in_prog_state, + { "In Progress State", "lustre.hsm_state_get.in_prog.state", FT_UINT32, BASE_HEX, VALS(lustre_hsm_progress_state_t_vals), 0, "", HFILL } }, + { &hf_lustre_hsm_us_in_prog_action, + { "In Progress Action", "lustre.hsm_state_get.in_prog.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } }, + { &hf_lustre_hsm_us_in_prog_location, + { "In Progress Extent", "lustre.hsm_state_get.in_prog.location", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_hsm_us_ext_info, + { "Extended Info", "lustre.hsm_state_get.ext_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + { &hf_lustre_qb, + { "Quota Body", "lustre.quota_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_fid, + { "Fid", "lustre.quota_body.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_id, + { "ID", "lustre.quota_body.id", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_flags, + { "Flags", "lustre.quota_body.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_padding, + { "padding", "lustre.quota_body.padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_count, + { "Count", "lustre.quota_body.count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_usage, + { "Usage", "lustre.quota_body.usage", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_slv_ver, + { "Slave Ver", "lustre.quota_body.slv_ver", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_lockh, + { "Per-ID Lock Handle", "lustre.quota_body.lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qb_glb_lockh, + { "Global Lock Handle", "lustre.quota_body.glb_lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + + { &hf_lustre_qid_fid, + { "Fid", "lustre.lquota_id.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_qid_uid, + { "UID", "lustre.lquota_id.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_qid_gid, + { "GID", "lustre.lquota_id.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + + { &hf_lustre_layout_intent, + { "Layout Intent", "lustre.layout_intent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } }, + { &hf_lustre_layout_intent_opc, + { "Op Code", "lustre.layout_intent.opc", FT_UINT32, BASE_HEX, VALS(lustre_layout_intent_opc_values), 0, "", HFILL } }, + { &hf_lustre_layout_intent_flags, + { "Flags", "lustre.layout_intent.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } }, + { &hf_lustre_layout_intent_start, + { "Start", "lustre.layout_intent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + { &hf_lustre_layout_intent_end, + { "End", "lustre.layout_intent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } }, + + { &hf_lustre_generic_data, + { "generic data", "lustre.generic_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}}, }; @@ -11025,6 +12113,7 @@ void proto_register_dcerpc_lustre(void) &ett_lustre_lustre_handle_v2, &ett_lustre_obd_connect_data, &ett_lustre_lov_mds_md_v1, + &ett_lustre_lov_mds_md_v3, &ett_lustre_lov_ost_data_v1, &ett_lustre_obd_statfs, &ett_lustre_obd_ioobj, @@ -11085,8 +12174,19 @@ void proto_register_dcerpc_lustre(void) &ett_lustre_fld_range, &ett_lustre_mdt_ioepoch, &ett_lustre_capa, + &ett_lustre_close_data, &ett_lustre_acl, &ett_lustre_ladvise, + &ett_lustre_hsm_request, + &ett_lustre_hsm_user_item, + &ett_lustre_hsm_extent, + &ett_lustre_hsm_progress, + &ett_lustre_hsm_user_state, + &ett_lustre_quota_body, + &ett_lustre_lquota_id, + &ett_lustre_layout_intent, + &ett_lustre_xattrs, + &ett_lustre_ost_id, }; proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre");