summaryrefslogtreecommitdiff
path: root/packet-m2tp.c
diff options
context:
space:
mode:
Diffstat (limited to 'packet-m2tp.c')
-rw-r--r--packet-m2tp.c110
1 files changed, 55 insertions, 55 deletions
diff --git a/packet-m2tp.c b/packet-m2tp.c
index 2f86b87172..0052394449 100644
--- a/packet-m2tp.c
+++ b/packet-m2tp.c
@@ -5,7 +5,7 @@
*
* Copyright 2001, Heinz Prantner <heinz.prantner[AT]radisys.com>
*
- * $Id: packet-m2tp.c,v 1.3 2002/01/24 09:20:49 guy Exp $
+ * $Id: packet-m2tp.c,v 1.4 2002/08/28 21:00:20 jmayer Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -13,17 +13,17 @@
*
* Copied from packet-m3ua.c
* Thanks to Michael Tuexen for his valuable improvements
- *
+ *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
@@ -152,7 +152,7 @@ static const value_string m2tp_message_class_type_acro_values[] = {
#define M2TP_USER_OFFSET PARAMETER_VALUE_OFFSET
#define PROTOCOL_DATA_OFFSET PARAMETER_VALUE_OFFSET
-
+
#define MASTER_SLAVE_LENGTH 4
#define MASTER_SLAVE_OFFSET PARAMETER_VALUE_OFFSET
@@ -163,7 +163,7 @@ static const value_string m2tp_message_class_type_acro_values[] = {
#define ERROR_CODE_LENGTH 4
#define ERROR_CODE_OFFSET PARAMETER_VALUE_OFFSET
-
+
#define INFO_STRING_OFFSET PARAMETER_VALUE_OFFSET
#define BSN_OFFSET PARAMETER_VALUE_OFFSET
@@ -186,7 +186,7 @@ static const value_string m2tp_mode_values[] = {
{ M2TP_MODE_MASTER, "Master" },
{ M2TP_MODE_SLAVE, "Slave" },
{ 0, NULL}};
-
+
#define M2TP_ERROR_CODE_INVALID_VERSION 1
#define M2TP_ERROR_CODE_INVALID_INTERFACE_IDENTIFIER 2
#define M2TP_ERROR_CODE_INVALID_ADAPTATION_LAYER_IDENTIFIER 3
@@ -217,7 +217,7 @@ static const value_string m2tp_reason_code_values[] = {
{ MTP_RELEASE_REASON_CODE, "MTP Release" },
{ 0, NULL } };
-
+
/* Initialize the protocol and registered fields */
static int proto_m2tp = -1;
static int hf_m2tp_version = -1;
@@ -245,7 +245,7 @@ static gint ett_m2tp_parameter = -1;
static dissector_handle_t mtp2_handle;
static int mtp2_proto_id;
-static guint
+static guint
nr_of_padding_bytes (guint length)
{
guint remainder;
@@ -264,7 +264,7 @@ dissect_m2tp_common_header(tvbuff_t *common_header_tvb, packet_info *pinfo, prot
{
guint8 version, reserved, message_class, message_type;
guint32 message_length;
-
+
/* Extract the common header */
version = tvb_get_guint8(common_header_tvb, VERSION_OFFSET);
reserved = tvb_get_guint8(common_header_tvb, RESERVED_OFFSET);
@@ -283,7 +283,7 @@ dissect_m2tp_common_header(tvbuff_t *common_header_tvb, packet_info *pinfo, prot
proto_tree_add_uint(m2tp_tree, hf_m2tp_version, common_header_tvb, VERSION_OFFSET, VERSION_LENGTH, version);
proto_tree_add_uint(m2tp_tree, hf_m2tp_reserved, common_header_tvb, RESERVED_OFFSET, RESERVED_LENGTH, reserved);
proto_tree_add_uint(m2tp_tree, hf_m2tp_message_class, common_header_tvb, MESSAGE_CLASS_OFFSET, MESSAGE_CLASS_LENGTH, message_class);
- proto_tree_add_uint_format(m2tp_tree, hf_m2tp_message_type,
+ proto_tree_add_uint_format(m2tp_tree, hf_m2tp_message_type,
common_header_tvb, MESSAGE_TYPE_OFFSET, MESSAGE_TYPE_LENGTH,
message_type, "Message type: %u (%s)",
message_type, val_to_str(message_class * 256 + message_type, m2tp_message_class_type_values, "reserved"));
@@ -351,9 +351,9 @@ static void
dissect_m2tp_diagnostic_information_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 length, diagnostic_info_length;
-
+
if (parameter_tree) {
- length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
+ length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
diagnostic_info_length = length - PARAMETER_HEADER_LENGTH;
proto_tree_add_bytes(parameter_tree, hf_m2tp_diagnostic_info, parameter_tvb, PARAMETER_VALUE_OFFSET, diagnostic_info_length,
tvb_get_ptr(parameter_tvb, PARAMETER_VALUE_OFFSET, diagnostic_info_length));
@@ -366,7 +366,7 @@ static void
dissect_m2tp_heartbeat_data_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 length, heartbeat_data_length;
-
+
if (parameter_tree) {
length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
heartbeat_data_length = length - PARAMETER_HEADER_LENGTH;
@@ -432,16 +432,16 @@ static void
dissect_m2tp_unknown_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 tag, length, parameter_value_length;
-
+
if (parameter_tree) {
tag = tvb_get_ntohs(parameter_tvb, PARAMETER_TAG_OFFSET);
length = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET);
-
+
parameter_value_length = length - PARAMETER_HEADER_LENGTH;
- proto_tree_add_bytes(parameter_tree, hf_m2tp_parameter_value,
+ proto_tree_add_bytes(parameter_tree, hf_m2tp_parameter_value,
parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length,
tvb_get_ptr(parameter_tvb, PARAMETER_VALUE_OFFSET, parameter_value_length));
-
+
proto_item_set_text(parameter_item, "Parameter with tag %u and %u byte%s value", tag, parameter_value_length, plurality(parameter_value_length, "", "s"));
}
}
@@ -466,12 +466,12 @@ dissect_m2tp_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *
/* create proto_tree stuff */
parameter_item = proto_tree_add_text(m2tp_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, total_length, "Incomplete parameter");
parameter_tree = proto_item_add_subtree(parameter_item, ett_m2tp_parameter);
-
+
/* add tag and length to the m2tp tree */
proto_tree_add_uint(parameter_tree, hf_m2tp_parameter_tag, parameter_tvb, PARAMETER_TAG_OFFSET, PARAMETER_TAG_LENGTH, tag);
proto_tree_add_uint(parameter_tree, hf_m2tp_parameter_length, parameter_tvb, PARAMETER_LENGTH_OFFSET, PARAMETER_LENGTH_LENGTH, length);
}
-
+
switch(tag) {
case INTERFACE_IDENTIFIER_PARAMETER_TAG:
dissect_m2tp_interface_identifier_parameter(parameter_tvb, parameter_tree, parameter_item);
@@ -506,7 +506,7 @@ dissect_m2tp_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo, proto_tree *
};
if ((parameter_tree) && (padding_length > 0))
- proto_tree_add_bytes(parameter_tree, hf_m2tp_parameter_padding,
+ proto_tree_add_bytes(parameter_tree, hf_m2tp_parameter_padding,
parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length,
tvb_get_ptr(parameter_tvb, PARAMETER_HEADER_OFFSET + length, padding_length));
}
@@ -524,7 +524,7 @@ dissect_m2tp_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_item *m2tp
common_header_tvb = tvb_new_subset(message_tvb, offset, COMMON_HEADER_LENGTH, COMMON_HEADER_LENGTH);
dissect_m2tp_common_header(common_header_tvb, pinfo, m2tp_tree);
offset += COMMON_HEADER_LENGTH;
-
+
/* extract zero or more parameters and process them individually */
while(tvb_reported_length_remaining(message_tvb, offset)) {
length = tvb_get_ntohs(message_tvb, offset + PARAMETER_LENGTH_OFFSET);
@@ -532,7 +532,7 @@ dissect_m2tp_message(tvbuff_t *message_tvb, packet_info *pinfo, proto_item *m2tp
total_length = length + padding_length;
/* create a tvb for the parameter including the padding bytes */
parameter_tvb = tvb_new_subset(message_tvb, offset, total_length, total_length);
- dissect_m2tp_parameter(parameter_tvb, pinfo, m2tp_tree, m2tp_item, tree);
+ dissect_m2tp_parameter(parameter_tvb, pinfo, m2tp_tree, m2tp_item, tree);
/* get rid of the handled parameter */
offset += total_length;
}
@@ -546,9 +546,9 @@ dissect_m2tp(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *m2tp_tree;
/* make entry in the Protocol column on summary display */
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
+ if (check_col(pinfo->cinfo, COL_PROTOCOL))
col_set_str(pinfo->cinfo, COL_PROTOCOL, "M2TP");
-
+
/* In the interest of speed, if "tree" is NULL, don't do any work not
necessary to generate protocol tree items. */
if (tree) {
@@ -566,103 +566,103 @@ dissect_m2tp(tvbuff_t *message_tvb, packet_info *pinfo, proto_tree *tree)
/* Register the protocol with Ethereal */
void
proto_register_m2tp(void)
-{
+{
/* Setup list of header fields */
static hf_register_info hf[] = {
{ &hf_m2tp_version,
{ "Version", "m2tp.version",
- FT_UINT8, BASE_DEC, VALS(m2tp_protocol_version_values), 0x0,
+ FT_UINT8, BASE_DEC, VALS(m2tp_protocol_version_values), 0x0,
"", HFILL}
},
{ &hf_m2tp_reserved,
{ "Reserved", "m2tp.reserved",
- FT_UINT8, BASE_HEX, NULL, 0x0,
+ FT_UINT8, BASE_HEX, NULL, 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_message_class,
{ "Message class", "m2tp.message_class",
- FT_UINT8, BASE_DEC, VALS(m2tp_message_class_values), 0x0,
+ FT_UINT8, BASE_DEC, VALS(m2tp_message_class_values), 0x0,
"", HFILL}
},
{ &hf_m2tp_message_type,
{ "Message Type", "m2tp.message_type",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, NULL, 0x0,
"", HFILL}
},
{ &hf_m2tp_message_length,
{ "Message length", "m2tp.message_length",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_parameter_tag,
{ "Parameter Tag", "m2tp.parameter_tag",
- FT_UINT16, BASE_DEC, VALS(m2tp_parameter_tag_values), 0x0,
+ FT_UINT16, BASE_DEC, VALS(m2tp_parameter_tag_values), 0x0,
"", HFILL}
},
{ &hf_m2tp_parameter_length,
{ "Parameter length", "m2tp.parameter_length",
- FT_UINT16, BASE_DEC, NULL, 0x0,
+ FT_UINT16, BASE_DEC, NULL, 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_parameter_value,
{ "Parameter Value", "m2tp.parameter_value",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
"", HFILL }
},
{ &hf_m2tp_parameter_padding,
{ "Padding", "m2tp.parameter_padding",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
"", HFILL }
- },
+ },
{ &hf_m2tp_interface_identifier,
{ "Interface Identifier", "m2tp.interface_identifier",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_user,
{ "M2tp User Identifier", "m2tp.user_identifier",
- FT_UINT32, BASE_DEC, VALS(m2tp_user_identifier_values), 0x0,
+ FT_UINT32, BASE_DEC, VALS(m2tp_user_identifier_values), 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_master_slave,
{ "Master Slave Indicator", "m2tp.master_slave",
- FT_UINT32, BASE_DEC, VALS(m2tp_mode_values), 0x0,
+ FT_UINT32, BASE_DEC, VALS(m2tp_mode_values), 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_info_string,
{ "Info string", "m2tp.info_string",
- FT_STRING, BASE_DEC, NULL, 0x0,
+ FT_STRING, BASE_DEC, NULL, 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_diagnostic_info,
{ "Diagnostic information", "m2tp.diagnostic_info",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
"", HFILL }
},
{ &hf_m2tp_heartbeat_data,
{ "Heartbeat data", "m2tp.heartbeat_data",
- FT_BYTES, BASE_NONE, NULL, 0x0,
+ FT_BYTES, BASE_NONE, NULL, 0x0,
"", HFILL }
},
{ &hf_m2tp_error_code,
{ "Error code", "m2tp.error_code",
- FT_UINT32, BASE_DEC, VALS(m2tp_error_code_values), 0x0,
+ FT_UINT32, BASE_DEC, VALS(m2tp_error_code_values), 0x0,
"", HFILL}
- },
+ },
{ &hf_m2tp_reason,
{ "Reason", "m2tp.reason",
- FT_UINT32, BASE_DEC, NULL, 0x0,
+ FT_UINT32, BASE_DEC, NULL, 0x0,
"", HFILL}
- },
+ },
};
-
+
/* Setup protocol subtree array */
static gint *ett[] = {
&ett_m2tp,
&ett_m2tp_parameter,
};
-
+
/* Register the protocol name and description */
proto_m2tp = proto_register_protocol("MTP 2 Transparent Proxy", "M2TP", "m2tp");