aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-08-31 00:20:49 -0400
committerAnders Broman <a.broman58@gmail.com>2015-09-01 04:10:06 +0000
commit7298a3168742ca3298ad5715f66e09f386755788 (patch)
tree780747d92b01a3f9a430e6cb4b56b9b90eb06445 /epan
parent54d2ff1c3e74e57a59a57b9b3fdeb50e64cceb0f (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')
-rw-r--r--epan/dissectors/packet-ansi_637.c148
-rw-r--r--epan/dissectors/packet-ansi_801.c87
-rw-r--r--epan/dissectors/packet-ansi_a.c253
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 }
}
};