Ethereal-users: Re: [Ethereal-users] problems with decode of ACF and infoRequestResponse

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

Date: Sun, 9 Nov 2003 11:35:10 +0100
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;