aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sccp.c
diff options
context:
space:
mode:
authormorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2009-12-14 20:08:11 +0000
committermorriss <morriss@f5534014-38df-0310-8fa8-9805f1628bb7>2009-12-14 20:08:11 +0000
commit720fc7928605aa31ed8f8c1a04a29e4280aef3bf (patch)
tree9176eba8c7de13b47049a64f773f701b94e9685e /epan/dissectors/packet-sccp.c
parent8d6a95ba25bc869de802a8c5b1c8b030ae35620d (diff)
Add support for LUDT/LUDTS in ANSI (ANSI added them in 2000/2001).
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@31268 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-sccp.c')
-rw-r--r--epan/dissectors/packet-sccp.c117
1 files changed, 53 insertions, 64 deletions
diff --git a/epan/dissectors/packet-sccp.c b/epan/dissectors/packet-sccp.c
index 6c4592626a..3991bee473 100644
--- a/epan/dissectors/packet-sccp.c
+++ b/epan/dissectors/packet-sccp.c
@@ -2,7 +2,7 @@
* Routines for Signalling Connection Control Part (SCCP) dissection
*
* It is hopefully compliant to:
- * ANSI T1.112.3-1996
+ * ANSI T1.112.3-2001
* ITU-T Q.713 7/1996
* YDN 038-1997 (Chinese ITU variant)
* JT-Q713 and NTT-Q713 (Japan)
@@ -91,8 +91,8 @@ static const value_string sccp_message_type_values[] = {
{ SCCP_MSG_TYPE_IT, "Inactivity Timer" },
{ SCCP_MSG_TYPE_XUDT, "Extended Unitdata" },
{ SCCP_MSG_TYPE_XUDTS, "Extended Unitdata Service" },
- { SCCP_MSG_TYPE_LUDT, "Long Unitdata (ITU)" },
- { SCCP_MSG_TYPE_LUDTS, "Long Unitdata Service (ITU)" },
+ { SCCP_MSG_TYPE_LUDT, "Long Unitdata" },
+ { SCCP_MSG_TYPE_LUDTS, "Long Unitdata Service" },
{ 0, NULL } };
/* Same as above but in acronym form (for the Info column) */
@@ -141,7 +141,7 @@ const value_string sccp_message_type_acro_values[] = {
#define PARAMETER_DATA 0x0f
#define PARAMETER_SEGMENTATION 0x10
#define PARAMETER_HOP_COUNTER 0x11
-/* The below 2 are ITU only */
+/* Importance is ITU only */
#define PARAMETER_IMPORTANCE 0x12
#define PARAMETER_LONG_DATA 0x13
/* ISNI is ANSI only */
@@ -167,7 +167,7 @@ static const value_string sccp_parameter_values[] = {
{ PARAMETER_SEGMENTATION, "Segmentation" },
{ PARAMETER_HOP_COUNTER, "Hop Counter" },
{ PARAMETER_IMPORTANCE, "Importance (ITU)" },
- { PARAMETER_LONG_DATA, "Long Data (ITU)" },
+ { PARAMETER_LONG_DATA, "Long Data" },
{ PARAMETER_ISNI, "Intermediate Signaling Network Identification (ANSI)" },
{ 0, NULL } };
@@ -2021,11 +2021,7 @@ dissect_sccp_parameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
break;
case PARAMETER_LONG_DATA:
- if (decode_mtp3_standard != ANSI_STANDARD)
- dissect_sccp_data_param(parameter_tvb, pinfo, tree);
- else
- dissect_sccp_unknown_param(parameter_tvb, sccp_tree, parameter_type,
- parameter_length);
+ dissect_sccp_data_param(parameter_tvb, pinfo, tree);
break;
case PARAMETER_ISNI:
@@ -2673,63 +2669,56 @@ dissect_sccp_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *sccp_tree,
break;
case SCCP_MSG_TYPE_LUDT:
- pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
- if (decode_mtp3_standard != ANSI_STANDARD)
- {
- offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CLASS, offset,
- PROTOCOL_CLASS_LENGTH);
- offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
-
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
- OPTIONAL_POINTER(POINTER_LENGTH_LONG)
-
- assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
-
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_LONG_DATA, variable_pointer3);
- } else
- dissect_sccp_unknown_message(tvb, sccp_tree);
+ pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
+
+ offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_CLASS, offset,
+ PROTOCOL_CLASS_LENGTH);
+ offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
+
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
+ OPTIONAL_POINTER(POINTER_LENGTH_LONG)
+
+ assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
+
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_LONG_DATA, variable_pointer3);
break;
case SCCP_MSG_TYPE_LUDTS:
- pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
- if (decode_mtp3_standard != ANSI_STANDARD)
- {
- offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_RETURN_CAUSE, offset,
- RETURN_CAUSE_LENGTH);
- offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_HOP_COUNTER, offset,
- HOP_COUNTER_LENGTH);
-
- VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
- VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
- OPTIONAL_POINTER(POINTER_LENGTH_LONG)
-
- assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
-
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLED_PARTY_ADDRESS,
- variable_pointer1);
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_CALLING_PARTY_ADDRESS,
- variable_pointer2);
- dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
- PARAMETER_LONG_DATA, variable_pointer3);
- } else
- dissect_sccp_unknown_message(tvb, sccp_tree);
+ pinfo->sccp_info = sccp_msg = new_ud_msg(pinfo,message_type);
+ offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_RETURN_CAUSE, offset,
+ RETURN_CAUSE_LENGTH);
+ offset += dissect_sccp_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_HOP_COUNTER, offset,
+ HOP_COUNTER_LENGTH);
+
+ VARIABLE_POINTER(variable_pointer1, hf_sccp_variable_pointer1, POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer2, hf_sccp_variable_pointer2, POINTER_LENGTH_LONG)
+ VARIABLE_POINTER(variable_pointer3, hf_sccp_variable_pointer3, POINTER_LENGTH_LONG)
+ OPTIONAL_POINTER(POINTER_LENGTH_LONG)
+
+ assoc = get_sccp_assoc(pinfo, msg_offset, slr, dlr, message_type);
+
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_CALLED_PARTY_ADDRESS,
+ variable_pointer1);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_CALLING_PARTY_ADDRESS,
+ variable_pointer2);
+ dissect_sccp_variable_parameter(tvb, pinfo, sccp_tree, tree,
+ PARAMETER_LONG_DATA, variable_pointer3);
break;
default: