diff options
author | Michael Mann <mmann78@netscape.net> | 2015-08-31 00:20:49 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2015-09-01 04:10:06 +0000 |
commit | 7298a3168742ca3298ad5715f66e09f386755788 (patch) | |
tree | 780747d92b01a3f9a430e6cb4b56b9b90eb06445 /epan/dissectors | |
parent | 54d2ff1c3e74e57a59a57b9b3fdeb50e64cceb0f (diff) |
Eliminate proto_tree_add_text from ANSI dissectors.
Change-Id: I22dccb2f2d71897334e11632f4060ccfbf4794ad
Reviewed-on: https://code.wireshark.org/review/10334
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-ansi_637.c | 148 | ||||
-rw-r--r-- | epan/dissectors/packet-ansi_801.c | 87 | ||||
-rw-r--r-- | epan/dissectors/packet-ansi_a.c | 253 |
3 files changed, 193 insertions, 295 deletions
diff --git a/epan/dissectors/packet-ansi_637.c b/epan/dissectors/packet-ansi_637.c index 38dcd091c8..b68bca95f2 100644 --- a/epan/dissectors/packet-ansi_637.c +++ b/epan/dissectors/packet-ansi_637.c @@ -221,7 +221,6 @@ 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; @@ -323,6 +322,8 @@ static int hf_ansi_637_tele_srvc_cat_prog_data_max_messages = -1; static int hf_ansi_637_tele_srvc_cat_prog_data_alert_option = -1; static int hf_ansi_637_tele_srvc_cat_prog_data_num_fields = -1; static int hf_ansi_637_tele_srvc_cat_prog_data_text = -1; +static int hf_ansi_637_msb_first_field = -1; +static int hf_ansi_637_lsb_last_field = -1; /* Initialize the subtree pointers */ static gint ett_ansi_637_tele = -1; @@ -643,7 +644,6 @@ static void tele_param_user_data_cmas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset, gboolean *has_private_data_p _U_) { proto_tree *subtree; - guint8 bit_mask_8; guint8 oct, oct2; guint8 encoding; guint8 num_fields; @@ -799,17 +799,7 @@ tele_param_user_data_cmas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g offset += (record_len - 1); if (reserved_bits > 0) - { - oct = tvb_get_guint8(tvb_out, offset); - - bit_mask_8 = MASK_B(8 - reserved_bits, reserved_bits); - - other_decode_bitfield_value(ansi_637_bigbuf, oct, bit_mask_8, 8); - proto_tree_add_uint_format(subtree, hf_ansi_637_reserved_bits_8_generic, tvb_out, offset, 1, - oct & bit_mask_8, - "%s = Reserved bit(s)", - ansi_637_bigbuf); - } + proto_tree_add_bits_item(subtree, hf_ansi_637_reserved_bits_8_generic, tvb_out, (offset*8)+(8-reserved_bits), reserved_bits, ENC_NA); offset += 1; break; @@ -938,8 +928,6 @@ tele_param_user_data_cmas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g static void tele_param_user_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset, gboolean *has_private_data_p) { - guint8 oct; - guint8 bit_mask_8; guint8 encoding; guint8 encoding_bit_len; guint8 num_fields; @@ -1132,21 +1120,13 @@ tele_param_user_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint switch (cset) { case GSM_7BITS: - bit_mask_8 = MASK_B(0, reserved_bits); /* MSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8), reserved_bits, ENC_NA); /* MSBs */ break; default: - bit_mask_8 = MASK_B(8 - reserved_bits, reserved_bits); /* LSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8)+(8-reserved_bits), reserved_bits, ENC_NA); /* LSBs */ break; } - - oct = tvb_get_guint8(tvb, orig_offset + len - 1); - - other_decode_bitfield_value(ansi_637_bigbuf, oct, bit_mask_8, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_reserved_bits_8_generic, tvb, orig_offset + len - 1, 1, - oct & bit_mask_8, - "%s = Reserved bit(s)", - ansi_637_bigbuf); } } @@ -1463,8 +1443,6 @@ tele_param_disp_mode(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gu static void tele_param_mult_enc_user_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset, gboolean *has_private_data_p _U_) { - guint8 oct; - guint8 bit_mask_8; guint64 encoding; guint8 encoding_bit_len; guint64 num_fields; @@ -1544,21 +1522,13 @@ tele_param_mult_enc_user_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre switch (cset) { case GSM_7BITS: - bit_mask_8 = MASK_B(0, reserved_bits); /* MSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8), reserved_bits, ENC_NA); /* MSBs */ break; default: - bit_mask_8 = MASK_B(8 - reserved_bits, reserved_bits); /* LSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8)+(8-reserved_bits), reserved_bits, ENC_NA); /* LSBs */ break; } - - oct = tvb_get_guint8(tvb, orig_offset + len - 1); - - other_decode_bitfield_value(ansi_637_bigbuf, oct, bit_mask_8, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_reserved_bits_8_generic, tvb, orig_offset + len - 1, 1, - oct & bit_mask_8, - "%s = Reserved bit(s)", - ansi_637_bigbuf); } } @@ -1596,8 +1566,6 @@ static const value_string tele_param_srvc_cat_prog_data_alert_option_vals[] = { static void tele_param_srvc_cat_prog_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset, gboolean *has_private_data_p _U_) { - guint8 oct; - guint8 bit_mask_8; guint64 encoding; guint8 encoding_bit_len; guint64 num_fields; @@ -1702,21 +1670,13 @@ tele_param_srvc_cat_prog_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre switch (cset) { case GSM_7BITS: - bit_mask_8 = MASK_B(0, reserved_bits); /* MSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8), reserved_bits, ENC_NA); /* MSBs */ break; default: - bit_mask_8 = MASK_B(8 - reserved_bits, reserved_bits); /* LSBs */ + proto_tree_add_bits_item(tree, hf_ansi_637_reserved_bits_8_generic, tvb, ((orig_offset + len - 1)*8)+(8-reserved_bits), reserved_bits, ENC_NA); /* LSBs */ break; } - - oct = tvb_get_guint8(tvb, orig_offset + len - 1); - - other_decode_bitfield_value(ansi_637_bigbuf, oct, bit_mask_8, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_reserved_bits_8_generic, tvb, orig_offset + len - 1, 1, - oct & bit_mask_8, - "%s = Reserved bit(s)", - ansi_637_bigbuf); } } @@ -1998,11 +1958,9 @@ static const value_string trans_param_addr_data_net_ton_strings[] = { static void trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint len, guint32 offset, gchar *add_string _U_, int string_len _U_) { - guint8 oct, oct2, num_fields, odd; + guint8 oct, oct2, odd; gboolean email_addr; - guint32 saved_offset; - guint32 required_octs; - guint32 i; + guint32 i, saved_offset, required_octs, num_fields; SHORT_DATA_CHECK(len, 2); @@ -2031,16 +1989,12 @@ 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); - proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_bits_item(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, (offset*8)+3, 8, ENC_BIG_ENDIAN); if (num_fields == 0) return; SHORT_DATA_CHECK(len - 2, num_fields); - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0x07, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Most significant bits of first field", - ansi_637_bigbuf); - + proto_tree_add_bits_item(tree, hf_ansi_637_msb_first_field, tvb, offset*8, 3, ENC_NA); offset += 1; oct = oct2; @@ -2068,11 +2022,7 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui offset += (num_fields - 1); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0xf8, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Least significant bits of last field", - ansi_637_bigbuf); - + proto_tree_add_bits_item(tree, hf_ansi_637_lsb_last_field, tvb, (offset*8)+3, 5, ENC_NA); proto_tree_add_item(tree, hf_ansi_637_reserved_bits_8_07, tvb, offset, 1, ENC_BIG_ENDIAN); } else @@ -2088,37 +2038,17 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui oct2 = tvb_get_guint8(tvb, offset + 1); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x07, 8); - proto_tree_add_uint_format(tree, hf_ansi_637_trans_addr_param_plan, tvb, offset, 1, - ((oct & 0x07) << 1) | ((oct2 & 0x80) >> 7), - "%s = Numbering Plan (MSB): %s (%u)", - ansi_637_bigbuf, - val_to_str_const(((oct & 0x07) << 1) | ((oct2 & 0x80) >> 7), ansi_a_ms_info_rec_num_plan_vals, "Reserved"), - ((oct & 0x07) << 1) | ((oct2 & 0x80) >> 7)); - - offset += 1; - oct = oct2; - - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x80, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Numbering Plan (LSB)", - ansi_637_bigbuf); - - offset += 1; - - oct2 = tvb_get_guint8(tvb, offset); - num_fields = ((oct & 0x7f) << 1) | ((oct2 & 0x80) >> 7); + proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_plan, tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; - proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); + num_fields = tvb_get_ntohs(tvb, offset) & 0x07f8; + proto_tree_add_bits_item(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, (offset*8)+3, 8, ENC_BIG_ENDIAN); if (num_fields == 0) return; SHORT_DATA_CHECK(len - 3, num_fields); - other_decode_bitfield_value(ansi_637_bigbuf, oct2, 0x7f, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Most significant bits of first field", - ansi_637_bigbuf); + proto_tree_add_bits_item(tree, hf_ansi_637_msb_first_field, tvb, offset*8, 7, ENC_NA); offset += 1; oct = oct2; @@ -2139,11 +2069,7 @@ trans_param_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui offset += (num_fields - 1); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0x80, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Least significant bit of last field", - ansi_637_bigbuf); - + proto_tree_add_bits_item(tree, hf_ansi_637_lsb_last_field, tvb, (offset*8)+7, 1, ENC_NA); proto_tree_add_item(tree, hf_ansi_637_reserved_bits_8_7f, tvb, offset, 1, ENC_BIG_ENDIAN); } } @@ -2154,7 +2080,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); - proto_tree_add_item(tree, hf_ansi_637_trans_addr_param_num_fields07f8, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_bits_item(tree, hf_ansi_637_trans_addr_param_num_fields, tvb, (offset*8)+6, 8, ENC_BIG_ENDIAN); oct = oct2; odd = FALSE; @@ -2234,11 +2160,7 @@ trans_param_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, SHORT_DATA_CHECK(len - 2, num_fields); - other_decode_bitfield_value(ansi_637_bigbuf, value, 0x000f, 16); - proto_tree_add_text(tree, tvb, offset, 2, - "%s = Most significant bits of first field", - ansi_637_bigbuf); - + proto_tree_add_bits_item(tree, hf_ansi_637_msb_first_field, tvb, offset*8, 4, ENC_NA); offset += 2; oct = value & 0x000f; @@ -2256,10 +2178,7 @@ trans_param_subaddress(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, offset += (num_fields - 1); - other_decode_bitfield_value(ansi_637_bigbuf, oct, 0xf0, 8); - proto_tree_add_text(tree, tvb, offset, 1, - "%s = Least significant bits of last field", - ansi_637_bigbuf); + proto_tree_add_bits_item(tree, hf_ansi_637_lsb_last_field, tvb, (offset*8)+4, 4, ENC_NA); proto_tree_add_item(tree, hf_ansi_637_reserved_bits_8_0f, tvb, offset, 1, ENC_BIG_ENDIAN); } @@ -2796,17 +2715,12 @@ proto_register_ansi_637(void) }, { &hf_ansi_637_trans_addr_param_plan, { "Numbering Plan", "ansi_637_trans.addr_param.plan", - FT_UINT8, BASE_DEC, NULL, 0, + FT_UINT16, BASE_DEC, VALS(ansi_a_ms_info_rec_num_plan_vals), 0x0780, NULL, HFILL } }, { &hf_ansi_637_trans_addr_param_num_fields, { "Number of fields", "ansi_637_trans.addr_param.num_fields", - 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, + FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } }, { &hf_ansi_637_trans_addr_param_number, @@ -3316,7 +3230,17 @@ proto_register_ansi_637(void) { "Encoded program data", "ansi_637_tele.srvc_cat_prog_data.text", FT_STRING, STR_UNICODE, NULL, 0, NULL, HFILL } - } + }, + { &hf_ansi_637_msb_first_field, + { "Most significant bits of first field", "ansi_637_tele.msb_first_field", + FT_UINT8, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, + { &hf_ansi_637_lsb_last_field, + { "Least significant bits of last field", "ansi_637_tele.lsb_last_field", + FT_UINT8, BASE_HEX, NULL, 0x0, + NULL, HFILL } + }, }; static ei_register_info ei[] = { diff --git a/epan/dissectors/packet-ansi_801.c b/epan/dissectors/packet-ansi_801.c index ba80b44fb6..c54e51696d 100644 --- a/epan/dissectors/packet-ansi_801.c +++ b/epan/dissectors/packet-ansi_801.c @@ -187,6 +187,9 @@ static int hf_ansi_801_loc_calc_cap = -1; static int hf_ansi_801_toa = -1; static int hf_ansi_801_data = -1; static int hf_ansi_801_proprietary_data = -1; +static int hf_ansi_801_time_ref_ms = -1; +static int hf_ansi_801_time_of_almanac = -1; +static int hf_ansi_801_gps_week_number = -1; static expert_field ei_ansi_801_extraneous_data = EI_INIT; @@ -500,63 +503,46 @@ for_pr_gps_sense_ass(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint proto_tree_add_item(tree, hf_ansi_801_data_records, tvb, offset, 2, ENC_BIG_ENDIAN); offset++; - proto_tree_add_text(tree, tvb, offset, (len - (offset - saved_offset)), - "Data records (LSB) + Reserved"); - EXTRANEOUS_DATA_CHECK(len, offset - saved_offset); } static void for_pr_gps_almanac(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset) { - guint8 num_sv; - guint32 value; - guint32 saved_offset; - - saved_offset = offset; + guint32 saved_offset = offset; + const gint *fields[] = { + &hf_ansi_801_num_sv_p32, + &hf_ansi_801_week_num, + &hf_ansi_801_toa, + &hf_ansi_801_part_num32, + &hf_ansi_801_total_parts32, + NULL + }; SHORT_DATA_CHECK(len, 4); - value = tvb_get_ntohl(tvb, offset); - num_sv = (value & 0xfc000000) >> 26; - - proto_tree_add_item(tree, hf_ansi_801_num_sv_p32, tvb, offset, 4, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_week_num, tvb, offset, 4, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_toa, tvb, offset, 4, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_part_num32, tvb, offset, 4, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_total_parts32, tvb, offset, 4, ENC_BIG_ENDIAN); + proto_tree_add_bitmask_list(tree, tvb, offset, 4, fields, ENC_BIG_ENDIAN); offset += 4; - proto_tree_add_text(tree, tvb, offset, (len - (offset - saved_offset)), - "%u Data records + Reserved", - num_sv); - EXTRANEOUS_DATA_CHECK(len, offset - saved_offset); } static void for_pr_gps_nav_msg_bits(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset) { - guint8 num_sv; - guint32 value; - guint32 saved_offset; - - saved_offset = offset; + guint32 saved_offset = offset; + const gint *fields[] = { + &hf_ansi_801_num_sv_p16, + &hf_ansi_801_part_num16, + &hf_ansi_801_total_parts16, + NULL + }; SHORT_DATA_CHECK(len, 2); - value = tvb_get_ntohs(tvb, offset); - num_sv = (value & 0xfc00) >> 10; - - proto_tree_add_item(tree, hf_ansi_801_num_sv_p16, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_part_num16, tvb, offset, 2, ENC_BIG_ENDIAN); - proto_tree_add_item(tree, hf_ansi_801_total_parts16, tvb, offset, 2, ENC_BIG_ENDIAN); + proto_tree_add_bitmask_list(tree, tvb, offset, 2, fields, ENC_BIG_ENDIAN); offset += 2; - proto_tree_add_text(tree, tvb, offset, (len - (offset - saved_offset)), - "%u SUBF_4_5_INCL ... Data records + Reserved", - num_sv); - EXTRANEOUS_DATA_CHECK(len, offset - saved_offset); } @@ -891,17 +877,20 @@ static void rev_req_gps_alm_correction(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset) { guint32 saved_offset; + guint8 oct; SHORT_DATA_CHECK(len, 2); saved_offset = offset; - proto_tree_add_text(tree, tvb, offset, 1, - "Time of almanac (in units of 4096 seconds)"); + oct = tvb_get_guint8(tvb, offset); + proto_tree_add_uint_format_value(tree, hf_ansi_801_time_of_almanac, tvb, offset, 1, oct, + "%d (in units of 4096 seconds)", oct); offset++; - proto_tree_add_text(tree, tvb, offset, 1, - "GPS week number (8 least significant bits)"); + oct = tvb_get_guint8(tvb, offset); + proto_tree_add_uint_format_value(tree, hf_ansi_801_gps_week_number, tvb, offset, 1, oct, + "%d (8 least significant bits)", oct); offset++; @@ -1020,8 +1009,8 @@ rev_pr_time_off_meas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint SHORT_DATA_CHECK(len, 6); - proto_tree_add_text(tree, tvb, offset, 3, - "TIME_REF_MS: The time of validity of the parameters reported in this response element."); + proto_tree_add_uint_format_value(tree, hf_ansi_801_time_ref_ms, tvb, offset, 3, tvb_get_ntoh24(tvb, offset), + "The time of validity of the parameters reported in this response element."); offset += 3; proto_tree_add_item(tree, hf_ansi_801_ref_pn, tvb, offset, 3, ENC_BIG_ENDIAN); @@ -2248,9 +2237,23 @@ proto_register_ansi_801(void) FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } }, + { &hf_ansi_801_time_ref_ms, + { "TIME_REF_MS", "ansi_801.time_ref_ms", + FT_UINT24, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_ansi_801_time_of_almanac, + { "Time of almanac", "ansi_801.time_of_almanac", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_ansi_801_gps_week_number, + { "GPS week number", "ansi_801.gps_week_number", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, }; - /* Setup protocol subtree array */ #define NUM_INDIVIDUAL_PARAMS 3 gint *ett[NUM_INDIVIDUAL_PARAMS+NUM_FOR_REQ_TYPE+NUM_FOR_RSP_TYPE+NUM_REV_REQ_TYPE+NUM_REV_RSP_TYPE]; diff --git a/epan/dissectors/packet-ansi_a.c b/epan/dissectors/packet-ansi_a.c index 2408e55341..881fdd4e52 100644 --- a/epan/dissectors/packet-ansi_a.c +++ b/epan/dissectors/packet-ansi_a.c @@ -1191,6 +1191,8 @@ static int hf_ansi_a_is2000_scr_socr_sr_id = -1; static int hf_ansi_a_is2000_scr_socr_rlp_info_incl = -1; static int hf_ansi_a_is2000_scr_socr_rlp_blob_len = -1; static int hf_ansi_a_is2000_scr_socr_rlp_blob_msb = -1; +static int hf_ansi_a_is2000_scr_socr_rlp_blob = -1; +static int hf_ansi_a_is2000_scr_socr_rlp_blob_lsb = -1; static int hf_ansi_a_is2000_scr_socr_fch_cc_incl = -1; static int hf_ansi_a_is2000_scr_socr_fch_frame_size_support_ind = -1; static int hf_ansi_a_is2000_scr_socr_for_fch_rc = -1; @@ -1317,6 +1319,17 @@ static int hf_ansi_a_bdtmf_trans_info_dtmf_off_len = -1; static int hf_ansi_a_bdtmf_trans_info_dtmf_on_len = -1; static int hf_ansi_a_bdtmf_chars_num_chars = -1; static int hf_ansi_a_bdtmf_chars_digits = -1; +static int hf_ansi_a_encryption_parameter_value = -1; +static int hf_ansi_a_layer3_info = -1; +static int hf_ansi_a_manufacturer_software_info = -1; +static int hf_ansi_a_circuit_bitmap = -1; +static int hf_ansi_a_extension_parameter_value = -1; +static int hf_ansi_a_msb_first_digit = -1; +static int hf_ansi_a_dcch_cc_incl = -1; +static int hf_ansi_a_for_sch_cc_incl = -1; +static int hf_ansi_a_rev_sch_cc_incl = -1; +static int hf_ansi_a_plcm42 = -1; + /* Initialize the subtree pointers */ static gint ett_bsmap = -1; @@ -1357,6 +1370,7 @@ static expert_field ei_ansi_a_miss_bsmap_msg_diss = EI_INIT; static expert_field ei_ansi_a_is2000_chan_id_pilot_pn = EI_INIT; static expert_field ei_ansi_a_unknown_dtap_msg = EI_INIT; static expert_field ei_ansi_a_unknown_bsmap_msg = EI_INIT; +static expert_field ei_ansi_a_undecoded = EI_INIT; static char a_bigbuf[1024]; static dissector_handle_t data_handle; @@ -2147,8 +2161,7 @@ elem_enc_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 o { SHORT_DATA_CHECK(len - (curr_offset - offset), oct); - proto_tree_add_text(subtree, tvb, curr_offset, oct, - "Encryption Parameter value"); + proto_tree_add_item(subtree, hf_ansi_a_encryption_parameter_value, tvb, curr_offset, oct, ENC_NA); curr_offset += oct; } @@ -3416,8 +3429,6 @@ elem_is2000_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui guint8 oct; guint8 num_chans; guint8 chan_num; - guint32 value; - guint32 pilot_pn; guint32 curr_offset; proto_tree *subtree; const gchar *str; @@ -3487,16 +3498,8 @@ elem_is2000_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui * * SEE THE SPEC BEFORE CHANGING */ - value = tvb_get_ntoh24(tvb, curr_offset); - pilot_pn = ((value & 0xff0000) >> 16) | ((value & 0x008000) >> 7); - proto_tree_add_expert(subtree, pinfo, &ei_ansi_a_is2000_chan_id_pilot_pn, tvb, curr_offset, 2); - other_decode_bitfield_value(a_bigbuf, value, 0xff8000, 24); - proto_tree_add_uint_format(subtree, hf_ansi_a_is2000_chan_id_chan_pilot_pn_code, tvb, curr_offset, 3, - pilot_pn, - "%s = Pilot PN Code: %u", - a_bigbuf, - pilot_pn); + proto_tree_add_item(subtree, hf_ansi_a_is2000_chan_id_chan_pilot_pn_code, tvb, curr_offset, 3, ENC_BIG_ENDIAN); /* * SEE THE SPEC BEFORE CHANGING * @@ -3682,8 +3685,7 @@ elem_l3_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset curr_offset = offset; - proto_tree_add_text(tree, tvb, curr_offset, len, - "Layer 3 Information"); + proto_tree_add_item(tree, hf_ansi_a_layer3_info, tvb, curr_offset, len, ENC_NA); /* * dissect the embedded DTAP message @@ -4516,8 +4518,7 @@ elem_sw_ver(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 off if (len > 3) { - proto_tree_add_text(tree, tvb, curr_offset, len - 3, - "Manufacturer/Carrier Software Information"); + proto_tree_add_item(tree, hf_ansi_a_manufacturer_software_info, tvb, curr_offset, len - 3, ENC_NA); curr_offset += len - 3; } @@ -4935,37 +4936,18 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 value |= (oct & 0xe0) >> 5; - other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8); - proto_tree_add_uint_format(subtree, hf_ansi_a_is2000_scr_socr_rlp_blob_len, tvb, curr_offset - 1, 1, - value, - "%s = RLP_BLOB_LEN (MSB): %u", - a_bigbuf, - value); - - other_decode_bitfield_value(a_bigbuf, oct, 0xe0, 8); - proto_tree_add_text(subtree, tvb, curr_offset, 1, - "%s = RLP_BLOB_LEN (LSB)", - a_bigbuf); - + proto_tree_add_item(subtree, hf_ansi_a_is2000_scr_socr_rlp_blob_len, tvb, curr_offset - 1, 2, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_ansi_a_is2000_scr_socr_rlp_blob_msb, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset += 1; if (value > 1) { - proto_tree_add_text(subtree, tvb, curr_offset, value - 1, - "RLP_BLOB"); - + proto_tree_add_item(subtree, hf_ansi_a_is2000_scr_socr_rlp_blob, tvb, curr_offset, value - 1, ENC_NA); curr_offset += value - 1; } - oct = tvb_get_guint8(tvb, curr_offset); - - other_decode_bitfield_value(a_bigbuf, oct, 0xe0, 8); - proto_tree_add_text(subtree, tvb, curr_offset, 1, - "%s = RLP_BLOB (LSB)", - a_bigbuf); - + proto_tree_add_item(subtree, hf_ansi_a_is2000_scr_socr_rlp_blob_lsb, tvb, curr_offset, 1, ENC_NA); proto_tree_add_item(subtree, hf_ansi_a_reserved_bits_8_1f, tvb, curr_offset, 1, ENC_BIG_ENDIAN); } else @@ -4993,38 +4975,22 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 value |= (oct & 0xf0) >> 4; - other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8); - proto_tree_add_uint_format(scr_subtree, hf_ansi_a_is2000_scr_socr_rev_fch_rc, tvb, curr_offset - 1, 1, - value, - "%s = REV_FCH_RC (MSB): Reverse Fundamental Channel Radio Configuration: %u", - a_bigbuf, - value); - - other_decode_bitfield_value(a_bigbuf, oct, 0xf0, 8); - proto_tree_add_text(scr_subtree, tvb, curr_offset, 1, - "%s = REV_FCH_RC (LSB)", - a_bigbuf); - + proto_tree_add_item(scr_subtree, hf_ansi_a_is2000_scr_socr_rev_fch_rc, tvb, curr_offset - 1, 2, ENC_BIG_ENDIAN); bit_mask = 0x08; bit_offset = 3; } else { - bit_mask = 0x40; bit_offset = 6; + bit_mask = 0x40; } - other_decode_bitfield_value(a_bigbuf, oct, bit_mask, 8); - proto_tree_add_text(scr_subtree, tvb, curr_offset, 1, - "%s = DCCH_CC_INCL: Channel configuration for the Dedicated Control Channel included indicator", - a_bigbuf); - + proto_tree_add_bits_item(scr_subtree, hf_ansi_a_dcch_cc_incl, tvb, (curr_offset*8)+bit_offset, 1, ENC_NA); if (oct & bit_mask) { /* can't be bothered to do the rest of the decode */ - proto_tree_add_text(scr_subtree, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), - "DCCH + ? + Reserved"); + proto_tree_add_expert_format(scr_subtree, pinfo, &ei_ansi_a_undecoded, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), "DCCH + ? + Reserved"); curr_offset += (is2000_portion_len - (curr_offset - saved_offset)); } @@ -5033,17 +4999,12 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 bit_mask >>= 1; bit_offset--; - other_decode_bitfield_value(a_bigbuf, oct, bit_mask, 8); - proto_tree_add_text(scr_subtree, tvb, curr_offset, 1, - "%s = FOR_SCH_CC_INCL: Channel configuration for the Dedicated Control Channel included indicator", - a_bigbuf); - + proto_tree_add_bits_item(scr_subtree, hf_ansi_a_for_sch_cc_incl, tvb, (curr_offset*8)+bit_offset, 1, ENC_NA); if (oct & bit_mask) { /* can't be bothered to do the rest of the decode */ - proto_tree_add_text(scr_subtree, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), - "FOR_SCH + ? + Reserved"); + proto_tree_add_expert_format(scr_subtree, pinfo, &ei_ansi_a_undecoded, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), "FOR_SCH + ? + Reserved"); curr_offset += (is2000_portion_len - (curr_offset - saved_offset)); } @@ -5052,31 +5013,19 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 bit_mask >>= 1; bit_offset--; - other_decode_bitfield_value(a_bigbuf, oct, bit_mask, 8); - proto_tree_add_text(scr_subtree, tvb, curr_offset, 1, - "%s = REV_SCH_CC_INCL: Channel configuration for the Dedicated Control Channel included indicator", - a_bigbuf); + proto_tree_add_bits_item(scr_subtree, hf_ansi_a_rev_sch_cc_incl, tvb, (curr_offset*8)+bit_offset, 1, ENC_NA); if (oct & bit_mask) { /* can't be bothered to do the rest of the decode */ - proto_tree_add_text(scr_subtree, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), - "REV_SCH + ? + Reserved"); + proto_tree_add_expert_format(scr_subtree, pinfo, &ei_ansi_a_undecoded, tvb, curr_offset, (is2000_portion_len - (curr_offset - saved_offset)), "REV_SCH + ? + Reserved"); curr_offset += (is2000_portion_len - (curr_offset - saved_offset)); } else { - bit_mask = (0xff << (8 - bit_offset)); - bit_mask >>= (8 - bit_offset); - - other_decode_bitfield_value(a_bigbuf, oct, bit_mask, 8); - proto_tree_add_uint_format(scr_subtree, hf_ansi_a_reserved_bits_8_generic, tvb, curr_offset, 1, - oct & bit_mask, - "%s = Reserved bit(s)", - a_bigbuf); - + proto_tree_add_bits_item(scr_subtree, hf_ansi_a_reserved_bits_8_generic, tvb, (curr_offset*8)+(8-bit_offset), bit_offset, ENC_NA); curr_offset += 1; } } @@ -5563,10 +5512,7 @@ elem_fwd_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g { oct = tvb_get_guint8(tvb, curr_offset); - other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8); - proto_tree_add_text(subtree, tvb, curr_offset, 1, - "%s = MSB of first digit", - a_bigbuf); + proto_tree_add_bits_item(subtree, hf_ansi_a_msb_first_digit, tvb, curr_offset*8, 1, ENC_NA); curr_offset++; @@ -5604,10 +5550,7 @@ elem_fwd_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g oct = (value & 0x00ff); - other_decode_bitfield_value(a_bigbuf, value, 0x001f, 16); - proto_tree_add_text(subtree, tvb, curr_offset, 2, - "%s = MSB of first digit", - a_bigbuf); + proto_tree_add_bits_item(subtree, hf_ansi_a_msb_first_digit, tvb, curr_offset*8, 5, ENC_NA); curr_offset += 2; @@ -5782,10 +5725,7 @@ elem_rev_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g { oct = tvb_get_guint8(tvb, curr_offset); - other_decode_bitfield_value(a_bigbuf, oct, 0x01, 8); - proto_tree_add_text(subtree, tvb, curr_offset, 1, - "%s = MSB of first digit", - a_bigbuf); + proto_tree_add_bits_item(subtree, hf_ansi_a_msb_first_digit, tvb, curr_offset*8, 1, ENC_NA); curr_offset++; @@ -5824,10 +5764,7 @@ elem_rev_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g oct = (value & 0x00ff); - other_decode_bitfield_value(a_bigbuf, value, 0x001f, 16); - proto_tree_add_text(subtree, tvb, curr_offset, 2, - "%s = MSB of first digit", - a_bigbuf); + proto_tree_add_bits_item(subtree, hf_ansi_a_msb_first_digit, tvb, curr_offset*8, 5, ENC_NA); curr_offset += 2; @@ -5927,11 +5864,7 @@ static const value_string ansi_a_ext_ho_dir_params_target_bs_values_incl_vals[] static guint8 elem_ext_ho_dir_params(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint len, ansi_a_shared_data_t *data_p _U_) { - guint8 oct; - guint32 value; - guint32 curr_offset; - - curr_offset = offset; + guint32 curr_offset = offset; proto_tree_add_item(tree, hf_ansi_a_ext_ho_dir_params_srch_win_a, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_ansi_a_ext_ho_dir_params_srch_win_n, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -5941,28 +5874,10 @@ elem_ext_ho_dir_params(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, NO_MORE_DATA_CHECK(len); proto_tree_add_item(tree, hf_ansi_a_ext_ho_dir_params_srch_win_r, tvb, curr_offset, 1, ENC_BIG_ENDIAN); - - oct = tvb_get_guint8(tvb, curr_offset); - value = tvb_get_guint8(tvb, curr_offset + 1); - - other_decode_bitfield_value(a_bigbuf, oct, 0x0f, 8); - proto_tree_add_uint_format(tree, hf_ansi_a_ext_ho_dir_params_t_add, tvb, curr_offset, 1, - (oct & 0x0f) << 2 | (value & 0xc0) >> 6, - "%s = Add Pilot Threshold (T_Add) (MSB): %u", - a_bigbuf, - (oct & 0x0f) << 2 | (value & 0xc0) >> 6); - + proto_tree_add_item(tree, hf_ansi_a_ext_ho_dir_params_t_add, tvb, curr_offset, 2, ENC_BIG_ENDIAN); curr_offset++; - oct = (guint8) value & 0xff; - - other_decode_bitfield_value(a_bigbuf, oct, 0xc0, 8); - proto_tree_add_text(tree, tvb, curr_offset, 1, - "%s = Add Pilot Threshold (T_Add) (LSB)", - a_bigbuf); - proto_tree_add_item(tree, hf_ansi_a_ext_ho_dir_params_t_drop, tvb, curr_offset, 1, ENC_BIG_ENDIAN); - curr_offset++; NO_MORE_DATA_CHECK(len); @@ -6636,8 +6551,7 @@ elem_cct_group(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 NO_MORE_DATA_CHECK(len); - proto_tree_add_text(tree, tvb, curr_offset, len - (curr_offset - offset), - "Circuit Bitmap"); + proto_tree_add_item(tree, hf_ansi_a_circuit_bitmap, tvb, curr_offset, len - (curr_offset - offset), ENC_NA); curr_offset += len - (curr_offset - offset); @@ -7001,7 +6915,7 @@ elem_a2p_bearer_format(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin { SHORT_DATA_CHECK(len - (curr_offset - offset), ext_len); - proto_tree_add_text(subtree, tvb, curr_offset, ext_len, "Extension Parameter value"); + proto_tree_add_item(subtree, hf_ansi_a_extension_parameter_value, tvb, curr_offset, ext_len, ENC_NA); curr_offset += ext_len; } @@ -7092,17 +7006,9 @@ elem_plcm_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 of oct, "%s", str); proto_tree_add_item(tree, hf_ansi_a_reserved_bits_8_0c, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_ansi_a_plcm42, tvb, curr_offset, 6, ENC_BIG_ENDIAN); - other_decode_bitfield_value(a_bigbuf, oct, 0x03, 8); - proto_tree_add_text(tree, tvb, curr_offset, 1, - "%s = PLCM_42 (MSB)", - a_bigbuf); - - curr_offset++; - - proto_tree_add_text(tree, tvb, curr_offset, 5, "PLCM_42"); - - curr_offset += 5; + curr_offset += 6; EXTRANEOUS_DATA_CHECK(len, curr_offset - offset); @@ -11714,7 +11620,7 @@ proto_register_ansi_a(void) }, { &hf_ansi_a_is2000_chan_id_chan_pilot_pn_code, { "Pilot PN Code", "ansi_a_bsmap.is2000_chan_id.chan.pilot_pn_code", - FT_UINT24, BASE_DEC, NULL, 0, + FT_UINT24, BASE_DEC, NULL, 0xff8000, NULL, HFILL } }, { &hf_ansi_a_is2000_chan_id_chan_power_combined, @@ -12127,8 +12033,8 @@ proto_register_ansi_a(void) NULL, HFILL } }, { &hf_ansi_a_is2000_scr_socr_rlp_blob_len, - { "RLP_BLOB_LEN (MSB)", "ansi_a_bsmap.is2000_scr.socr.rlp_blob_len", - FT_UINT8, BASE_DEC, NULL, 0x01, + { "RLP_BLOB_LEN", "ansi_a_bsmap.is2000_scr.socr.rlp_blob_len", + FT_UINT16, BASE_DEC, NULL, 0x01E0, NULL, HFILL } }, { &hf_ansi_a_is2000_scr_socr_rlp_blob_msb, @@ -12136,6 +12042,16 @@ proto_register_ansi_a(void) FT_UINT8, BASE_DEC, NULL, 0x1f, NULL, HFILL } }, + { &hf_ansi_a_is2000_scr_socr_rlp_blob, + { "RLP_BLOB", "ansi_a_bsmap.is2000_scr.socr.rlp_blob", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL } + }, + { &hf_ansi_a_is2000_scr_socr_rlp_blob_lsb, + { "RLP_BLOB (LSB)", "ansi_a_bsmap.is2000_scr.socr.rlp_blob_lsb", + FT_UINT8, BASE_DEC, NULL, 0xe0, + NULL, HFILL } + }, { &hf_ansi_a_is2000_scr_socr_fch_cc_incl, { "FCH_CC_INCL: Channel configuration for the Fundamental Channel included indicator", "ansi_a_bsmap.is2000_scr.socr.fch_cc_incl", FT_BOOLEAN, 8, TFS(&tfs_yes_no), 0x80, @@ -12152,8 +12068,8 @@ proto_register_ansi_a(void) NULL, HFILL } }, { &hf_ansi_a_is2000_scr_socr_rev_fch_rc, - { "REV_FCH_RC (MSB)", "ansi_a_bsmap.is2000_scr.socr.rev_fch_rc", - FT_UINT8, BASE_DEC, NULL, 0x01, + { "REV_FCH_RC", "ansi_a_bsmap.is2000_scr.socr.rev_fch_rc", + FT_UINT16, BASE_DEC, NULL, 0x01F0, NULL, HFILL } }, { &hf_ansi_a_is2000_nn_scr_num_fill_bits, @@ -12473,7 +12389,7 @@ proto_register_ansi_a(void) }, { &hf_ansi_a_ext_ho_dir_params_t_add, { "Add Pilot Threshold (T_Add)", "ansi_a_bsmap.ext_ho_dir_params.t_add", - FT_UINT8, BASE_DEC, NULL, 0, + FT_UINT16, BASE_DEC, NULL, 0x0fc0, NULL, HFILL } }, { &hf_ansi_a_ext_ho_dir_params_t_drop, @@ -12767,7 +12683,57 @@ proto_register_ansi_a(void) { "DTMF Digits", "ansi_a_bsmap.bdtmf_chars.digits", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL } - } + }, + { &hf_ansi_a_encryption_parameter_value, + { "Encryption Parameter value", "ansi_a_bsmap.encryption_parameter_value", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_layer3_info, + { "Layer 3 Information", "ansi_a_bsmap.layer3_info", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_manufacturer_software_info, + { "Manufacturer/Carrier Software Information", "ansi_a_bsmap.manufacturer_software_info", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_circuit_bitmap, + { "Circuit Bitmap", "ansi_a_bsmap.circuit_bitmap", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_extension_parameter_value, + { "Extension Parameter value", "ansi_a_bsmap.extension_parameter_value", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_msb_first_digit, + { "MSB of first digit", "ansi_a_bsmap.msb_first_digit", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_dcch_cc_incl, + { "DCCH_CC_INCL (Channel configuration for the Dedicated Control Channel included indicator)", "ansi_a_bsmap.dcch_cc_incl", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_for_sch_cc_incl, + { "FOR_SCH_CC_INCL (Channel configuration for the Dedicated Control Channel included indicator)", "ansi_a_bsmap.for_sch_cc_incl", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_rev_sch_cc_incl, + { "REV_SCH_CC_INCL (Channel configuration for the Dedicated Control Channel included indicator)", "ansi_a_bsmap.rev_sch_cc_incl", + FT_UINT8, BASE_HEX, NULL, 0, + NULL, HFILL } + }, + { &hf_ansi_a_plcm42, + { "PLCM_42", "ansi_a_bsmap.plcm42", + FT_BOOLEAN, 56, NULL, G_GUINT64_CONSTANT(0x3FFFFFFFFFF), + NULL, HFILL } + }, }; static ei_register_info ei[] = { @@ -12835,6 +12801,11 @@ proto_register_ansi_a(void) { "ansi_a.unknown_bsmap_msg", PI_PROTOCOL, PI_WARN, "BSMAP Message Unknown/Unsupported - try checking decoder variant preference or dissector bug/later version spec (report to wireshark.org)", EXPFILL } + }, + { &ei_ansi_a_undecoded, + { "ansi_a.undecoded", PI_UNDECODED, PI_WARN, + "Can't be bothered to do the rest of the decode", + EXPFILL } } }; |