aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-sctp.c
diff options
context:
space:
mode:
authorMichael Tüxen <tuexen@fh-muenster.de>2013-09-04 21:07:09 +0000
committerMichael Tüxen <tuexen@fh-muenster.de>2013-09-04 21:07:09 +0000
commit90ac3f129fc51e2a2a12ae3f42fd1009e3735f1b (patch)
tree804dcd1d50b535c23d8f0e604274d985e6c32473 /epan/dissectors/packet-sctp.c
parent48089ba4ca6fa5e02b83cf237ad4acf32cf3e4e9 (diff)
Improve the display of AUTH related parameters.
Only use IANA registered values for HMAC ids. svn path=/trunk/; revision=51755
Diffstat (limited to 'epan/dissectors/packet-sctp.c')
-rw-r--r--epan/dissectors/packet-sctp.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c
index 4668b3a175..b71852326a 100644
--- a/epan/dissectors/packet-sctp.c
+++ b/epan/dissectors/packet-sctp.c
@@ -1231,14 +1231,20 @@ dissect_random_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree)
}
static void
-dissect_chunks_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree)
+dissect_chunks_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 number_of_chunks;
guint16 chunk_number, offset;
+ proto_item_append_text(parameter_item, " (Chunk types to be authenticated: ");
number_of_chunks = tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH;
- for(chunk_number = 0, offset = PARAMETER_VALUE_OFFSET; chunk_number < number_of_chunks; chunk_number++, offset += CHUNK_TYPE_LENGTH)
+ for(chunk_number = 0, offset = PARAMETER_VALUE_OFFSET; chunk_number < number_of_chunks; chunk_number++, offset += CHUNK_TYPE_LENGTH) {
proto_tree_add_item(parameter_tree, hf_chunks_to_auth, parameter_tvb, offset, CHUNK_TYPE_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, "%s", val_to_str_const(tvb_get_guint8(parameter_tvb, offset), chunk_type_values, "Unknown"));
+ if (chunk_number < (number_of_chunks - 1))
+ proto_item_append_text(parameter_item, ", ");
+ }
+ proto_item_append_text(parameter_item, ")");
}
static const value_string hmac_id_values[] = {
@@ -1246,22 +1252,25 @@ static const value_string hmac_id_values[] = {
{ 0x0001, "SHA-1" },
{ 0x0002, "Reserved" },
{ 0x0003, "SHA-256" },
- { 0x8001, "SHA_224" },
- { 0x8002, "SHA_384" },
- { 0x8003, "SHA_512" },
{ 0, NULL } };
#define HMAC_ID_LENGTH 2
static void
-dissect_hmac_algo_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree)
+dissect_hmac_algo_parameter(tvbuff_t *parameter_tvb, proto_tree *parameter_tree, proto_item *parameter_item)
{
guint16 number_of_ids;
guint16 id_number, offset;
+ proto_item_append_text(parameter_item, " (Supported HMACs: ");
number_of_ids = (tvb_get_ntohs(parameter_tvb, PARAMETER_LENGTH_OFFSET) - PARAMETER_HEADER_LENGTH) / HMAC_ID_LENGTH;
- for(id_number = 0, offset = PARAMETER_VALUE_OFFSET; id_number < number_of_ids; id_number++, offset += HMAC_ID_LENGTH)
+ for(id_number = 0, offset = PARAMETER_VALUE_OFFSET; id_number < number_of_ids; id_number++, offset += HMAC_ID_LENGTH) {
proto_tree_add_item(parameter_tree, hf_hmac_id, parameter_tvb, offset, HMAC_ID_LENGTH, ENC_BIG_ENDIAN);
+ proto_item_append_text(parameter_item, "%s", val_to_str_const(tvb_get_ntohs(parameter_tvb, offset), hmac_id_values, "Unknown"));
+ if (id_number < (number_of_ids - 1))
+ proto_item_append_text(parameter_item, ", ");
+ }
+ proto_item_append_text(parameter_item, ")");
}
static void
@@ -1275,9 +1284,8 @@ dissect_supported_extensions_parameter(tvbuff_t *parameter_tvb, proto_tree *para
for(type_number = 0, offset = PARAMETER_VALUE_OFFSET; type_number < number_of_types; type_number++, offset += CHUNK_TYPE_LENGTH) {
proto_tree_add_item(parameter_tree, hf_supported_chunk_type, parameter_tvb, offset, CHUNK_TYPE_LENGTH, ENC_BIG_ENDIAN);
proto_item_append_text(parameter_item, "%s", val_to_str_const(tvb_get_guint8(parameter_tvb, offset), chunk_type_values, "Unknown"));
- if (type_number < (number_of_types-1))
+ if (type_number < (number_of_types - 1))
proto_item_append_text(parameter_item, ", ");
-
}
proto_item_append_text(parameter_item, ")");
}
@@ -1555,10 +1563,10 @@ dissect_parameter(tvbuff_t *parameter_tvb, packet_info *pinfo,
dissect_random_parameter(parameter_tvb, parameter_tree);
break;
case CHUNKS_PARAMETER_ID:
- dissect_chunks_parameter(parameter_tvb, parameter_tree);
+ dissect_chunks_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
case HMAC_ALGO_PARAMETER_ID:
- dissect_hmac_algo_parameter(parameter_tvb, parameter_tree);
+ dissect_hmac_algo_parameter(parameter_tvb, parameter_tree, parameter_item);
break;
case SUPPORTED_EXTENSIONS_PARAMETER_ID:
dissect_supported_extensions_parameter(parameter_tvb, parameter_tree, parameter_item);