diff options
author | Michael Mann <mmann78@netscape.net> | 2015-08-15 09:39:05 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-08-16 02:32:12 +0000 |
commit | 2e2129a9140a4be860fa09c77fd9f2d550c6fbda (patch) | |
tree | be5e099073bc8922523ded107a99b9be645f2e56 /epan | |
parent | 8b4572728d541e1039e4665dca8c6427db4a2132 (diff) |
Conversion of random proto_tree_add_text calls.
Change-Id: I6505ce34de84bfe46d5bc7b4d6a3c6044f3fb4b5
Reviewed-on: https://code.wireshark.org/review/10041
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-ansi_637.c | 68 | ||||
-rw-r--r-- | epan/dissectors/packet-bacapp.c | 22 | ||||
-rw-r--r-- | epan/dissectors/packet-bssgp.c | 99 | ||||
-rw-r--r-- | epan/dissectors/packet-dcerpc.c | 24 | ||||
-rw-r--r-- | epan/dissectors/packet-rlc.c | 24 | ||||
-rw-r--r-- | epan/dissectors/packet-selfm.c | 83 | ||||
-rw-r--r-- | epan/dissectors/packet-smb.c | 2 |
7 files changed, 159 insertions, 163 deletions
diff --git a/epan/dissectors/packet-ansi_637.c b/epan/dissectors/packet-ansi_637.c index b758ff3c3b..38dcd091c8 100644 --- a/epan/dissectors/packet-ansi_637.c +++ b/epan/dissectors/packet-ansi_637.c @@ -221,6 +221,7 @@ static int hf_ansi_637_trans_addr_param_number_mode = -1; static int hf_ansi_637_trans_addr_param_ton = -1; static int hf_ansi_637_trans_addr_param_plan = -1; static int hf_ansi_637_trans_addr_param_num_fields = -1; +static int hf_ansi_637_trans_addr_param_num_fields07f8 = -1; static int hf_ansi_637_trans_addr_param_number = -1; static int hf_ansi_637_trans_subaddr_type = -1; static int hf_ansi_637_trans_subaddr_odd_even_ind = -1; @@ -275,6 +276,7 @@ static int hf_ansi_637_tele_cb_num_digit_mode = -1; static int hf_ansi_637_tele_cb_num_ton = -1; static int hf_ansi_637_tele_cb_num_plan = -1; static int hf_ansi_637_tele_cb_num_num_fields = -1; +static int hf_ansi_637_tele_cb_num_num_fields07f8 = -1; static int hf_ansi_637_tele_cb_num_number = -1; static int hf_ansi_637_tele_msg_display_mode = -1; static int hf_ansi_637_tele_msg_deposit_idx = -1; @@ -1395,21 +1397,7 @@ tele_param_cb_num(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint oct2 = tvb_get_guint8(tvb, offset); num_fields = ((oct & 0x7f) << 1) | ((oct2 & 0x80) >> 7); - /* - * not combined into a 16-bit field because hf_ansi_637_tele_cb_num_num_fields is used above - * and uses a different bitmask - */ - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x7f, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_tele_cb_num_num_fields, tvb, offset, 1, - num_fields, - "%s = Number of fields (MSB): %u", - ansi_637_bigbuf, - num_fields); - - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0x80, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Number of fields (LSB)", - ansi_637_bigbuf); + proto_tree_add_item(tree, hf_ansi_637_tele_cb_num_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); oct = oct2; odd = FALSE; @@ -2043,21 +2031,7 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui oct2 = tvb_get_guint8(tvb, offset); num_fields = ((oct & 0x07) << 5) | ((oct2 & 0xf8) >> 3); - /* - * not combined into a 16-bit field because hf_ansi_637_trans_addr_param_num_fields is used below - * and uses a different bitmask - */ - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x07, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, offset - 1, 1, - num_fields, - "%s = Number of fields (MSB): %u", - ansi_637_bigbuf, num_fields); - - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0xf8, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Number of fields (LSB)", - ansi_637_bigbuf); - + proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); if (num_fields == 0) return; SHORT_DATA_CHECK(len - 2, num_fields); @@ -2135,17 +2109,7 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui oct2 = tvb_get_guint8(tvb, offset); num_fields = ((oct & 0x7f) << 1) | ((oct2 & 0x80) >> 7); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x7f, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, offset - 1, 1, - num_fields, - "%s = Number of fields (MSB): %u", - ansi_637_bigbuf, - num_fields); - - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0x80, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Number of fields (LSB)", - ansi_637_bigbuf); + proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); if (num_fields == 0) return; @@ -2190,17 +2154,7 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui oct2 = tvb_get_guint8(tvb, offset); num_fields = ((oct & 0x3f) << 2) | ((oct2 & 0xc0) >> 6); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x3f, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, offset - 1, 1, - num_fields, - "%s = Number of fields (MSB): %u", - ansi_637_bigbuf, - num_fields); - - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0xc0, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Number of fields (LSB)", - ansi_637_bigbuf); + proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); oct = oct2; odd = FALSE; @@ -2850,6 +2804,11 @@ proto_register_ansi_637(void) FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, + { &hf_ansi_637_trans_addr_param_num_fields07f8, + { "Number of fields", "ansi_637_trans.addr_param.num_fields", + FT_UINT8, BASE_DEC, NULL, 0x07F8, + NULL, HFILL } + }, { &hf_ansi_637_trans_addr_param_number, { "Number", "ansi_637_trans.addr_param.number", FT_STRING, BASE_NONE, NULL, 0, @@ -3123,6 +3082,11 @@ proto_register_ansi_637(void) FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL } }, + { &hf_ansi_637_tele_cb_num_num_fields07f8, + { "Number of fields", "ansi_637_tele.cb_num.num_fields", + FT_UINT8, BASE_DEC, NULL, 0x07F8, + NULL, HFILL } + }, { &hf_ansi_637_tele_cb_num_number, { "Call-Back Number", "ansi_637_tele.cb_num.number", FT_STRING, BASE_NONE, NULL, 0, diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c index c9fe6a286c..1abf510e8c 100644 --- a/epan/dissectors/packet-bacapp.c +++ b/epan/dissectors/packet-bacapp.c @@ -7276,19 +7276,18 @@ fVendorIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fUnsigned32(tvb, offset + tag_len, lvt, &val)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s: %s (%u)", + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, &ti, "%s: %s (%u)", label, val_to_str_ext_const(val, &BACnetVendorIdentifiers_ext, "Unknown Vendor"), val); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s - %u octets (Unsigned)", label, lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, &ti, "%s - %u octets (Unsigned)", label, lvt); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); if ((lvt < 1) || (lvt > 2)) { /* vendorIDs >= 1 and <= 2 are supported */ - proto_tree_add_expert_format(tree, pinfo, &ei_bacapp_bad_length, tvb, 0, lvt, + expert_add_info_format(pinfo, ti, &ei_bacapp_bad_length, "Wrong length indicated. Expected 1 or 2, got %u", lvt); return offset+tag_len+lvt; } @@ -7312,17 +7311,16 @@ fRestartReason(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fUnsigned32(tvb, offset + tag_len, lvt, &val)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s: %s (%u)", label, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, &ti, "%s: %s (%u)", label, val_to_str_const(val, BACnetRestartReason, "Unknown reason"), val); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s - %u octets (Unsigned)", label, lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, &ti, "%s - %u octets (Unsigned)", label, lvt); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); if (lvt != 1) { - proto_tree_add_expert_format(tree, pinfo, &ei_bacapp_bad_length, tvb, 0, lvt, + expert_add_info_format(pinfo, ti, &ei_bacapp_bad_length, "Wrong length indicated. Expected 1, got %u", lvt); return offset+tag_len+lvt; } diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c index 54e555e92e..9974b96236 100644 --- a/epan/dissectors/packet-bssgp.c +++ b/epan/dissectors/packet-bssgp.c @@ -183,6 +183,12 @@ static int hf_bssgp_unconfim_send_state_var = -1; static int hf_bssgp_Global_ENB_ID_PDU = -1; static int hf_bssgp_SONtransferRequestContainer_PDU = -1; static int hf_bssgp_selected_plmn_id = -1; +static int hf_bssgp_num_pfc = -1; +static int hf_bssgp_llc_data = -1; +static int hf_bssgp_pdu_data = -1; +static int hf_bssgp_rrlp_apdu = -1; +static int hf_bssgp_dtm_handover_command_data = -1; +static int hf_bssgp_message_elements = -1; /* Initialize the subtree pointers */ static gint ett_bssgp = -1; @@ -198,6 +204,8 @@ static gint ett_bssgp_ra_id = -1; static expert_field ei_bssgp_extraneous_data = EI_INIT; static expert_field ei_bssgp_missing_mandatory_element = EI_INIT; +static expert_field ei_bssgp_not_dissected_yet = EI_INIT; +static expert_field ei_bssgp_erroneous_app_container = EI_INIT; /* PDU type coding, v6.5.0, table 11.3.26, p 80 */ #define BSSGP_PDU_DL_UNITDATA 0x00 @@ -526,7 +534,7 @@ x8f Priority Class Indicator } \ else \ { \ - proto_tree_add_text(tree, \ + proto_tree_add_expert_format(tree, pinfo, &ei_bssgp_missing_mandatory_element,\ tvb, curr_offset, 0, \ "Missing Mandatory element (0x%02x) %s%s, rest of dissection is suspect", \ EMT_iei, \ @@ -914,7 +922,7 @@ de_bssgp_llc_pdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 of if(len > 0){ next_tvb = tvb_new_subset_length(tvb, curr_offset, len); - proto_tree_add_text(tree, tvb, curr_offset, len, "LLC Data"); + proto_tree_add_bytes_format(tree, hf_bssgp_llc_data, tvb, curr_offset, len, NULL, "LLC Data"); } if(next_tvb){ @@ -1030,7 +1038,7 @@ de_bssgp_pdu_in_error(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g proto_tree_add_item(tree, hf_bssgp_msg_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; - proto_tree_add_text(tree, tvb, curr_offset, len-1, "PDU Data"); + proto_tree_add_item(tree, hf_bssgp_pdu_data, tvb, curr_offset, len-1, ENC_NA); return len; } @@ -1557,7 +1565,7 @@ de_bssgp_rrlp_apdu(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, guint32 if(len > 0){ next_tvb = tvb_new_subset_remaining(tvb, curr_offset); - proto_tree_add_text(tree, tvb, curr_offset, len, "RRLP APDU"); + proto_tree_add_bytes_format(tree, hf_bssgp_rrlp_apdu, tvb, curr_offset, len, NULL, "RRLP APDU"); } if(next_tvb){ @@ -1829,7 +1837,7 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i * PSI message content. Each message is 22 octets long. */ for (i=0; i < num_items; i++){ - proto_tree_add_text(tree, tvb, curr_offset, 22, "PSI item %u - not dissected yet",i+1); + proto_tree_add_expert_format(tree, pinfo, &ei_bssgp_not_dissected_yet, tvb, curr_offset, 22, "PSI item %u - not dissected yet",i+1); curr_offset+=22; } }else{ @@ -1881,7 +1889,7 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i /* Octet 3-10 Reporting Cell Identifier */ curr_offset = curr_offset + de_bssgp_cell_id(tvb, tree, pinfo, curr_offset, len, add_string, string_len); /* Octet 11-n MBMS data channel report */ - proto_tree_add_text(tree, tvb, curr_offset, len-6, "MBMS data channel report - not dissected yet"); + proto_tree_add_expert_format(tree, pinfo, &ei_bssgp_not_dissected_yet, tvb, curr_offset, len-6, "MBMS data channel report - not dissected yet"); break; case 4: /* 11.3.63.2.4 RAN-INFORMATION Application Container for the SON Transfer Application */ @@ -1928,7 +1936,7 @@ de_bssgp_ran_information_app_cont_unit(tvbuff_t *tvb, proto_tree *tree, packet_i * UTRA SI Container: This field contains System Information Container valid for the reporting cell * encoded as defined in TS 25.331 */ - proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "UTRA SI Container - not dissected yet"); + proto_tree_add_expert_format(tree, pinfo, &ei_bssgp_not_dissected_yet, tvb, curr_offset, len-(curr_offset-offset), "UTRA SI Container - not dissected yet"); break; default : @@ -1995,7 +2003,7 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, proto_tree_add_item(tree, hf_bssgp_nacc_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; /* Erroneous Application Container including IEI and LI */ - proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI"); + proto_tree_add_expert(tree, pinfo, &ei_bssgp_erroneous_app_container, tvb, curr_offset, len-(curr_offset-offset)); break; case 2: /* @@ -2005,7 +2013,7 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, proto_tree_add_item(tree, hf_bssgp_s13_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; /* Erroneous Application Container including IEI and LI */ - proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI"); + proto_tree_add_expert(tree, pinfo, &ei_bssgp_erroneous_app_container, tvb, curr_offset, len-(curr_offset-offset)); break; case 3: /* @@ -2015,7 +2023,7 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, proto_tree_add_item(tree, hf_bssgp_mbms_data_ch_cause, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; /* Erroneous Application Container including IEI and LI */ - proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI"); + proto_tree_add_expert(tree, pinfo, &ei_bssgp_erroneous_app_container, tvb, curr_offset, len-(curr_offset-offset)); break; case 4: /* @@ -2027,7 +2035,7 @@ de_bssgp_ran_app_error_cont(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, new_tvb = tvb_new_subset_remaining(tvb, curr_offset); curr_offset = curr_offset + dissect_s1ap_SONtransferCause_PDU(new_tvb, pinfo, tree, NULL); /* Erroneous Application Container including IEI and LI */ - proto_tree_add_text(tree, tvb, curr_offset, len-(curr_offset-offset), "Erroneous Application Container including IEI and LI"); + proto_tree_add_expert(tree, pinfo, &ei_bssgp_erroneous_app_container, tvb, curr_offset, len-(curr_offset-offset)); break; case 5: /* 11.3.64.5 Application Error Container for the UTRA SI Application*/ @@ -2146,7 +2154,6 @@ static guint16 de_bssgp_pfc_flow_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi; guint32 curr_offset; guint8 num_pfc, i, pfc_len; @@ -2155,13 +2162,10 @@ de_bssgp_pfc_flow_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, curr_offset = offset; num_pfc = tvb_get_guint8(tvb, curr_offset); - pi = proto_tree_add_text(tree, tvb, curr_offset, 1, - "Number of PFCs: "); - if (num_pfc < 12) { - proto_item_append_text(pi, "%u", num_pfc); + proto_tree_add_uint(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc); }else { - proto_item_append_text(pi, "Reserved"); + proto_tree_add_uint_format_value(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc, "Reserved"); return (curr_offset-offset); } curr_offset++; @@ -2518,7 +2522,6 @@ static guint16 de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree, *pft_tree, *abqp_tree, *arp_tree, *t10_tree; - proto_item *pi; guint32 curr_offset; guint8 num_pfc, i, pfc_len; @@ -2526,13 +2529,10 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi curr_offset = offset; num_pfc = tvb_get_guint8(tvb, curr_offset); - pi = proto_tree_add_text(tree, tvb, curr_offset, 1, - "Number of PFCs: "); - if (num_pfc < 12) { - proto_item_append_text(pi, "%u", num_pfc); + proto_tree_add_uint(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc); }else { - proto_item_append_text(pi, "Reserved"); + proto_tree_add_uint_format_value(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc, "Reserved"); return (len); } curr_offset++; @@ -2596,7 +2596,6 @@ static guint16 de_bssgp_list_of_setup_pfcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi; guint32 curr_offset; guint8 num_pfc, i; @@ -2604,13 +2603,10 @@ de_bssgp_list_of_setup_pfcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo curr_offset = offset; num_pfc = tvb_get_guint8(tvb, curr_offset); - pi = proto_tree_add_text(tree, tvb, curr_offset, 1, - "Number of PFCs: "); - if (num_pfc < 12) { - proto_item_append_text(pi, "%u", num_pfc); + proto_tree_add_uint(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc); }else { - proto_item_append_text(pi, "Reserved"); + proto_tree_add_uint_format_value(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc, "Reserved"); return (curr_offset-offset); } curr_offset++; @@ -2945,7 +2941,6 @@ static guint16 de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi; guint32 curr_offset; guint8 num_pfc, i; @@ -2953,13 +2948,10 @@ de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U curr_offset = offset; num_pfc = tvb_get_guint8(tvb, curr_offset); - pi = proto_tree_add_text(tree, tvb, curr_offset, 1, - "Number of PFCs: "); - if (num_pfc < 12) { - proto_item_append_text(pi, "%u", num_pfc); + proto_tree_add_uint(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc); }else { - proto_item_append_text(pi, "Reserved"); + proto_tree_add_uint_format_value(tree, hf_bssgp_num_pfc, tvb, curr_offset, 1, num_pfc, "Reserved"); return (curr_offset-offset); } curr_offset++; @@ -3009,7 +3001,7 @@ de_bssgp_dtm_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, gui * radio interface message as defined in 3GPP TS 44.060 (carrying * the DTM Handover to A/Gb Mode Payload) */ - proto_tree_add_text(tree, tvb, curr_offset, len, "DTM Handover Command data"); + proto_tree_add_item(tree, hf_bssgp_dtm_handover_command_data, tvb, curr_offset, len, ENC_NA); return(len); } @@ -6434,7 +6426,7 @@ dissect_bssgp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) */ if (msg_fcn_p == NULL) { - proto_tree_add_text(bssgp_tree, tvb, offset, len - offset, "Message Elements"); + proto_tree_add_item(bssgp_tree, hf_bssgp_message_elements, tvb, offset, len - offset, ENC_NA); } else { @@ -6918,6 +6910,37 @@ proto_register_bssgp(void) { "Selected PLMN ID", "bssgp.selected_plmn_id", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + + { &hf_bssgp_num_pfc, + { "Number of PFCs", "bssgp.num_pfc", + FT_UINT16, BASE_DEC, NULL, 0x01ff, + NULL, HFILL } + }, + + { &hf_bssgp_llc_data, + { "LLC DATA", "bssgp.llc_data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + + { &hf_bssgp_pdu_data, + { "PDU DATA", "bssgp.pdu_data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + + { &hf_bssgp_rrlp_apdu, + { "RRLP APDU", "bssgp.rrlp_apdu", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + + { &hf_bssgp_dtm_handover_command_data, + { "DTM Handover Command data", "bssgp.dtm_handover_command_data", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + + { &hf_bssgp_message_elements, + { "Message Elements", "bssgp.message_elements", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, }; /* Setup protocol subtree array */ @@ -6929,6 +6952,8 @@ proto_register_bssgp(void) static ei_register_info ei[] = { { &ei_bssgp_extraneous_data, { "bssgp.extraneous_data", PI_PROTOCOL, PI_NOTE, "Extraneous Data, dissector bug or later version spec(report to wireshark.org)", EXPFILL }}, { &ei_bssgp_missing_mandatory_element, { "bssgp.missing_mandatory_element", PI_PROTOCOL, PI_WARN, "Missing Mandatory element, rest of dissection is suspect", EXPFILL }}, + { &ei_bssgp_not_dissected_yet, { "bssgp.not_dissected_yet", PI_UNDECODED, PI_WARN, "Not dissected yet", EXPFILL }}, + { &ei_bssgp_erroneous_app_container, { "bssgp.erroneous_app_container", PI_PROTOCOL, PI_WARN, "Erroneous Application Container including IEI and LI", EXPFILL }}, }; expert_module_t* expert_bssgp; diff --git a/epan/dissectors/packet-dcerpc.c b/epan/dissectors/packet-dcerpc.c index 1791dd120b..740c154fa2 100644 --- a/epan/dissectors/packet-dcerpc.c +++ b/epan/dissectors/packet-dcerpc.c @@ -570,6 +570,7 @@ static int hf_dcerpc_array_actual_count = -1; static int hf_dcerpc_op = -1; static int hf_dcerpc_referent_id32 = -1; static int hf_dcerpc_referent_id64 = -1; +static int hf_dcerpc_null_pointer = -1; static int hf_dcerpc_fragments = -1; static int hf_dcerpc_fragment = -1; static int hf_dcerpc_fragment_overlap = -1; @@ -2684,9 +2685,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo, /* we got a NULL pointer */ if (id == 0) { - proto_tree_add_text(tree, tvb, offset-pointer_size, - pointer_size, - "(NULL pointer) %s",text); + proto_tree_add_bytes_format_value(tree, hf_dcerpc_null_pointer, tvb, offset-pointer_size, + pointer_size, NULL, "%s", text); goto after_ref_id; } @@ -2728,9 +2728,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo, /* we got a NULL pointer */ if (id == 0) { - proto_tree_add_text(tree, tvb, offset-pointer_size, - pointer_size, - "(NULL pointer) %s",text); + proto_tree_add_bytes_format_value(tree, hf_dcerpc_null_pointer, tvb, offset-pointer_size, + pointer_size, NULL, "%s",text); goto after_ref_id; } @@ -2786,9 +2785,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo, /* we got a NULL pointer */ if (id == 0) { - proto_tree_add_text(tree, tvb, offset-pointer_size, - pointer_size, - "(NULL pointer) %s", text); + proto_tree_add_bytes_format_value(tree, hf_dcerpc_null_pointer, tvb, offset-pointer_size, + pointer_size, NULL, "%s",text); goto after_ref_id; } @@ -2820,9 +2818,8 @@ dissect_ndr_pointer_cb(tvbuff_t *tvb, gint offset, packet_info *pinfo, /* we got a NULL pointer */ if (id == 0) { - proto_tree_add_text(tree, tvb, offset-pointer_size, - pointer_size, - "(NULL pointer) %s",text); + proto_tree_add_bytes_format_value(tree, hf_dcerpc_null_pointer, tvb, offset-pointer_size, + pointer_size, NULL, "%s",text); goto after_ref_id; } @@ -6363,6 +6360,9 @@ proto_register_dcerpc(void) { &hf_dcerpc_op, { "Operation", "dcerpc.op", FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }}, + { &hf_dcerpc_null_pointer, + { "NULL Pointer", "dcerpc.null_pointer", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_dcerpc_fragments, { "Reassembled DCE/RPC Fragments", "dcerpc.fragments", FT_NONE, BASE_NONE, NULL, 0x0, "DCE/RPC Fragments", HFILL }}, diff --git a/epan/dissectors/packet-rlc.c b/epan/dissectors/packet-rlc.c index 164ac6a006..04e042f3ce 100644 --- a/epan/dissectors/packet-rlc.c +++ b/epan/dissectors/packet-rlc.c @@ -146,6 +146,8 @@ static expert_field ei_rlc_ctrl_type = EI_INIT; static expert_field ei_rlc_li_incorrect_warn = EI_INIT; static expert_field ei_rlc_li_too_many = EI_INIT; static expert_field ei_rlc_header_only = EI_INIT; +static expert_field ei_rlc_ciphered_data = EI_INIT; +static expert_field ei_rlc_no_per_frame_data = EI_INIT; static dissector_handle_t ip_handle; static dissector_handle_t rrc_handle; @@ -1574,8 +1576,7 @@ rlc_decipher(tvbuff_t *tvb, packet_info * pinfo, proto_tree * tree, fp_info * fp /*Unable to decipher the packet*/ if(t == NULL){ - proto_tree_add_text(tree, tvb, 0, -1, - "Cannot dissect RLC frame because it is ciphered"); + proto_tree_add_expert(tree, pinfo, &ei_rlc_ciphered_data, tvb, 0, -1); col_append_str(pinfo->cinfo, COL_INFO, "[Ciphered Data]"); return; @@ -1864,8 +1865,7 @@ dissect_rlc_um(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo, if(global_rlc_try_decipher){ rlc_decipher(tvb, pinfo, tree, fpinf, rlcinf, seq, RLC_UM); }else{ - proto_tree_add_text(tree, tvb, 0, -1, - "Cannot dissect RLC frame because it is ciphered"); + proto_tree_add_expert(tree, pinfo, &ei_rlc_ciphered_data, tvb, 0, -1); col_append_str(pinfo->cinfo, COL_INFO, "[Ciphered Data]"); return; } @@ -2276,8 +2276,7 @@ dissect_rlc_am(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo, } if (!fpinf || !rlcinf) { - proto_tree_add_text(tree, tvb, 0, -1, - "Cannot dissect RLC frame because per-frame info is missing"); + proto_tree_add_expert(tree, pinfo, &ei_rlc_no_per_frame_data, tvb, 0, -1); return; } @@ -2290,8 +2289,7 @@ dissect_rlc_am(enum rlc_channel_type channel, tvbuff_t *tvb, packet_info *pinfo, if(global_rlc_try_decipher){ rlc_decipher(tvb, pinfo, tree, fpinf, rlcinf, seq, RLC_AM); }else{ - proto_tree_add_text(tree, tvb, 0, -1, - "Cannot dissect RLC frame because it is ciphered"); + proto_tree_add_expert(tree, pinfo, &ei_rlc_ciphered_data, tvb, 0, -1); col_append_str(pinfo->cinfo, COL_INFO, "[Ciphered Data]"); return; } @@ -2452,9 +2450,7 @@ dissect_rlc_dcch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) rlci = (rlc_info *)p_get_proto_data(wmem_file_scope(), pinfo, proto_rlc, 0); if (!fpi || !rlci){ - ti = proto_tree_add_text(tree, tvb, 0, -1, - "Can't dissect RLC frame because no per-frame info was attached!"); - PROTO_ITEM_SET_GENERATED(ti); + proto_tree_add_expert(tree, pinfo, &ei_rlc_no_per_frame_data, tvb, 0, -1); return; } @@ -2492,9 +2488,7 @@ dissect_rlc_ps_dtch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) rlci = (rlc_info *)p_get_proto_data(wmem_file_scope(), pinfo, proto_rlc, 0); if (!fpi || !rlci) { - ti = proto_tree_add_text(tree, tvb, 0, -1, - "Can't dissect RLC frame because no per-frame info was attached!"); - PROTO_ITEM_SET_GENERATED(ti); + proto_tree_add_expert(tree, pinfo, &ei_rlc_no_per_frame_data, tvb, 0, -1); return; } @@ -2924,6 +2918,8 @@ proto_register_rlc(void) { &ei_rlc_reserved_bits_not_zero, { "rlc.reserved_bits_not_zero", PI_PROTOCOL, PI_WARN, "reserved bits not zero", EXPFILL }}, { &ei_rlc_ctrl_type, { "rlc.ctrl_pdu_type.invalid", PI_PROTOCOL, PI_WARN, "Invalid RLC AM control type %u", EXPFILL }}, { &ei_rlc_he, { "rlc.he.invalid", PI_PROTOCOL, PI_WARN, "Incorrect HE value", EXPFILL }}, + { &ei_rlc_ciphered_data, { "rlc.ciphered_data", PI_UNDECODED, PI_WARN, "Cannot dissect RLC frame because it is ciphered", EXPFILL }}, + { &ei_rlc_no_per_frame_data, { "rlc.no_per_frame_data", PI_PROTOCOL, PI_WARN, "Can't dissect RLC frame because no per-frame info was attached!", EXPFILL }}, }; proto_rlc = proto_register_protocol("Radio Link Control", "RLC", "rlc"); diff --git a/epan/dissectors/packet-selfm.c b/epan/dissectors/packet-selfm.c index be715c1541..a9a2875a22 100644 --- a/epan/dissectors/packet-selfm.c +++ b/epan/dissectors/packet-selfm.c @@ -205,7 +205,19 @@ static int hf_selfm_fastmsg_soe_resp_doy = -1; static int hf_selfm_fastmsg_soe_resp_year = -1; static int hf_selfm_fastmsg_soe_resp_tod = -1; /* static int hf_selfm_fastmsg_soe_resp_data = -1; */ - +/* Generated from convert_proto_tree_add_text.pl */ +static int hf_selfm_fmconfig_ai_channel = -1; +static int hf_selfm_fmdata_ai_value16 = -1; +static int hf_selfm_fmdata_ai_scale_factor = -1; +static int hf_selfm_fmdata_ai_value_float = -1; +static int hf_selfm_fmdata_ai_value_double = -1; +static int hf_selfm_fmdata_data_type = -1; +static int hf_selfm_fmdata_quantity = -1; +static int hf_selfm_fmdata_ai_value_string = -1; +static int hf_selfm_fastmsg_unsresp_elmt_ts_ofs_decoded = -1; +static int hf_selfm_fid = -1; +static int hf_selfm_rid = -1; +static int hf_selfm_fastmsg_data_region_name = -1; /* Initialize the subtree pointers */ static gint ett_selfm = -1; @@ -1102,7 +1114,7 @@ dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) proto_tree *fmconfig_tree, *fmconfig_ai_tree=NULL, *fmconfig_calc_tree=NULL; guint count; guint8 len, sf_loc, num_sf, num_ai, num_calc; - gchar ai_name[FM_CONFIG_ANA_CHNAME_LEN+1]; /* 6 Characters + a Null */ + gchar* ai_name; len = tvb_get_guint8(tvb, offset); /* skip num_flags, position offset+1 */ @@ -1138,14 +1150,13 @@ dissect_fmconfig_frame(tvbuff_t *tvb, proto_tree *tree, int offset) /* Get AI Channel Details */ for (count = 0; count < num_ai; count++) { - tvb_memcpy(tvb, &ai_name, offset, 6); - ai_name[FM_CONFIG_ANA_CHNAME_LEN] = '\0'; /* Put a terminating null onto the end of the AI name, in case none exists */ + ai_name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 6, ENC_ASCII); fmconfig_ai_tree = proto_tree_add_subtree_format(fmconfig_tree, tvb, offset, 10, ett_selfm_fmconfig_ai, NULL, "Analog Channel: %s", ai_name); /* Add Channel Name, Channel Data Type, Scale Factor Type and Scale Factor Offset to tree */ - proto_tree_add_text(fmconfig_ai_tree, tvb, offset, 6, "Analog Channel Name: %s", ai_name); + proto_tree_add_item(fmconfig_ai_tree, hf_selfm_fmconfig_ai_channel, tvb, offset, 6, ENC_ASCII|ENC_NA); proto_tree_add_item(fmconfig_ai_tree, hf_selfm_fmconfig_ai_type, tvb, offset+6, 1, ENC_BIG_ENDIAN); proto_tree_add_item(fmconfig_ai_tree, hf_selfm_fmconfig_ai_sf_type, tvb, offset+7, 1, ENC_BIG_ENDIAN); proto_tree_add_item(fmconfig_ai_tree, hf_selfm_fmconfig_ai_sf_ofs, tvb, offset+8, 2, ENC_BIG_ENDIAN); @@ -1213,8 +1224,7 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of guint16 config_cmd, ts_msec; gint16 ai_int16val; gint cnt = 0, ch_size=0; - gfloat ai_fpval, ai_sf_fp; - gdouble ai_fpd_val; + gfloat ai_sf_fp; gboolean config_found = FALSE; fm_conversation *conv; fm_config_frame *cfg_data; @@ -1332,20 +1342,18 @@ dissect_fmdata_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int of ai_sf_fp = 1; } - proto_tree_add_text(fmdata_ai_ch_tree, tvb, offset, ch_size, "Value (Raw): %d", ai_int16val); - proto_tree_add_text(fmdata_ai_ch_tree, tvb, offset, ch_size, "Value (w/ Scale Factor): %f", ((gfloat)ai_int16val*ai_sf_fp)); + proto_tree_add_uint(fmdata_ai_ch_tree, hf_selfm_fmdata_ai_value16, tvb, offset, ch_size, ai_int16val); + proto_tree_add_float(fmdata_ai_ch_tree, hf_selfm_fmdata_ai_scale_factor, tvb, offset, ch_size, ((gfloat)ai_int16val*ai_sf_fp)); offset += ch_size; break; /* Channel type is IEEE Floating point */ case FM_CONFIG_ANA_CHTYPE_FP: - ai_fpval = tvb_get_ntohieee_float(tvb, offset); - proto_tree_add_text(fmdata_ai_ch_tree, tvb, offset, ch_size, "Value: %f", ai_fpval); + proto_tree_add_item(fmdata_ai_ch_tree, hf_selfm_fmdata_ai_value_float, tvb, offset, ch_size, ENC_BIG_ENDIAN); offset += ch_size; break; /* Channel type is Double IEEE Floating point */ case FM_CONFIG_ANA_CHTYPE_FPD: - ai_fpd_val = tvb_get_ntohieee_double(tvb, offset); - proto_tree_add_text(fmdata_ai_ch_tree, tvb, offset, ch_size, "Value: %f", ai_fpd_val); + proto_tree_add_item(fmdata_ai_ch_tree, hf_selfm_fmdata_ai_value_double, tvb, offset, ch_size, ENC_BIG_ENDIAN); offset += ch_size; break; @@ -1652,7 +1660,6 @@ dissect_fastmsg_readresp_frame(tvbuff_t *tvb, proto_tree *fastmsg_tree, packet_i proto_tree *fastmsg_tag_tree=NULL, *fmdata_dig_tree=NULL; guint32 base_addr; guint16 data_size, num_addr, cnt; - guint8 *item_val_str_ptr; guint8 seq_cnt; gboolean seq_fir, seq_fin, save_fragmented; int payload_offset=0; @@ -1766,13 +1773,14 @@ dissect_fastmsg_readresp_frame(tvbuff_t *tvb, proto_tree *fastmsg_tree, packet_i /* Load some information from the stored Data Format Response message into the tree for reference */ pi_fnum = proto_tree_add_text(fastmsg_tag_tree, payload_tvb, payload_offset, data_size, "Using frame number %d (Index Pos: %d) as Data Format Reference",dataitem->fnum, dataitem->index_pos ); - pi_type = proto_tree_add_text(fastmsg_tag_tree, payload_tvb, payload_offset, data_size, "Data_Type: %s (%#x)", - val_to_str_const(dataitem->data_type, selfm_fastmsg_tagtype_vals, "Unknown Data Type"), dataitem->data_type); - pi_qty = proto_tree_add_text(fastmsg_tag_tree, payload_tvb, payload_offset, data_size, "Quantity: %d",dataitem->quantity ); + pi_type = proto_tree_add_uint(fastmsg_tag_tree, hf_selfm_fmdata_data_type, payload_tvb, payload_offset, 0, dataitem->data_type); + pi_qty = proto_tree_add_uint(fastmsg_tag_tree, hf_selfm_fmdata_quantity, payload_tvb, payload_offset, 0, dataitem->quantity ); PROTO_ITEM_SET_GENERATED(pi_fnum); PROTO_ITEM_SET_GENERATED(pi_type); + proto_item_set_len(pi_type, data_size); PROTO_ITEM_SET_GENERATED(pi_qty); + proto_item_set_len(pi_qty, data_size); /* Data Item Type determines how to decode */ switch (dataitem->data_type) { @@ -1809,8 +1817,7 @@ dissect_fastmsg_readresp_frame(tvbuff_t *tvb, proto_tree *fastmsg_tree, packet_i case FAST_MSG_TAGTYPE_CHAR8: case FAST_MSG_TAGTYPE_CHAR16: - item_val_str_ptr = tvb_get_string_enc(wmem_packet_scope(), payload_tvb, payload_offset, data_size, ENC_ASCII); - proto_tree_add_text(fastmsg_tag_tree, payload_tvb, payload_offset, data_size, "Value: %s", item_val_str_ptr); + proto_tree_add_item(fastmsg_tag_tree, hf_selfm_fmdata_ai_value_string, payload_tvb, payload_offset, data_size, ENC_ASCII|ENC_NA); payload_offset += data_size; break; @@ -1885,14 +1892,13 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o { /* Set up structures needed to add the protocol subtree and manage it */ proto_item *fastmsg_def_fc_item, *fastmsg_elementlist_item; - proto_item *fastmsg_tag_item; proto_item *pi_baseaddr, *fastmsg_crc16_item; proto_tree *fastmsg_tree, *fastmsg_def_fc_tree=NULL, *fastmsg_elementlist_tree=NULL; proto_tree *fastmsg_element_tree=NULL, *fastmsg_datareg_tree=NULL, *fastmsg_tag_tree=NULL; gint cnt, num_elements, elmt_status32_ofs=0, elmt_status, null_offset; guint8 len, funccode, seq, rx_num_fc, tx_num_fc; guint8 seq_cnt, elmt_idx, fc_enable; - guint8 *fid_str_ptr, *rid_str_ptr, *region_name_ptr, *tag_name_ptr; + guint8 *tag_name_ptr; guint16 base_addr, num_addr, num_reg, addr1, addr2, crc16, crc16_calc; guint32 tod_ms, elmt_status32, elmt_ts_offset; static const int * seq_fields[] = { @@ -2021,8 +2027,8 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o proto_tree_add_item(fastmsg_tree, hf_selfm_fastmsg_unsresp_doy, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(fastmsg_tree, hf_selfm_fastmsg_unsresp_year, tvb, offset+2, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(fastmsg_tree, hf_selfm_fastmsg_unsresp_todms, tvb, offset+4, 4, ENC_BIG_ENDIAN); - proto_tree_add_text(fastmsg_tree, tvb, offset+4, 4, "Time of Day (decoded): %s", time_msecs_to_str(wmem_packet_scope(), tod_ms)); + proto_tree_add_uint_format_value(fastmsg_tree, hf_selfm_fastmsg_unsresp_todms, tvb, offset+4, 4, + tod_ms, "%s", time_msecs_to_str(wmem_packet_scope(), tod_ms)); offset += 8; /* Build element tree */ @@ -2062,8 +2068,8 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o /* Add Index Number and Timestamp offset to tree */ proto_tree_add_item(fastmsg_element_tree, hf_selfm_fastmsg_unsresp_elmt_idx, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(fastmsg_element_tree, hf_selfm_fastmsg_unsresp_elmt_ts_ofs, tvb, offset+1, 3, ENC_BIG_ENDIAN); - proto_tree_add_text(fastmsg_element_tree, tvb, offset+1, 3, - "SER Element Timestamp Offset (decoded): %s", time_msecs_to_str(wmem_packet_scope(), tod_ms + (elmt_ts_offset/1000))); + proto_tree_add_uint_format_value(fastmsg_element_tree, hf_selfm_fastmsg_unsresp_elmt_ts_ofs_decoded, tvb, offset+1, 3, + tod_ms + (elmt_ts_offset/1000), "%s", time_msecs_to_str(wmem_packet_scope(), tod_ms + (elmt_ts_offset/1000))); proto_tree_add_uint(fastmsg_element_tree, hf_selfm_fastmsg_unsresp_elmt_status, tvb, elmt_status32_ofs, 4, elmt_status); offset += 4; @@ -2205,10 +2211,8 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o case FAST_MSG_DEVDESC_RESP: /* 0xB0 (resp to 0x30) - Device Description Response */ /* Add FID / RID ASCII data to tree */ - fid_str_ptr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 50, ENC_ASCII); - rid_str_ptr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset+50, 40, ENC_ASCII); - proto_tree_add_text(fastmsg_tree, tvb, offset, 50, "FID: %s", fid_str_ptr); - proto_tree_add_text(fastmsg_tree, tvb, offset+50, 40, "RID: %s", rid_str_ptr); + proto_tree_add_item(fastmsg_tree, hf_selfm_fid, tvb, offset, 50, ENC_ASCII|ENC_NA); + proto_tree_add_item(fastmsg_tree, hf_selfm_rid, tvb, offset+50, 40, ENC_ASCII|ENC_NA); offset += 90; /* 16-bit field with number of data areas */ @@ -2237,8 +2241,7 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o ett_selfm_fastmsg_datareg, NULL, "Fast Message Data Region #%d", cnt+1); /* 10-Byte Region description */ - region_name_ptr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 10, ENC_ASCII); - proto_tree_add_text(fastmsg_datareg_tree, tvb, offset, 10, "Data Region Name: %s", region_name_ptr); + proto_tree_add_item(fastmsg_datareg_tree, hf_selfm_fastmsg_data_region_name, tvb, offset, 10, ENC_ASCII|ENC_NA); offset += 10; /* 32-bit field with base address of data region */ @@ -2286,8 +2289,7 @@ dissect_fastmsg_frame(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo, int o while ((tvb_reported_length_remaining(tvb, offset)) > 2) { /* Data Item record name 10 bytes */ tag_name_ptr = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 10, ENC_ASCII); - fastmsg_tag_item = proto_tree_add_text(fastmsg_tree, tvb, offset, 14, "Data Item Record Name: %s", tag_name_ptr); - fastmsg_tag_tree = proto_item_add_subtree(fastmsg_tag_item, ett_selfm_fastmsg_tag); + fastmsg_tag_tree = proto_tree_add_subtree_format(fastmsg_tree, tvb, offset, 14, ett_selfm_fastmsg_tag, NULL, "Data Item Record Name: %s", tag_name_ptr); /* Data item qty and type */ proto_tree_add_item(fastmsg_tag_tree, hf_selfm_fastmsg_dataitem_qty, tvb, offset+10, 2, ENC_BIG_ENDIAN); @@ -2944,7 +2946,20 @@ proto_register_selfm(void) { &hf_selfm_fragment_reassembled_in, { "Reassembled PDU In Frame", "selfm.respdata.fragment.reassembled_in", FT_FRAMENUM, BASE_NONE, NULL, 0x0, "This PDU is reassembled in this frame", HFILL }}, { &hf_selfm_fragment_reassembled_length, - { "Reassembled SEL Fast Msg length", "selfm.respdata.fragment.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0, "The total length of the reassembled payload", HFILL }} + { "Reassembled SEL Fast Msg length", "selfm.respdata.fragment.reassembled.length", FT_UINT32, BASE_DEC, NULL, 0x0, "The total length of the reassembled payload", HFILL }}, + /* Generated from convert_proto_tree_add_text.pl */ + { &hf_selfm_fmconfig_ai_channel, { "Analog Channel Name", "selfm.fmconfig.ai_channel", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_ai_value16, { "Value (Raw)", "selfm.fmdata.ai.value16", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_ai_scale_factor, { "Value (w/ Scale Factor)", "selfm.fmdata.ai.value_scale_factor", FT_FLOAT, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_ai_value_float, { "Value", "selfm.fmdata.ai.value_float", FT_FLOAT, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_ai_value_double, { "Value", "selfm.fmdata.ai.value_double", FT_DOUBLE, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_data_type, { "Data_Type", "selfm.fmdata.data_type", FT_UINT32, BASE_DEC, VALS(selfm_fastmsg_tagtype_vals), 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_quantity, { "Quantity", "selfm.fmdata.quantity", FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fmdata_ai_value_string, { "Value", "selfm.fmdata.ai.value_string", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fastmsg_unsresp_elmt_ts_ofs_decoded, { "SER Element Timestamp Offset (decoded)", "selfm.fastmsg.unsresp_elmt_ts_ofs.decoded", FT_UINT24, BASE_DEC, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fid, { "FID", "selfm.fid", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_rid, { "RID", "selfm.rid", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, + { &hf_selfm_fastmsg_data_region_name, { "Data Region Name", "selfm.fastmsg.data_region_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }}, }; /* Register expert fields */ diff --git a/epan/dissectors/packet-smb.c b/epan/dissectors/packet-smb.c index fdbbef4da1..c72d6966e9 100644 --- a/epan/dissectors/packet-smb.c +++ b/epan/dissectors/packet-smb.c @@ -16393,7 +16393,6 @@ dissect_unknown(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off WORD_COUNT; if (wc != 0) { - tvb_ensure_bytes_exist(tvb, offset, wc*2); proto_tree_add_text(tree, tvb, offset, wc*2, "Word parameters"); offset += wc*2; } @@ -16401,7 +16400,6 @@ dissect_unknown(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off BYTE_COUNT; if (bc != 0) { - tvb_ensure_bytes_exist(tvb, offset, bc); proto_tree_add_text(tree, tvb, offset, bc, "Byte parameters"); offset += bc; bc = 0; |