static void dissect_npmp_add_flow_message(tvbuff_t *message_tvb, proto_tree *message_tree) { guint32 retranstrials; proto_item* onoffitem; proto_tree* onofftree; guint16 onoffevents; guint32 onoffvalue; unsigned int i; ADD_FIELD_UINT(message_tree, addflow_flowid); ADD_FIELD_UINT(message_tree, addflow_measurementid); ADD_FIELD_UINT(message_tree, addflow_streamid); ADD_FIELD_UINT(message_tree, addflow_protocol); ADD_FIELD_UINT(message_tree, addflow_flags); ADD_FIELD_STRING(message_tree, addflow_description); proto_tree_add_double_format_value(message_tree, hf_addflow_ordered, message_tvb, offset_addflow_ordered, length_addflow_ordered, 100.0 * tvb_get_ntohl(message_tvb, offset_addflow_ordered) / (double)0xffffffff, "%1.3f%%", 100.0 * tvb_get_ntohl(message_tvb, offset_addflow_ordered) / (double)0xffffffff); proto_tree_add_double_format_value(message_tree, hf_addflow_reliable, message_tvb, offset_addflow_reliable, length_addflow_reliable, 100.0 * tvb_get_ntohl(message_tvb, offset_addflow_reliable) / (double)0xffffffff, "%1.3f%%", 100.0 * tvb_get_ntohl(message_tvb, offset_addflow_reliable) / (double)0xffffffff); retranstrials = tvb_get_ntohl(message_tvb, offset_addflow_retranstrials); proto_tree_add_uint_format_value(message_tree, hf_addflow_retranstrials, message_tvb, offset_addflow_retranstrials, length_addflow_retranstrials, retranstrials, (retranstrials & (1 << 31)) ? "%u ms" : "%u trials", retranstrials &~ (1 << 31)); ADD_FIELD_UINT(message_tree, addflow_frameraterng); ADD_FIELD_UINT(message_tree, addflow_framerate1); ADD_FIELD_UINT(message_tree, addflow_framerate2); ADD_FIELD_UINT(message_tree, addflow_framerate3); ADD_FIELD_UINT(message_tree, addflow_framerate4); ADD_FIELD_UINT(message_tree, addflow_framesizerng); ADD_FIELD_UINT(message_tree, addflow_framesize1); ADD_FIELD_UINT(message_tree, addflow_framesize2); ADD_FIELD_UINT(message_tree, addflow_framesize3); ADD_FIELD_UINT(message_tree, addflow_framesize4); ADD_FIELD_UINT(message_tree, addflow_rcvbuffersize); ADD_FIELD_UINT(message_tree, addflow_sndbuffersize); ADD_FIELD_UINT(message_tree, addflow_maxmsgsize); ADD_FIELD_UINT(message_tree, addflow_cmt); ADD_FIELD_UINT(message_tree, addflow_ccid); onoffitem = ADD_FIELD_UINT(message_tree, addflow_onoffevents); onoffevents = tvb_get_ntohs(message_tvb, offset_addflow_onoffevents); if (onoffevents > 0) { onofftree = proto_item_add_subtree(onoffitem, ett_onoffarray); for(i = 0;i < onoffevents;i++) { onoffvalue = tvb_get_ntohl(message_tvb, offset_addflow_onoffeventarray + (int)(sizeof(guint32) * i)); proto_tree_add_uint_format(onofftree, hf_addflow_onoffeventarray, message_tvb, offset_addflow_onoffeventarray + (int)(sizeof(guint32) * i), (int)sizeof(guint32), onoffvalue, "%1.3f s: set to %s", onoffvalue / 1000.0, (i & 1) ? "OFF" : "ON"); } } }
static void dissect_pool_member_selection_policy_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree) { guint32 type; guint length; proto_tree_add_item(parameter_tree, hf_policy_type, parameter_tvb, POLICY_TYPE_OFFSET, POLICY_TYPE_LENGTH, ENC_BIG_ENDIAN); type = tvb_get_ntohl(parameter_tvb, POLICY_TYPE_OFFSET); switch (type) { case RANDOM_POLICY: case ROUND_ROBIN_POLICY: break; case WEIGHTED_RANDOM_POLICY: case WEIGHTED_ROUND_ROBIN_POLICY: proto_tree_add_item(parameter_tree, hf_policy_weight, parameter_tvb, POLICY_WEIGHT_OFFSET, POLICY_WEIGHT_LENGTH, ENC_BIG_ENDIAN); break; case PRIORITY_POLICY: proto_tree_add_item(parameter_tree, hf_policy_priority, parameter_tvb, POLICY_PRIORITY_OFFSET, POLICY_PRIORITY_LENGTH, ENC_BIG_ENDIAN); break; case LEAST_USED_POLICY: case RANDOMIZED_LEAST_USED_POLICY: proto_tree_add_double_format_value(parameter_tree, hf_policy_load, parameter_tvb, POLICY_LOAD_OFFSET, POLICY_LOAD_LENGTH, 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff, "%1.2f%%", 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff); break; case LEAST_USED_WITH_DEG_POLICY: case PRIORITY_LEAST_USED_POLICY: proto_tree_add_double_format_value(parameter_tree, hf_policy_load, parameter_tvb, POLICY_LOAD_OFFSET, POLICY_LOAD_LENGTH, 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff, "%1.2f%%", 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff); proto_tree_add_double_format_value(parameter_tree, hf_policy_degradation, parameter_tvb, POLICY_DEGRADATION_OFFSET, POLICY_DEGRADATION_LENGTH, 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_DEGRADATION_OFFSET) / (double)0xffffffff, "%1.2f%%", 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_DEGRADATION_OFFSET) / (double)0xffffffff); break; case LEAST_USED_DPF_POLICY: proto_tree_add_double_format_value(parameter_tree, hf_policy_load, parameter_tvb, POLICY_LOAD_OFFSET, POLICY_LOAD_LENGTH, 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff, "%1.2f%%", 100.0 * tvb_get_ntohl(parameter_tvb, POLICY_LOAD_OFFSET) / (double)0xffffffff); proto_tree_add_double_format_value(parameter_tree, hf_policy_loaddpf, parameter_tvb, POLICY_LUDPF_LOADDPF_OFFSET, POLICY_LUDPF_LOADDPF_LENGTH, tvb_get_ntohl(parameter_tvb, POLICY_LUDPF_LOADDPF_OFFSET) / (double)0xffffffff, "%1.5f", tvb_get_ntohl(parameter_tvb, POLICY_LUDPF_LOADDPF_OFFSET) / (double)0xffffffff); proto_tree_add_item(parameter_tree, hf_policy_distance, parameter_tvb, POLICY_LUDPF_DISTANCE_OFFSET, POLICY_LUDPF_DISTANCE_LENGTH, ENC_BIG_ENDIAN); break; case WEIGHTED_RANDOM_DPF_POLICY: proto_tree_add_item(parameter_tree, hf_policy_weight, parameter_tvb, POLICY_WEIGHT_OFFSET, POLICY_WEIGHT_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_double_format_value(parameter_tree, hf_policy_weightdpf, parameter_tvb, POLICY_WRANDDPF_WEIGHTDPF_OFFSET, POLICY_WRANDDPF_WEIGHTDPF_LENGTH, tvb_get_ntohl(parameter_tvb, POLICY_WRANDDPF_WEIGHTDPF_OFFSET) / (double)0xffffffff, "%1.5f", tvb_get_ntohl(parameter_tvb, POLICY_WRANDDPF_WEIGHTDPF_OFFSET) / (double)0xffffffff); proto_tree_add_item(parameter_tree, hf_policy_distance, parameter_tvb, POLICY_WRANDDPF_DISTANCE_OFFSET, POLICY_WRANDDPF_DISTANCE_LENGTH, ENC_BIG_ENDIAN); break; default: length = tvb_reported_length(parameter_tvb) - POLICY_VALUE_OFFSET; if (length > 0) { proto_tree_add_item(parameter_tree, hf_policy_value, parameter_tvb, POLICY_VALUE_OFFSET, length, ENC_NA); } break; } }
void nvme_publish_cmd_latency(proto_tree *tree, struct nvme_cmd_ctx *cmd_ctx, int field_index) { proto_item *cmd_ref_item; nstime_t ns; double cmd_latency; nstime_delta(&ns, &cmd_ctx->cmd_end_time, &cmd_ctx->cmd_start_time); cmd_latency = nstime_to_msec(&ns); cmd_ref_item = proto_tree_add_double_format_value(tree, field_index, NULL, 0, 0, cmd_latency, "%.3f ms", cmd_latency); proto_item_set_generated(cmd_ref_item); }
static gint dissect_mp4_mvhd_body(tvbuff_t *tvb, gint offset, gint len _U_, packet_info *pinfo, proto_tree *tree) { gint offset_start; guint8 version; guint8 time_len; double rate, vol; guint16 fract_dec; guint32 next_tid; proto_item *next_tid_it; offset_start = offset; version = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_mp4_full_box_ver, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; proto_tree_add_item(tree, hf_mp4_full_box_flags, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; time_len = (version==0) ? 4 : 8; proto_tree_add_item(tree, hf_mp4_mvhd_creat_time, tvb, offset, time_len, ENC_BIG_ENDIAN); offset += time_len; proto_tree_add_item(tree, hf_mp4_mvhd_mod_time, tvb, offset, time_len, ENC_BIG_ENDIAN); offset += time_len; proto_tree_add_item(tree, hf_mp4_mvhd_timescale, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; proto_tree_add_item(tree, hf_mp4_mvhd_duration, tvb, offset, time_len, ENC_BIG_ENDIAN); offset += time_len; rate = tvb_get_ntohs(tvb, offset); fract_dec = tvb_get_ntohs(tvb, offset+2); rate += make_fract(fract_dec); proto_tree_add_double_format_value(tree, hf_mp4_mvhd_rate, tvb, offset, 4, rate, "%f", rate); offset += 4; vol = tvb_get_guint8(tvb, offset); fract_dec = tvb_get_guint8(tvb, offset+1); vol += make_fract(fract_dec); proto_tree_add_double_format_value(tree, hf_mp4_mvhd_vol, tvb, offset, 4, vol, "%f", vol); offset += 2; offset += 2; /* 16 bits reserved */ offset += 2*4; /* 2 * uint32 reserved */ offset += 9*4; /* XXX - unity matrix */ offset += 6*4; /* 6 * 32 bits predefined = 0 */ next_tid = tvb_get_ntohl(tvb, offset); next_tid_it = proto_tree_add_item(tree, hf_mp4_mvhd_next_tid, tvb, offset, 4, ENC_BIG_ENDIAN); if (next_tid == G_MAXUINT32) expert_add_info(pinfo, next_tid_it, &ei_mp4_mvhd_next_tid_unknown); offset += 4; return offset-offset_start; }