aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sccp.c
diff options
context:
space:
mode:
authormorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2011-05-17 22:21:25 +0000
committermorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2011-05-17 22:21:25 +0000
commit866db0907fe80af3486e92c07f76a4f1a3295fb0 (patch)
tree722f149d9e5c39a670893b83851da1e5f2fb0784 /epan/dissectors/packet-sccp.c
parentd617ec87eec19efe7f2a854c437da882348d459e (diff)
Always add the parameter length field to the tree; only make it visible
if the preference is set. Add %d to the "not found" string in val_to_str() calls. Upgrade the "ITU address format seen in ANSI" expert info from NOTE to WARN. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@37218 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-sccp.c')
-rw-r--r--epan/dissectors/packet-sccp.c35
1 files changed, 22 insertions, 13 deletions
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index f358853762..0f23459206 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -591,6 +591,7 @@ static int hf_sccp_variable_pointer1 = -1;
static int hf_sccp_variable_pointer2 = -1;
static int hf_sccp_variable_pointer3 = -1;
static int hf_sccp_optional_pointer = -1;
+static int hf_sccp_param_length = -1;
static int hf_sccp_ssn = -1;
static int hf_sccp_gt_digits = -1;
@@ -1088,12 +1089,12 @@ dissect_sccp_gt_address_information(tvbuff_t *tvb, packet_info *pinfo,
even_signal >>= GT_EVEN_SIGNAL_SHIFT;
g_strlcat(gt_digits, val_to_str(odd_signal, sccp_address_signal_values,
- "Unknown"), GT_MAX_SIGNALS+1);
+ "Unknown: %d"), GT_MAX_SIGNALS+1);
/* If the last signal is NOT filler */
if (offset != (length - 1) || even_length == TRUE)
g_strlcat(gt_digits, val_to_str(even_signal, sccp_address_signal_values,
- "Unknown"), GT_MAX_SIGNALS+1);
+ "Unknown: %d"), GT_MAX_SIGNALS+1);
offset += GT_SIGNAL_LENGTH;
}
@@ -1310,7 +1311,7 @@ dissect_sccp_called_calling_param(tvbuff_t *tvb, proto_tree *tree, packet_info *
: hf_sccp_calling_national_indicator,
tvb, 0, ADDRESS_INDICATOR_LENGTH, national);
if (national == 0)
- expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_NOTE, "Address is coded to "
+ expert_add_info_format(pinfo, expert_item, PI_MALFORMED, PI_WARN, "Address is coded to "
"international standards. This doesn't normally happen in ANSI "
"networks.");
}
@@ -1582,7 +1583,7 @@ dissect_sccp_sequencing_segmenting_param(tvbuff_t *tvb, proto_tree *tree, guint
param_item = proto_tree_add_text(tree, tvb, 0, length, "%s",
val_to_str(PARAMETER_SEQUENCING_SEGMENTING,
- sccp_parameter_values, "Unknown"));
+ sccp_parameter_values, "Unknown: %d"));
param_tree = proto_item_add_subtree(param_item,
ett_sccp_sequencing_segmenting);
@@ -1814,7 +1815,7 @@ dissect_sccp_segmentation_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t
param_item = proto_tree_add_text(tree, tvb, 0, length, "%s",
val_to_str(PARAMETER_SEGMENTATION,
- sccp_parameter_values, "Unknown"));
+ sccp_parameter_values, "Unknown: %d"));
param_tree = proto_item_add_subtree(param_item, ett_sccp_segmentation);
proto_tree_add_item(param_tree, hf_sccp_segmentation_first, tvb, 0, 1, ENC_NA);
@@ -2063,6 +2064,7 @@ dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
{
guint16 parameter_length;
guint8 length_length;
+ proto_item *pi;
if (parameter_type != PARAMETER_LONG_DATA) {
parameter_length = tvb_get_guint8(tvb, offset);
@@ -2073,14 +2075,17 @@ dissect_sccp_variable_parameter(tvbuff_t *tvb, packet_info *pinfo,
length_length = PARAMETER_LONG_DATA_LENGTH_LENGTH;
}
- if (sccp_tree && sccp_show_length) {
- proto_tree_add_text(sccp_tree, tvb, offset, length_length,
- "%s length: %d",
- val_to_str(parameter_type, sccp_parameter_values,
- "Unknown"),
- parameter_length);
+ pi = proto_tree_add_uint_format(sccp_tree, hf_sccp_param_length, tvb, offset,
+ length_length, parameter_length, "%s length: %d",
+ val_to_str(parameter_type, sccp_parameter_values,
+ "Unknown: %d"),
+ parameter_length);
+ if (!sccp_show_length) {
+ /* The user doesn't want to see it... */
+ PROTO_ITEM_SET_HIDDEN(pi);
}
+
offset += length_length;
dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree, parameter_type, offset,
@@ -2178,7 +2183,7 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
* put that info there should call col_set_fence() to protect it.
*/
col_add_fstr(pinfo->cinfo, COL_INFO, "%s ",
- val_to_str(message_type, sccp_message_type_acro_values, "Unknown"));
+ val_to_str(message_type, sccp_message_type_acro_values, "Unknown: %d"));
};
if (sccp_tree) {
@@ -2752,7 +2757,7 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
pi = proto_tree_add_uint(pt, hf_sccp_assoc_msg, tvb, 0, 0, m->framenum);
if (assoc->payload != SCCP_PLOAD_NONE)
- proto_item_append_text(pi," %s", val_to_str(assoc->payload, assoc_protos, "Unknown"));
+ proto_item_append_text(pi," %s", val_to_str(assoc->payload, assoc_protos, "Unknown: %d"));
if (m->data.co.label)
proto_item_append_text(pi," %s", m->data.co.label);
@@ -2950,6 +2955,10 @@ proto_register_sccp(void)
{ "Pointer to Optional parameter", "sccp.optional_pointer",
FT_UINT16, BASE_DEC, NULL, 0x0,
NULL, HFILL}},
+ { &hf_sccp_param_length,
+ { "Variable parameter length", "sccp.parameter_length",
+ FT_UINT16, BASE_DEC, NULL, 0x0,
+ NULL, HFILL}},
{ &hf_sccp_ssn,
{ "Called or Calling SubSystem Number", "sccp.ssn",
FT_UINT8, BASE_DEC, VALS(sccp_ssn_values), 0x0,