Ethereal-users: Re: [Ethereal-users] problems with decode of ACF and infoRequestResponse
http://www.ethereal.com/lists/ethereal-users/200311/msg00006.html
Michael Oliveras wrote:
<I noticed an error decoding alternate endpoints from a vocaltec GK. <The decode is correct using ethereal-0.9.11 with the h323 plugin. <The problem seems to start with the email ID listed in the
<alternate endpoint.
<
<The infoRequestResponse message is decoded correctly, however the
<type of packet in the top ethereal window is displayed as:
<Source port: 1717 Destination port: h323gatestatCS: empty RAS:
infoRequestResponse.
Hi,
Yes there is a fault in decoding of EndPoint sequence. There should be a sequence of AliasAddress-es.
I have made a patch that seems to solve that problem and also avoids that a pdu_item results in writing to the Info column.
There are still some things that are not decoded (tokens/cryptotokens).
--- packet-h225.c 2003-10-31 15:44:23.000000000 +0100
+++ packet-h225.c_martin 2003-11-09 11:10:04.000000000 +0100
@@ -523,6 +523,7 @@
static int hf_h225_nonStandard = -1;
static int hf_h225_nonStandardReason = -1;
static int hf_h225_nonStandardAddress = -1;
+static int hf_h225_aliasAddress_sequence = -1;
/*aaa*/
static gint ett_h225 = -1;
@@ -788,6 +789,7 @@
static gint ett_h225_H221NonStandard = -1;
static gint ett_h225_NonStandardIdentifier = -1;
static gint ett_h225_NonStandardParameter = -1;
+static gint ett_h225_aliasAddress_sequence = -1;
/*bbb*/
/* Subdissector tables */
@@ -5495,6 +5497,14 @@
return offset;
}
+
+static int
+dissect_h225_aliasAddress_sequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+ offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_aliasAddress_sequence, ett_h225_aliasAddress_sequence, dissect_h225_AliasAddress);
+ return offset;
+}
+
static int
dissect_h225_rasAddress_sequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
@@ -5514,7 +5524,7 @@
{ "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
dissect_h225_nonStandardData },
{ "aliasAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
- dissect_h225_AliasAddress },
+ dissect_h225_aliasAddress_sequence },
{ "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
dissect_h225_callSignalAddress },
{ "rasAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
@@ -8096,7 +8106,13 @@
static int
dissect_h225_pdu_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
+ gboolean save_info;
+
+ /* dont update the INFO or PROTOCOL fields of the summary */
+ save_info=col_get_writable(pinfo->cinfo);
+ col_set_writable(pinfo->cinfo, FALSE);
offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_pdu_item, ett_h225_pdu_item, pdu_item_sequence);
+ col_set_writable(pinfo->cinfo, save_info);
return offset;
}
@@ -9419,6 +9435,9 @@
{ &hf_h225_remoteExtensionAddress,
{ "remoteExtensionAddress", "h225.remoteExtensionAddress", FT_NONE, BASE_NONE,
NULL, 0, "remoteExtensionAddress sequence of", HFILL }},
+ { &hf_h225_aliasAddress_sequence,
+ { "aliasAddress_sequence", "h225.aliasAddress_sequence", FT_NONE, BASE_NONE,
+ NULL, 0, "aliasAddress_sequence sequence of", HFILL }},
{ &hf_h225_rasAddress_sequence,
{ "rasAddress_sequence", "h225.rasAddress_sequence", FT_NONE, BASE_NONE,
NULL, 0, "rasAddress_sequence sequence of", HFILL }},
@@ -10150,6 +10169,7 @@
&ett_h225_H221NonStandard,
&ett_h225_NonStandardIdentifier,
&ett_h225_NonStandardParameter,
+ &ett_h225_aliasAddress_sequence,
/*eee*/
};
module_t *h225_module;