From Tomas Kukosa:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 26 Sep 2003 22:20:08 +0000 (22:20 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 26 Sep 2003 22:20:08 +0000 (22:20 +0000)
1) string tables for t35CountryCode, t35Extension and
   h221ManufacturerCode were moved into the new file t35.c
   because they are common for more dissectors

2) the dissect_h245_NonStandardParameter_with_extension_marker()
   was moved from h245 to h225 and renamed to
   dissect_h225_NonStandardParameter() because the
   NonStandardData type is different for H.225.0 and H.245

3) type of the "h245.nsp.object" dissector table was changed from
   FT_UINT32 to FT_STRING, so it can select a dissector based on
   an OID rather than the Adler-32 hash of an OID

4) the "h225.nsp.object" and "h225.nsp.h221" dissector tables
   were created

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@8550 f5534014-38df-0310-8fa8-9805f1628bb7

Makefile.am
Makefile.nmake
packet-h225.c
packet-h225.h
packet-h245.c
packet-h245.h
packet-h450.c
t35.c [new file with mode: 0644]
t35.h [new file with mode: 0644]

index 1cff15dac909d734e20d7423db7e4963b4093211..b6b1941dc584e40ee443f9dc079500a0d1683556 100644 (file)
@@ -1,7 +1,7 @@
 # Makefile.am
 # Automake file for Ethereal
 #
-# $Id: Makefile.am,v 1.630 2003/09/24 08:05:49 guy Exp $
+# $Id: Makefile.am,v 1.631 2003/09/26 22:20:06 guy Exp $
 #
 # Ethereal - Network traffic analyzer
 # By Gerald Combs <gerald@ethereal.com>
@@ -776,6 +776,8 @@ ETHEREAL_COMMON_SRC = \
        rtp_pt.h       \
        sctpppids.h    \
        smb.h          \
+       t35.c           \
+       t35.h           \
        tap.c           \
        tap.h           \
        timestats.c     \
index 453fceed3892a363b9f346f63a219af218a21725..33971df20b848afc7c6b64ec6fc1c729100a9f7a 100644 (file)
@@ -1,7 +1,7 @@
 ## Makefile for building ethereal.exe with Microsoft C and nmake
 ## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
 #
-# $Id: Makefile.nmake,v 1.339 2003/09/23 18:40:54 guy Exp $
+# $Id: Makefile.nmake,v 1.340 2003/09/26 22:20:06 guy Exp $
 
 include config.nmake
 include <win32.mak>
@@ -437,6 +437,7 @@ ETHEREAL_COMMON_OBJECTS = \
        reassemble.obj   \
        register.obj     \
        ringbuffer.obj   \
+       t35.obj         \
        tap.obj         \
        timestats.obj   \
        util.obj         \
index c4cddd5c3cbbe3180d8fec1ea3063e51ca1bf45b..9850f40d508e63f88ec0f1b555a1a255d6723ece 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Maintained by Andreas Sikkema (andreas.sikkema@philips.com)
  *
- * $Id: packet-h225.c,v 1.13 2003/09/23 18:40:54 guy Exp $
+ * $Id: packet-h225.c,v 1.14 2003/09/26 22:20:06 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
@@ -40,6 +40,7 @@
 #include "packet-tpkt.h"
 #include "packet-per.h"
 #include "packet-h245.h"
+#include "t35.h"
 
 #define UDP_PORT_RAS1 1718
 #define UDP_PORT_RAS2 1719
 
 static dissector_handle_t h225ras_handle;
 static dissector_handle_t H323UserInformation_handle;
+static dissector_handle_t data_handle;
 
 static int proto_h225 = -1;
 static int hf_h225_cname = -1;
 static int hf_h225_route = -1;
 static int hf_h225_nonStandardUsageTypes = -1;
+static int hf_h225_nonStandardUsageTypes_item = -1;
 static int hf_h225_PresentationIndicator = -1;
 static int hf_h225_conferenceGoal = -1;
 static int hf_h225_ScnConnectionType = -1;
@@ -448,6 +451,7 @@ static int hf_h225_answeredCall = -1;
 static int hf_h225_ServiceControlIndication = -1;
 static int hf_h225_RasUsageInformation = -1;
 static int hf_h225_nonStandardUsageFields = -1;
+static int hf_h225_nonStandardUsageFields_item = -1;
 static int hf_h225_TimeToLive = -1;
 static int hf_h225_GatekeeperConfirm = -1;
 static int hf_h225_RegistrationRequest = -1;
@@ -476,6 +480,7 @@ static int hf_h225_h4501SupplementaryService = -1;
 static int hf_h225_h245Tunneling = -1;
 static int hf_h225_h245Control = -1;
 static int hf_h225_nonStandardControl = -1;
+static int hf_h225_nonStandardControl_item = -1;
 static int hf_h225_preGrantedARQ = -1;
 static int hf_h225_makeCall = -1;
 static int hf_h225_useGKCallSignalAddressToMakeCall = -1;
@@ -500,10 +505,21 @@ static int hf_h225_H323_UserInformation = -1;
 static int hf_h225_user_data = -1;
 static int hf_h225_protocol_discriminator = -1;
 static int hf_h225_user_information = -1;
+static int hf_h225_object = -1;
+static int hf_h225_t35CountryCode = -1;
+static int hf_h225_t35Extension = -1;
+static int hf_h225_manufacturerCode = -1;
+static int hf_h225_h221NonStandard = -1;
+static int hf_h225_nonStandardIdentifier = -1;
+static int hf_h225_nsp_data = -1;
+static int hf_h225_nonStandardData = -1;
+static int hf_h225_nonStandard = -1;
+static int hf_h225_nonStandardReason = -1;
+static int hf_h225_nonStandardAddress = -1;
 /*aaa*/
 
 static gint ett_h225 = -1;
-static gint ett_h225_nonStandardUsageTypes = -1;
+static gint ett_h225_T_nonStandardUsageTypes = -1;
 static gint ett_h225_PresentationIndicator = -1;
 static gint ett_h225_conferenceGoal = -1;
 static gint ett_h225_ScnConnectionType = -1;
@@ -728,7 +744,7 @@ static gint ett_h225_LocationReject = -1;
 static gint ett_h225_callSpecific = -1;
 static gint ett_h225_ServiceControlIndication = -1;
 static gint ett_h225_RasUsageInformation = -1;
-static gint ett_h225_nonStandardUsageFields = -1;
+static gint ett_h225_T_nonStandardUsageFields = -1;
 static gint ett_h225_GatekeeperConfirm = -1;
 static gint ett_h225_RegistrationRequest = -1;
 static gint ett_h225_supportedH248Packages = -1;
@@ -747,7 +763,7 @@ static gint ett_h225_messageContent = -1;
 static gint ett_h225_H323_UU_PDU = -1;
 static gint ett_h225_h4501SupplementaryService = -1;
 static gint ett_h225_h245Control = -1;
-static gint ett_h225_nonStandardControl = -1;
+static gint ett_h225_T_nonStandardControl = -1;
 static gint ett_h225_preGrantedARQ = -1;
 static gint ett_h225_RegistrationConfirm = -1;
 static gint ett_h225_pdu_item = -1;
@@ -762,14 +778,30 @@ static gint ett_h225_InfoRequestResponse = -1;
 static gint ett_h225_RasMessage = -1;
 static gint ett_h225_H323_UserInformation = -1;
 static gint ett_h225_user_data = -1;
+static gint ett_h225_H221NonStandard = -1;
+static gint ett_h225_NonStandardIdentifier = -1;
+static gint ett_h225_NonStandardParameter = -1;
 /*bbb*/
 
+/* Subdissector tables */
+static dissector_table_t nsp_object_dissector_table;
+static dissector_table_t nsp_h221_dissector_table;
+
+
 static dissector_handle_t h245_handle=NULL;
 static dissector_handle_t h245dg_handle=NULL;
 static dissector_handle_t h4501_handle=NULL;
 
+
+static dissector_handle_t nsp_handle;
+
 static guint32  ipv4_address;
 static guint32  ipv4_port;
+static char object[256];
+static guint32 t35CountryCode;
+static guint32 t35Extension;
+static guint32 manufacturerCode;
+static guint32 h221NonStandard;
 
 static gboolean contains_faststart = FALSE;
 
@@ -1809,21 +1841,173 @@ dissect_h225_SCRresult(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
        return offset;
 }
 
+static int
+dissect_h225_object(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_per_object_identifier(tvb, offset, pinfo, tree, 
+                               hf_h225_object, 
+                               object);
+       return offset;
+}
+
+static int
+dissect_h225_t35CountryCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, 
+                               hf_h225_t35CountryCode, 0, 255,
+                               &t35CountryCode, NULL, FALSE);
+       return offset;
+}
+
+
+static int
+dissect_h225_t35Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, 
+                               hf_h225_t35Extension, 0, 255,
+                               &t35Extension, NULL, FALSE);
+       return offset;
+}
+
+static int
+dissect_h225_manufacturerCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, 
+                               hf_h225_manufacturerCode, 0, 65535,
+                               &manufacturerCode, NULL, FALSE);
+       return offset;
+}
+
+static per_sequence_t H221NonStandard_sequence[] = {
+       { "t35CountryCode", EXTENSION_ROOT, NOT_OPTIONAL,
+               dissect_h225_t35CountryCode },
+       { "t35Extension", EXTENSION_ROOT, NOT_OPTIONAL, 
+               dissect_h225_t35Extension },
+       { "manufacturerCode", EXTENSION_ROOT, NOT_OPTIONAL,
+               dissect_h225_manufacturerCode },
+       { NULL, 0, 0, NULL }
+};
+static int
+dissect_h225_h221NonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       t35CountryCode = 0;
+       t35Extension = 0;
+       manufacturerCode = 0;
+
+       offset = dissect_per_sequence(tvb, offset, pinfo, tree, 
+                               hf_h225_h221NonStandard, 
+                               ett_h225_H221NonStandard, H221NonStandard_sequence);
+
+       h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
+
+       return offset;
+}
+
+static const value_string NonStandardIdentifier_vals[] = {
+       { 0,    "object" },
+       { 1,    "h221NonStandard" },
+       { 0, NULL }
+};
+static per_choice_t NonStandardIdentifier_choice[] = {
+       { 0,    "object", EXTENSION_ROOT,
+               dissect_h225_object },
+       { 1,    "h221NonStandard", EXTENSION_ROOT, 
+               dissect_h225_h221NonStandard },
+       { 0, NULL, 0, NULL }
+};
+static int
+dissect_h225_nonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       guint32 value;
+
+       *object = '\0';
+       h221NonStandard = 0;
+
+       offset = dissect_per_choice(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardIdentifier, 
+                               ett_h225_NonStandardIdentifier, NonStandardIdentifier_choice, "NonStandardIdentifier", 
+                               &value);
+
+       switch (value) {
+               case 0 :  /* object */
+                       nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, object);
+                       break;
+               case 1 :  /* h221NonStandard */
+                       nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
+                       break;
+               default :
+                       nsp_handle = NULL;
+    }
+
+       return offset;
+}
+
+static int
+dissect_h225_nsp_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       guint32 value_offset, value_len;
+       tvbuff_t *next_tvb;
+
+       offset = dissect_per_octet_string(tvb, offset, pinfo, tree, 
+                               hf_h225_nsp_data, -1, -1, 
+                               &value_offset, &value_len);
+
+       if (value_len > 0) {
+               next_tvb = tvb_new_subset(tvb, value_offset, value_len, value_len);
+               call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, pinfo, tree);
+       }
+
+       return offset;
+}
+
+static per_sequence_t NonStandardParameter_sequence[] = {
+       { "nonStandardIdentifier", NO_EXTENSIONS, NOT_OPTIONAL,
+               dissect_h225_nonStandardIdentifier },
+       { "data", NO_EXTENSIONS, NOT_OPTIONAL,
+               dissect_h225_nsp_data },
+       { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index)
+{
+       nsp_handle = NULL;
+
+       offset = dissect_per_sequence(tvb, offset, pinfo, tree, 
+                               hf_index, 
+                               ett_h225_NonStandardParameter, NonStandardParameter_sequence);
+
+       return offset;
+}
+
 
+static int
+dissect_h225_nonStandardData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardData);
+       return offset;
+}
 
 static per_sequence_t GatekeeperInfo_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { NULL, 0, 0, NULL }
 };
 static int 
 dissect_h225_GatekeeperInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
-       offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperInfo, ett_h225_GatekeeperInfo, GatekeeperInfo_sequence);
+       offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperInfo, ett_h225_GatekeeperInfo, GatekeeperInfo_sequence);
        return offset;
 }
 
-
+static int
+dissect_h225_nonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandard);
+       return offset;
+}
 
 static const value_string SecurityServiceMode_vals[] = {
        { 0, "nonStandard" },
@@ -1833,7 +2017,7 @@ static const value_string SecurityServiceMode_vals[] = {
 };
 static per_choice_t SecurityServiceMode_choice[] = {
        { 0, "nonStandard", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { 1, "none", EXTENSION_ROOT,
                dissect_h225_NULL },
        { 2, "default", EXTENSION_ROOT,
@@ -1863,7 +2047,7 @@ dissect_h225_SecurityServiceMode_integrity(tvbuff_t *tvb, int offset, packet_inf
 
 static per_sequence_t SecurityCapabilities_sequence[] = {
        { "nonStandard", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { "encryption", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_SecurityServiceMode_encryption },
        { "authenticaton", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -1897,7 +2081,7 @@ static const value_string H245Security_vals[] = {
 };
 static per_choice_t H245Security_choice[] = {
        { 0, "nonStandard", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { 1, "noSecurity", EXTENSION_ROOT,
                dissect_h225_NULL },
        { 2, "tls", EXTENSION_ROOT,
@@ -1913,10 +2097,20 @@ dissect_h225_H245Security(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
        return offset;
 }
 
+static int
+dissect_h225_nonStandardUsageTypes_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardUsageTypes_item);
+       return offset;
+}
+
 static int
 dissect_h225_nonStandardUsageTypes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
-       offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageTypes, ett_h225_nonStandardUsageTypes, dissect_h245_NonStandardParameter_with_extension_marker);
+       offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardUsageTypes, 
+                               ett_h225_T_nonStandardUsageTypes, dissect_h225_nonStandardUsageTypes_item);
        return offset;
 }
 
@@ -2002,7 +2196,7 @@ dissect_h225_channelMultiplier(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
 
 static per_sequence_t DataRate_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL, 
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "channelRate", EXTENSION_ROOT, NOT_OPTIONAL, 
                dissect_h225_channelRate },
        { "channelMultiplier", EXTENSION_ROOT, OPTIONAL, 
@@ -2033,7 +2227,7 @@ dissect_h225_dataRatesSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, p
 
 static per_sequence_t TerminalInfo_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL, 
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { NULL, 0, 0, NULL }
 };
 static int 
@@ -2054,7 +2248,7 @@ dissect_h225_h248Message(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
 
 static per_sequence_t StimulusControl_sequence[] = {
        { "nonStandard", EXTENSION_ROOT, OPTIONAL, 
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { "isText", EXTENSION_ROOT, OPTIONAL, 
                dissect_h225_NULL },
        { "h248Message", EXTENSION_ROOT, OPTIONAL, 
@@ -2088,6 +2282,14 @@ dissect_h225_replaceWithConferenceInvite(tvbuff_t *tvb, int offset, packet_info
 }
 
 
+static int
+dissect_h225_nonStandardReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardReason);
+       return offset;
+}
+
 static const value_string ReleaseCompleteReason_vals[] = {
        { 0, "noBandwidth" },
        { 1, "gatekeeperResources" },
@@ -2153,7 +2355,7 @@ static per_choice_t ReleaseCompleteReason_choice[] = {
        { 16, "newConnectionNeeded", NOT_EXTENSION_ROOT, 
                dissect_h225_NULL },
        { 17, "nonStandardReason", NOT_EXTENSION_ROOT, 
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardReason },
        { 18, "replaceWithConferenceInvite", NOT_EXTENSION_ROOT, 
                dissect_h225_replaceWithConferenceInvite },
        { 19, "genericDataReason", NOT_EXTENSION_ROOT, 
@@ -2457,7 +2659,13 @@ dissect_h225_nsap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tre
        return offset;
 }
 
-
+static int
+dissect_h225_nonStandardAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardAddress);
+       return offset;
+}
 
 static const value_string TransportAddress_vals[] = {
        { 0, "ipAddress" },
@@ -2483,7 +2691,7 @@ static per_choice_t TransportAddress_choice[] = {
        { 5, "nsap", EXTENSION_ROOT,
                dissect_h225_nsap },
        { 6, "nonStandardAddress", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardAddress },
        { 0, NULL, 0, NULL }
 };
 static int
@@ -3678,7 +3886,7 @@ dissect_h225_prefix(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
 
 static per_sequence_t SupportedPrefix_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "prefix", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_prefix },
        { NULL, 0, 0, NULL }
@@ -3700,7 +3908,7 @@ dissect_h225_SupportedPrefixes(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
 
 static per_sequence_t H310Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3717,7 +3925,7 @@ dissect_h225_H310Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t H320Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3734,7 +3942,7 @@ dissect_h225_H320Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t H321Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3751,7 +3959,7 @@ dissect_h225_H321Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t H322Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3768,7 +3976,7 @@ dissect_h225_H322Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t H323Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3785,7 +3993,7 @@ dissect_h225_H323Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t H324Caps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3802,7 +4010,7 @@ dissect_h225_H324Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t VoiceCaps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3819,7 +4027,7 @@ dissect_h225_VoiceCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
 
 static per_sequence_t T120OnlyCaps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3835,7 +4043,7 @@ dissect_h225_T120OnlyCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
 
 static per_sequence_t NonStandardProtocol_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3852,7 +4060,7 @@ dissect_h225_NonStandardProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo,
 
 static per_sequence_t SIPCaps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", EXTENSION_ROOT, OPTIONAL,
@@ -3905,7 +4113,7 @@ static per_sequence_t ConferenceList_sequence[] = {
        { "conferenceAlias", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_conferenceAlias },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { NULL, 0, 0, NULL }
 };
 static int 
@@ -3923,7 +4131,7 @@ dissect_h225_conferences(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
 }
 static per_sequence_t T38FaxAnnexbOnlyCaps_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "dataRatesSupported", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_dataRatesSupported },
        { "supportedPrefixes", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -3959,7 +4167,7 @@ static const value_string SupportedProtocols_vals[] = {
 };
 static per_choice_t SupportedProtocols_choice[] = {
        { 0, "nonStandardData", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { 1, "h310", EXTENSION_ROOT,
                dissect_h225_H310Caps },
        { 2, "h320", EXTENSION_ROOT,
@@ -4004,7 +4212,7 @@ static per_sequence_t GatewayInfo_sequence[] = {
        { "protocol", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_protocol },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { NULL, 0, 0, NULL }
 };
 static int 
@@ -4015,7 +4223,7 @@ dissect_h225_gateway(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
 }
 static per_sequence_t McuInfo_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "protocol", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_protocol },
        { NULL, 0, 0, NULL }
@@ -4928,7 +5136,7 @@ static const value_string EncryptIntAlg_vals[] = {
 };
 static per_choice_t EncryptIntAlg_choice[] = {
        { 0, "nonStandard", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { 1, "isoAlgorithm", EXTENSION_ROOT,
                dissect_h225_isoAlgorithm },
        { 0, NULL, 0, NULL }
@@ -4995,7 +5203,7 @@ static const value_string IntegrityMechanism_vals[] = {
 };
 static per_choice_t IntegrityMechanism_choice[] = {
        { 0, "nonStandard", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { 1, "digSig", EXTENSION_ROOT,
                dissect_h225_NULL },
        { 2, "iso9797", EXTENSION_ROOT,
@@ -5097,7 +5305,7 @@ dissect_h225_undefinedNode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
 
 static per_sequence_t EndPointType_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "vendor", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_VendorIdentifier },
        { "gatekeeper", EXTENSION_ROOT, OPTIONAL,
@@ -5279,7 +5487,7 @@ dissect_h225_callSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
 
 static per_sequence_t EndPoint_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "aliasAddress", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AliasAddress },
        { "callSignalAddress", EXTENSION_ROOT, OPTIONAL,
@@ -5354,7 +5562,7 @@ static per_sequence_t BandwidthConfirm_sequence[] = {
        { "bandWidth", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_BandWidth },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5379,7 +5587,7 @@ static per_sequence_t UnregistrationConfirm_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5400,7 +5608,7 @@ static per_sequence_t NonStandardMessage_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5425,7 +5633,7 @@ static per_sequence_t InfoRequestAck_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", EXTENSION_ROOT, OPTIONAL,
@@ -5444,7 +5652,7 @@ static per_sequence_t InfoRequestNak_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "nakReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_InfoRequestNakReason },
        { "altGKInfo", EXTENSION_ROOT, OPTIONAL,
@@ -5470,7 +5678,7 @@ static per_sequence_t ResourcesAvailableConfirm_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", EXTENSION_ROOT, OPTIONAL,
@@ -5529,7 +5737,7 @@ static per_sequence_t GatekeeperRequest_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "rasAddress", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_rasAddress },
        { "endpointType", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -5575,7 +5783,7 @@ static per_sequence_t ServiceControlResponse_sequence[] = {
        { "result", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_SCRresult },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", EXTENSION_ROOT, OPTIONAL,
@@ -5603,7 +5811,7 @@ static per_sequence_t DisengageReject_sequence[] = {
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_DisengageRejectReason },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "altGKInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AltGKInfo },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5633,7 +5841,7 @@ static per_sequence_t BandwidthReject_sequence[] = {
        { "allowedBandWidth", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_allowedBandWidth },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "altGKInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AltGKInfo },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5661,7 +5869,7 @@ static per_sequence_t UnregistrationReject_sequence[] = {
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_UnregRejectReason },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "altGKInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AltGKInfo },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5704,7 +5912,7 @@ static per_sequence_t UnregistrationRequest_sequence[] = {
        { "endpointAlias", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_endpointAlias },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "endpointIdentifier", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_EndpointIdentifier },
        { "alternateEndpoints", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -5864,7 +6072,7 @@ static per_sequence_t RegistrationReject_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RegistrationRejectReason },
        { "gatekeeperIdentifier", EXTENSION_ROOT, OPTIONAL,
@@ -5897,7 +6105,7 @@ static per_sequence_t GatekeeperReject_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "gatekeeperIdentifier", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_GatekeeperIdentifier },
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -5946,7 +6154,7 @@ static per_sequence_t ResourcesAvailableIndicate_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "endpointIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_EndpointIdentifier },
        { "protocols", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -6200,7 +6408,7 @@ static per_sequence_t AdmissionRequest_sequence[] = {
        { "callReferenceValue", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_CallReferenceValue },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "callServices", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_callServices },
        { "conferenceID", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -6273,7 +6481,7 @@ static per_sequence_t InfoRequest_sequence[] = {
        { "callReferenceValue", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_CallReferenceValue },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "replyAddress", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_replyAddress },
        { "callIdentifier", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -6321,7 +6529,7 @@ static per_sequence_t RequestInProgress_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", EXTENSION_ROOT, OPTIONAL,
@@ -6368,7 +6576,7 @@ static per_choice_t ServiceControlDescriptor_choice[] = {
        { 1, "signal", EXTENSION_ROOT,
                dissect_h225_H248SignalsDescriptor },
        { 2, "nonStandard", EXTENSION_ROOT,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandard },
        { 3, "callCreditServiceControl", EXTENSION_ROOT,
                dissect_h225_CallCreditServiceControl },
        { 0, NULL, 0, NULL }
@@ -6574,7 +6782,7 @@ static per_sequence_t AdmissionReject_sequence[] = {
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_AdmissionRejectReason },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "altGKInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AltGKInfo },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -6949,7 +7157,7 @@ static per_sequence_t LocationConfirm_sequence[] = {
        { "rasAddress", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_rasAddress },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "DestinationInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_DestinationInfo },
        { "destExtraCallInfo", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -6999,7 +7207,7 @@ static per_sequence_t LocationReject_sequence[] = {
        { "rejectReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_LocationRejectReason },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "altGKInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_AltGKInfo },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7051,7 +7259,7 @@ static per_sequence_t ServiceControlIndication_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                 dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "serviceControl", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_serviceControl },
        { "endpointIdentifier", EXTENSION_ROOT, OPTIONAL,
@@ -7096,10 +7304,20 @@ NOT_DECODED_YET("endTime");
        return offset;
 }
 
+static int
+dissect_h225_nonStandardUsageFields_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardUsageFields_item);
+       return offset;
+}
+
 static int
 dissect_h225_nonStandardUsageFields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
-       offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageFields, ett_h225_nonStandardUsageFields, dissect_h245_NonStandardParameter_with_extension_marker);
+       offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardUsageFields, 
+                               ett_h225_T_nonStandardUsageFields, dissect_h225_nonStandardUsageFields_item);
        return offset;
 }
 
@@ -7139,7 +7357,7 @@ static per_sequence_t GatekeeperConfirm_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "gatekeeperIdentifier", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_GatekeeperIdentifier },
        { "rasAddress", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -7210,7 +7428,7 @@ static per_sequence_t RegistrationRequest_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "discoveryComplete", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_discoveryComplete },
        { "callSignalAddress", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -7285,7 +7503,7 @@ static per_sequence_t DisengageConfirm_sequence[] = {
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "tokens", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_tokens },
        { "cryptoTokens", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7346,7 +7564,7 @@ static per_sequence_t AdmissionConfirm_sequence[] = {
        { "irrFrequency", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_irrFrequency },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "DestinationInfo", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_DestinationInfo },
        { "destExtraCallInfo", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7413,7 +7631,7 @@ static per_sequence_t DisengageRequest_sequence[] = {
        { "disengageReason", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_DisengageReason },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "callIdentifier", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_CallIdentifier },
        { "gatekeeperIdentifier", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7481,7 +7699,7 @@ static per_sequence_t LocationRequest_sequence[] = {
        { "DestinationInfo", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_DestinationInfo },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "replyAddress", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_replyAddress },
        { "SourceInfo", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7546,7 +7764,7 @@ static per_sequence_t BandwidthRequest_sequence[] = {
        { "bandWidth", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_BandWidth },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "callIdentifier", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_CallIdentifier },
        { "gatekeeperIdentifier", NOT_EXTENSION_ROOT, OPTIONAL,
@@ -7635,7 +7853,7 @@ static per_sequence_t tunnelledSignallingMessage_sequence[] = {
        { "tunnellingRequired", EXTENSION_ROOT, OPTIONAL,
                dissect_h225_NULL },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { NULL, 0, 0, NULL }
 };
 static int 
@@ -7680,10 +7898,20 @@ dissect_h225_h245Control(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
 }
 
 
+static int
+dissect_h225_nonStandardControl_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardControl_item);
+       return offset;
+}
+
 static int
 dissect_h225_nonStandardControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
-       offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_nonStandardControl, ett_h225_nonStandardControl, dissect_h245_NonStandardParameter_with_extension_marker);
+       offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, 
+                               hf_h225_nonStandardControl, 
+                               ett_h225_T_nonStandardControl, dissect_h225_nonStandardControl_item);
        return offset;
 }
 
@@ -7692,7 +7920,7 @@ static per_sequence_t H323_UU_PDU_sequence[] = {
        { "h323_message_body", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_h323_message_body },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "h4501SupplementaryService", NOT_EXTENSION_ROOT, OPTIONAL,
                dissect_h225_h4501SupplementaryService },
        { "h245Tunneling", NOT_EXTENSION_ROOT, NOT_OPTIONAL,
@@ -7777,7 +8005,7 @@ static per_sequence_t RegistrationConfirm_sequence[] = {
        { "protocolIdentifier", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_ProtocolIdentifier },
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "callSignalAddress", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_callSignalAddress },
        { "terminalAlias", EXTENSION_ROOT, OPTIONAL,
@@ -7900,7 +8128,7 @@ dissect_h225_substituteConfIDs(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
 
 static per_sequence_t perCallInfo_item_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "callReferenceValue", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_CallReferenceValue },
        { "conferenceID", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -7977,7 +8205,7 @@ dissect_h225_unsolicited(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
 
 static per_sequence_t InfoRequestResponse_sequence[] = {
        { "nonStandardData", EXTENSION_ROOT, OPTIONAL,
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h225_nonStandardData },
        { "requestSeqNum", EXTENSION_ROOT, NOT_OPTIONAL,
                dissect_h225_RequestSeqNum },
        { "endpointType", EXTENSION_ROOT, NOT_OPTIONAL,
@@ -8322,7 +8550,10 @@ proto_register_h225(void)
                VALS(H245Security_vals), 0, "H245Security choice", HFILL }},
        { &hf_h225_nonStandardUsageTypes,
                { "nonStandardUsageTypes", "h225.nonStandardUsageTypes", FT_NONE, BASE_NONE,
-               NULL, 0, "nonStandardUsageTypes sequence of", HFILL }},
+               NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
+       { &hf_h225_nonStandardUsageTypes_item,
+               { "nonStandardUsageTypes", "h225.nonStandardUsageTypes_item", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter", HFILL }},
        { &hf_h225_route,
                { "route", "h225.route", FT_NONE, BASE_NONE,
                NULL, 0, "Source Routing route", HFILL }},
@@ -9420,7 +9651,10 @@ proto_register_h225(void)
                NULL, 0, "RasUsageInformation sequence", HFILL }},
        { &hf_h225_nonStandardUsageFields,
                { "nonStandardUsageFields", "h225.nonStandardUsageFields", FT_NONE, BASE_NONE,
-               NULL, 0, "nonStandardUsageFields sequence of", HFILL }},
+               NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
+       { &hf_h225_nonStandardUsageFields_item,
+               { "nonStandardUsageFields", "h225.nonStandardUsageFields_item", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter", HFILL }},
        { &hf_h225_TimeToLive,
                { "TimeToLive", "h225.TimeToLive", FT_UINT32, BASE_DEC,
                NULL, 0, "TimeToLive in seconds", HFILL }},
@@ -9504,7 +9738,10 @@ proto_register_h225(void)
                NULL, 0, "h245Control sequence of", HFILL }},
        { &hf_h225_nonStandardControl,
                { "nonStandardControl", "h225.nonStandardControl", FT_NONE, BASE_NONE,
-               NULL, 0, "nonStandardControl sequence of", HFILL }},
+               NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
+       { &hf_h225_nonStandardControl_item,
+               { "nonStandardControl", "h225.nonStandardControl_item", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter", HFILL }},
        { &hf_h225_preGrantedARQ,
                { "preGrantedARQ", "h225.preGrantedARQ", FT_NONE, BASE_NONE,
                NULL, 0, "preGrantedARQ sequence", HFILL }},
@@ -9577,6 +9814,40 @@ proto_register_h225(void)
        { &hf_h225_user_information,
                { "user_information", "h225.user_information", FT_BYTES, BASE_HEX,
                NULL, 0, "user_information octet string", HFILL }},
+       { &hf_h225_object,
+               { "object", "h225.object", FT_STRING, BASE_NONE,
+               NULL, 0, "OBJECT IDENTIFIER", HFILL }},
+       { &hf_h225_t35CountryCode,
+               { "t35CountryCode", "h225.t35CountryCode", FT_UINT32, BASE_DEC,
+               VALS(T35CountryCode_vals), 0, "t35CountryCode value", HFILL }},
+       { &hf_h225_t35Extension,
+               { "t35Extension", "h225.t35Extension", FT_UINT32, BASE_DEC,
+               NULL, 0, "t35Extension value", HFILL }},
+       { &hf_h225_manufacturerCode,
+               { "manufacturerCode", "h225.manufacturerCode", FT_UINT32, BASE_DEC,
+               NULL, 0, "manufacturerCode value", HFILL }},
+       { &hf_h225_h221NonStandard,
+               { "h221NonStandard", "h225.h221NonStandard", FT_NONE, BASE_NONE,
+               NULL, 0, "H221NonStandard SEQUENCE", HFILL }},
+       { &hf_h225_nonStandardIdentifier,
+               { "nonStandardIdentifier", "h245.NonStandardIdentifier_type", FT_UINT32, BASE_DEC,
+               VALS(NonStandardIdentifier_vals), 0, "NonStandardIdentifier CHOICE", HFILL }},
+       { &hf_h225_nsp_data,
+               { "data", "h225.nsp_data", FT_BYTES, BASE_HEX,
+               NULL, 0, "OCTET STRING", HFILL }},
+       { &hf_h225_nonStandardData,
+               { "nonStandardData", "h225.nonStandardData", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
+       { &hf_h225_nonStandard,
+               { "nonStandard", "h225.nonStandard", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
+       { &hf_h225_nonStandardReason,
+               { "nonStandardReason", "h225.nonStandardReason", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
+       { &hf_h225_nonStandardAddress,
+               { "nonStandardAddress", "h225.nonStandardAddress", FT_NONE, BASE_NONE,
+               NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
+
 /*ddd*/
        };
 
@@ -9637,7 +9908,7 @@ proto_register_h225(void)
                &ett_h225_SecurityCapabilities_tls,
                &ett_h225_SecurityCapabilities_ipsec,
                &ett_h225_RasUsageInfoTypes,
-               &ett_h225_nonStandardUsageTypes,
+               &ett_h225_T_nonStandardUsageTypes,
                &ett_h225_DataRate,
                &ett_h225_dataRatesSupported,
                &ett_h225_TerminalInfo,
@@ -9809,7 +10080,7 @@ proto_register_h225(void)
                &ett_h225_callSpecific,
                &ett_h225_ServiceControlIndication,
                &ett_h225_RasUsageInformation,
-               &ett_h225_nonStandardUsageFields,
+               &ett_h225_T_nonStandardUsageFields,
                &ett_h225_GatekeeperConfirm,
                &ett_h225_RegistrationRequest,
                &ett_h225_supportedH248Packages,
@@ -9828,7 +10099,7 @@ proto_register_h225(void)
                &ett_h225_H323_UU_PDU,
                &ett_h225_h4501SupplementaryService,
                &ett_h225_h245Control,
-               &ett_h225_nonStandardControl,
+               &ett_h225_T_nonStandardControl,
                &ett_h225_preGrantedARQ,
                &ett_h225_RegistrationConfirm,
                &ett_h225_pdu_item,
@@ -9842,6 +10113,9 @@ proto_register_h225(void)
                &ett_h225_InfoRequestResponse,
                &ett_h225_H323_UserInformation,
                &ett_h225_user_data,
+               &ett_h225_H221NonStandard,
+               &ett_h225_NonStandardIdentifier,
+               &ett_h225_NonStandardParameter,
 /*eee*/
        };
        module_t *h225_module;
@@ -9855,6 +10129,9 @@ proto_register_h225(void)
                "Whether the dissector should reassemble H.225 PDUs spanning multiple TCP segments",
                &h225_reassembly);
        register_dissector("h225", dissect_h225_H323UserInformation, proto_h225);
+
+       nsp_object_dissector_table = register_dissector_table("h225.nsp.object", "H.245 NonStandardParameter (object)", FT_STRING, BASE_NONE); 
+       nsp_h221_dissector_table = register_dissector_table("h225.nsp.h221", "H.245 NonStandardParameter (h221)", FT_UINT32, BASE_HEX); 
 }
 
 void
@@ -9866,6 +10143,7 @@ proto_reg_handoff_h225(void)
        h245_handle = find_dissector("h245");
        h245dg_handle = find_dissector("h245dg");
        h4501_handle = find_dissector("h4501");
+       data_handle = find_dissector("data");
 
        dissector_add("udp.port", UDP_PORT_RAS1, h225ras_handle);
        dissector_add("udp.port", UDP_PORT_RAS2, h225ras_handle);
index a0a5133b1e29b77ae0f81e9463a50fb0abecf790..2578537c1929de957c8f11ba4d49eec49e584b4b 100644 (file)
@@ -2,7 +2,7 @@
  * Routines for H.225 packet dissection
  * 2003  Tomas Kukosa
  *
- * $Id: packet-h225.h,v 1.2 2003/09/23 18:40:54 guy Exp $
+ * $Id: packet-h225.h,v 1.3 2003/09/26 22:20:07 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-extern int dissect_h225_TransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
+#ifndef __H225_H__
+#define __H225_H__ 
 
-extern int dissect_h225_AliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
+extern int dissect_h225_NonStandardParameter(tvbuff_t*, int, packet_info*, proto_tree*, int);
+
+extern int dissect_h225_AliasAddress(tvbuff_t*, int, packet_info*, proto_tree*);
+
+
+#endif  /* __H225_H__ */
index 68b6b8bc3832b53b50fe790ee717975c89b5910f..2af2b44edbf578f347f6aa8b942da2631547ddb0 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Maintained by Andreas Sikkema (andreas.sikkema@philips.com)
  *
- * $Id: packet-h245.c,v 1.36 2003/09/06 01:17:10 guy Exp $
+ * $Id: packet-h245.c,v 1.37 2003/09/26 22:20:07 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
@@ -33,7 +33,6 @@
 #endif
 
 #include <glib.h>
-#include <adler32.h>
 #include <epan/packet.h>
 #include <epan/conversation.h>
 
@@ -43,6 +42,7 @@
 #include "prefs.h"
 #include "packet-tpkt.h"
 #include "packet-per.h"
+#include "t35.h"
 
 static dissector_handle_t rtp_handle=NULL;
 static dissector_handle_t rtcp_handle=NULL;
@@ -7542,354 +7542,6 @@ dissect_h245_NewATMVCCommand_reverseParameters(tvbuff_t *tvb, int offset, packet
        return offset;
 }
 
-/*Recommendation T.35 (02/2000) 3  */
-
-static const value_string T35_country_code__vals[] = {
-       { 0x00, "Japan"},
-       { 0x01, "Albania"},
-       { 0x02, "Algeria"},
-       { 0x03, "American Samoa"},
-       { 0x04, "Germany (Federal Republic of)"},
-       { 0x05, "Anguilla"},
-       { 0x06, "Antigua and Barbuda"},
-       { 0x07, "Argentina"},
-       { 0x08, "Ascension (see S. Helena)"},
-       { 0x09, "Australia"},
-       { 0x0a, "Austria"},
-       { 0x0b, "Bahamas"},
-       { 0x0c, "Bahrain"},
-       { 0x0d, "Bangladesh"},
-       { 0x0e, "Barbados"},
-       { 0x0f, "Belgium"},
-       { 0x10, "Belize"},
-       { 0x11, "Benin (Republic of)"},
-       { 0x12, "Bermudas"},
-       { 0x13, "Bhutan (Kingdom of)"},
-       { 0x14, "Bolivia"},
-       { 0x15, "Botswana"},
-       { 0x16, "Brazil"},
-       { 0x17, "British Antarctic Territory"},
-       { 0x18, "British Indian Ocean Territory"},
-       { 0x19, "British Virgin Islands"},
-       { 0x1a, "Brunei Darussalam"},
-       { 0x1b, "Bulgaria"},
-       { 0x1c, "Myanmar (Union of)"},
-       { 0x1d, "Burundi"},
-       { 0x1e, "Byelorussia"},
-       { 0x1f, "Cameroon"},
-       { 0x20, "Canada"},
-       { 0x21, "Cape Verde"},
-       { 0x22, "Cayman Islands"},
-       { 0x23, "Central African Republic"},
-       { 0x24, "Chad"},
-       { 0x25, "Chile"},
-       { 0x26, "China"},
-       { 0x27, "Colombia"},
-       { 0x28, "Comoros"},
-       { 0x29, "Congo"},
-       { 0x2a, "Cook Islands"},
-       { 0x2b, "Costa Rica"},
-       { 0x2c, "Cuba"},
-       { 0x2d, "Cyprus"},
-       { 0x2e, "Czech and Slovak Federal Republic"},
-       { 0x2f, "Cambodia"},
-       { 0x30, "Democratic People's Republic of Korea"},
-       { 0x31, "Denmark"},
-       { 0x32, "Djibouti"},
-       { 0x33, "Dominican Republic"},
-       { 0x34, "Dominica"},
-       { 0x35, "Ecuador"},
-       { 0x36, "Egypt"},
-       { 0x37, "El Salvador"},
-       { 0x38, "Equatorial Guinea"},
-       { 0x39, "Ethiopia"},
-       { 0x3a, "Falkland Islands"},
-       { 0x3b, "Fiji"},
-       { 0x3c, "Finland"},
-       { 0x3d, "France"},
-       { 0x3e, "French Polynesia"},
-       { 0x3f, "French Southern and Antarctic Lands"},
-       { 0x40, "Gabon"},
-       { 0x41, "Gambia"},
-       { 0x42, "Germany (Federal Republic of)"},
-       { 0x43, "Angola"},
-       { 0x44, "Ghana"},
-       { 0x45, "Gibraltar"},
-       { 0x46, "Greece"},
-       { 0x47, "Grenada"},
-       { 0x48, "Guam"},
-       { 0x49, "Guatemala"},
-       { 0x4a, "Guernsey"},
-       { 0x4b, "Guinea"},
-       { 0x4c, "Guinea-Bissau"},
-       { 0x4d, "Guayana"},
-       { 0x4e, "Haiti"},
-       { 0x4f, "Honduras"},
-       { 0x50, "Hongkong"},
-       { 0x51, "Hungary (Republic of)"},
-       { 0x52, "Iceland"},
-       { 0x53, "India"},
-       { 0x54, "Indonesia"},
-       { 0x55, "Iran (Islamic Republic of)"},
-       { 0x56, "Iraq"},
-       { 0x57, "Ireland"},
-       { 0x58, "Israel"},
-       { 0x59, "Italy"},
-       { 0x5a, "Cte d'Ivoire"},
-       { 0x5b, "Jamaica"},
-       { 0x5c, "Afghanistan"},
-       { 0x5d, "Jersey"},
-       { 0x5e, "Jordan"},
-       { 0x5f, "Kenya"},
-       { 0x60, "Kiribati"},
-       { 0x61, "Korea (Republic of)"},
-       { 0x62, "Kuwait"},
-       { 0x63, "Lao (People's Democratic Republic)"},
-       { 0x64, "Lebanon"},
-       { 0x65, "Lesotho"},
-       { 0x66, "Liberia"},
-       { 0x67, "Libya"},
-       { 0x68, "Liechtenstein"},
-       { 0x69, "Luxembourg"},
-       { 0x6a, "Macau"},
-       { 0x6b, "Madagascar"},
-       { 0x6c, "Malaysia"},
-       { 0x6d, "Malawi"},
-       { 0x6e, "Maldives"},
-       { 0x6f, "Mali"},
-       { 0x70, "Malta"},
-       { 0x71, "Mauritania"},
-       { 0x72, "Mauritius"},
-       { 0x73, "Mexico"},
-       { 0x74, "Monaco"},
-       { 0x75, "Mongolia"},
-       { 0x76, "Montserrat"},
-       { 0x77, "Morocco"},
-       { 0x78, "Mozambique"},
-       { 0x79, "Nauru"},
-       { 0x7a, "Nepal"},
-       { 0x7b, "Netherlands"},
-       { 0x7c, "Netherlands Antilles"},
-       { 0x7d, "New Caledonia"},
-       { 0x7e, "New Zealand"},
-       { 0x7f, "Nicaragua"},
-       { 0x80, "Niger"},
-       { 0x81, "Nigeria"},
-       { 0x82, "Norway"},
-       { 0x83, "Oman"},
-       { 0x84, "Pakistan"},
-       { 0x85, "Panama"},
-       { 0x86, "Papua New Guinea"},
-       { 0x87, "Paraguay"},
-       { 0x88, "Peru"},
-       { 0x89, "Philippines"},
-       { 0x8a, "Poland (Republic of)"},
-       { 0x8b, "Portugal"},
-       { 0x8c, "Puerto Rico"},
-       { 0x8d, "Qatar"},
-       { 0x8e, "Romania"},
-       { 0x8f, "Rwanda"},
-       { 0x90, "Saint Kitts and Nevis"},
-       { 0x91, "Saint Croix"},
-       { 0x92, "Saint Helena and Ascension"},
-       { 0x93, "Saint Lucia"},
-       { 0x94, "San Marino"},
-       { 0x95, "Saint Thomas"},
-       { 0x96, "Sao Tom�and Principe"},
-       { 0x97, "Saint Vincent and the Grenadines"},
-       { 0x98, "Saudi Arabia"},
-       { 0x99, "Senegal"},
-       { 0x9a, "Seychelles"},
-       { 0x9b, "Sierra Leone"},
-       { 0x9c, "Singapore"},
-       { 0x9d, "Solomon Islands"},
-       { 0x9e, "Somalia"},
-       { 0x9f, "South Africa"},
-       { 0xa0, "Spain"},
-       { 0xa1, "Sri Lanka"},
-       { 0xa2, "Sudan"},
-       { 0xa3, "Suriname"},
-       { 0xa4, "Swaziland"},
-       { 0xa5, "Sweden"},
-       { 0xa6, "Switzerland"},
-       { 0xa7, "Syria"},
-       { 0xa8, "Tanzania"},
-       { 0xa9, "Thailand"},
-       { 0xaa, "Togo"},
-       { 0xab, "Tonga"},
-       { 0xac, "Trinidad and Tobago"},
-       { 0xad, "Tunisia"},
-       { 0xae, "Turkey"},
-       { 0xaf, "Turks and Caicos Islands"},
-       { 0xb0, "Tuvalu"},
-       { 0xb1, "Uganda"},
-       { 0xb2, "Ukraine"},
-       { 0xb3, "United Arab Emirates"},
-       { 0xb4, "United Kingdom"},
-       { 0xb5, "United States"},
-       { 0xb6, "Burkina Faso"},
-       { 0xb7, "Uruguay"},
-       { 0xb8, "U.S.S.R."},
-       { 0xb9, "Vanuatu"},
-       { 0xba, "Vatican City State"},
-       { 0xbb, "Venezuela"},
-       { 0xbc, "Viet Nam"},
-       { 0xbd, "Wallis and Futuna"},
-       { 0xbe, "Western Samoa"},
-       { 0xbf, "Yemen (Republic of)"},
-       { 0xc0, "Yemen (Republic of)"},
-       { 0xc1, "Yugoslavia"},
-       { 0xc2, "Zaire"},
-       { 0xc3, "Zambia"},
-       { 0xc4, "Zimbabwe"},
-       {  0, NULL }
-};
-
-
-static const value_string h221Manufacturer_vals[] = {
-       {  0x04000042, "Deutsche Telekom AG" },                                         /* From Ref. 3 */
-       {  0x04000043, "Deutsche Telekom AG" },                                         /* From Ref. 3 */
-       {  0x04000082, "Siemens AG" },                                                  /* From Ref. 3 */
-       {  0x04000084, "ITO Communication" },                                           /* From Ref. 3 */
-       {  0x04000086, "Hauni Elektronik" },                                            /* From Ref. 3 */
-       {  0x04000088, "Dr.Neuhaus Mikroelektronik" },                                  /* From Ref. 3 */
-       {  0x0400008a, "mps Software" },                                                        /* From Ref. 3 */
-       {  0x0400008b, "Ferrari electronik GmbH" },                                     /* From Ref. 3 */
-       {  0x0400008c, "mbp Kommunikationssysteme GmbH" },                              /* From Ref. 3 */
-       {  0x0400008d, "Schneider Rundfunkwerke AG" },                                  /* From Ref. 3 */
-       {  0x0400008e, "Digitronic computersysteme gmbh" },                             /* From Ref. 3 */
-       {  0x0400008f, "DeTeWe - Deutsche Telephonwerke AG &Co" },                      /* From Ref. 3 */
-       {  0x04000082, "SITK Institut für Telekommunikation GmbH & Co KG" },    /* From Ref. 3 */
-      {  0x0900003D, "Equivalence (OpenH323)" },                                       /* From captures */
-       {  0x82000002, "Ericsson" },                                                            /* From captures */
-      {  0xa5000001, "Ericsson" },                                                     /* From captures */
-       {  0xb4000000, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000001, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000002, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000003, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000004, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000005, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000006, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000007, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000008, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000009, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000a, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000b, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000c, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000d, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000e, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb400000f, "British Telecommunications" },                                  /* From Ref. 2 */
-       {  0xb4000010, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000011, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000012, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000013, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000014, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000015, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000016, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000017, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000018, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb4000019, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb400001a, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb400001b, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb400001c, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb400001d, "GPT Video Systems" },                                           /* From Ref. 2 */
-       {  0xb400001e, "GPT Video Systems" },                   /* From Ref. 2 */
-       {  0xb400001f, "GPT Video Systems" },                   /* From Ref. 2 */
-       {  0xb4000020, "Marconi Communications" },              /* From Ref. 2 */ 
-       {  0xb4000021, "Indigo Active Vision Systems" },        /* From Ref. 2 */ 
-       {  0xb4000022, "LiveWorks Limited" },                   /* From Ref. 2 */ 
-       {  0xb4000023, "ATL Telecom Limited" },                 /* From Ref. 2 */ 
-       {  0xb400002a, "Network Alchemy Limited" },             /* From Ref. 2 */ 
-       {  0xb4000042, "Motion Media Technology" },             /* From Ref. 2 */ 
-       {  0xb4000044, "Data Connection" },                     /* From Ref. 2 */ 
-       {  0xb4000045, "Westbay Engineers" },                   /* From Ref. 2 */ 
-       {  0xb4000049, "ImageCom" },                            /* From Ref. 2 */ 
-       {  0xb400004d, "Madge Networks" },                      /* From Ref. 2 */ 
-       {  0xb4000052, "Ridgeway Systems and Software" },       /* From Ref. 2 */ 
-       {  0xb4000053, "SpliceCom" },                           /* From Ref. 2 */ 
-       {  0xb4000054, "TeleWare" },                            /* From Ref. 2 */ 
-       {  0xb4000056, "Vegastream" },                          /* From Ref. 2 */ 
-       {  0xb4000066, "Westell" },                             /* From Ref. 2 */ 
-       {  0xb4000069, "ISDN Communications" },                 /* From Ref. 2 */ 
-       {  0xb40000c0, "Codian" },                              /* From Ref. 2 */ 
-
-       {  0xb5000000, "Compression Labs" },                                    /* From Ref. 1 */
-       {  0xb5000001, "PictureTel" },                                          /* From Ref. 1 */
-       {  0xb5000002, "Compression Labs" },                                    /* From Ref. 1 */
-       {  0xb5000003, "VTEL" },                                                /* From Ref. 1 */
-       {  0xb5000005, "ERIS" },                                                /* From Ref. 1 */
-       {  0xb5000007, "AT&T Worldworx" },                                      /* From Ref. 1 */
-       {  0xb5000009, "VideoServer" },                                         /* From Ref. 1 */
-       {  0xb500000b, "3Com Corporation" },                                    /* From Ref. 1 */
-       {  0xb500000c, "Clarent Corporation" },                                 /* From Ref. 1 */
-       {  0xb500000d, "Genesys Telecommunications Labs Inc" },                 /* From Ref. 1 */
-       {  0xb500000e, "C-Phone Corporation." },                                /* From Ref. 1 */
-       {  0xb500000f, "Science Dynamics Corporation" },                        /* From Ref. 1 */
-       {  0xb5000010, "AT&T Starpoint" },                                      /* From Ref. 1 */
-       {  0xb5000011, "Netscape Conference" },                                 /* From Ref. 1 */
-       {  0xb5000012, "Cisco" },                                               /* From Ref. 1 */
-       {  0xb5000013, "Cirilium, Inc." },                                      /* From Ref. 1 */
-       {  0xb5000014, "Ascend Communications, Inc." },                         /* From Ref. 1 */
-       {  0xb5000015, "RADVision, Inc." },                                     /* From Ref. 1 */
-       {  0xb5000016, "Objective Communications" },                            /* From Ref. 1 */
-       {  0xb5000017, "VocalTec Communications, Inc." },                       /* From Ref. 1 */
-       {  0xb5000018, "Serome Technology, Inc." },                             /* From Ref. 1 */
-       {  0xb5000019, "Aspect Communications" },                               /* From Ref. 1 */
-       {  0xb500001a, "Cintech Tele-Management" },                             /* From Ref. 1 */
-       {  0xb500001b, "Philips Video Conferencing Systems" },                  /* From Ref. 1 */
-       {  0xb500001c, "Vertical Networks, Inc." },                             /* From Ref. 1 */
-       {  0xb500001d, "Syndeo Corp." },                                        /* From Ref. 1 */
-       {  0xb500001e, "Telxon Corporation" },                                  /* From Ref. 1 */
-       {  0xb500001f, "Network Equipment Technologies" },                      /* From Ref. 1 */
-       {  0xb5000020, "Pagoo, Inc." },                                         /* From Ref. 1 */
-       {  0xb5000021, "General Dynamics" },                                    /* From Ref. 1 */
-       {  0xb5000022, "Vanguard Managed Solutions" },                          /* From Ref. 1 */
-       {  0xb5000023, "TeleStream Technologies, Inc." },                       /* From Ref. 1 */
-       {  0xb5000024, "Spirent Communications" },                              /* From Ref. 1 */
-       {  0xb5000025, "CrystalVoice Communications" },                         /* From Ref. 1 */
-       {  0xb5000026, "Xiph.org" },                                            /* From Ref. 1 */
-       {  0xb5000027, "NACT Telecommunications" },                             /* From Ref. 1 */
-       {  0xb5000028, "AudioCodes, Inc." },                                    /* From Ref. 1 */
-       {  0xb5000120, "AT&T - GBCS" },                                         /* From Ref. 1 */
-       {  0xb5000168, "Leadtek Research Inc." },                               /* From Ref. 1 */
-       {  0xb5000247, "Lucent Technologies" },                                 /* From Ref. 1 */
-       {  0xb500029a, "Symbol Technologies Inc." },                            /* From Ref. 1 */
-       {  0xb5000378, "StarVox, Inc." },                                       /* From Ref. 1 */
-       {  0xb50003f7, "Inari Inc." },                                          /* From Ref. 1 */
-       {  0xb5000727, "Quintum Technologies, Inc." },                          /* From Ref. 1 */
-       {  0xb5000918, "Netrix Corporation" },                                  /* From Ref. 1 */
-       {  0xb500101e, "SysMaster Corporation" },                               /* From Ref. 1 */
-       {  0xb5001a1a, "Alpha Telecom, Inc. U.S.A." },                          /* From Ref. 1 */
-       {  0xb5002331, "ViaVideo" },                                            /* From Ref. 1 */
-       {  0xb500301c, "Congruency, Inc." },                                    /* From Ref. 1 */
-       {  0xb5003039, "MiBridge Inc." },                                       /* From Ref. 1 */
-       {  0xb5003838, "8x8 Inc." },                                            /* From Ref. 1 */
-       {  0xb5004147, "Agere Systems" },                                       /* From Ref. 1 */
-       {  0xb5004153, "Artisoft Inc." },                                       /* From Ref. 1 */
-       {  0xb5004156, "Avaya" },                                               /* From Ref. 1 */
-       {  0xb5004242, "IBM." },                                                /* From Ref. 1 */
-       {  0xb5004257, "StreamComm" },                                          /* From Ref. 1 */
-
-       {  0xb5004c54, "Lucent Technologies" },                                 /* From Ref. 1 */
-       {  0xb5004d47, "MediaGate" },                                           /* From Ref. 1 */
-       {  0xb5004e54, "Nortel Networks" },                                     /* From Ref. 1 */
-
-       {  0xb5005243, "Siemens Business Communication Systems" },      /* From Ref. 1 */
-       {  0xb500534c, "Microsoft" },                           /* From Ref. 1 */
-
-       {  0xb500600d, "Lucent Technologies" },                                 /* From Ref. 1 */
-
-       {  0xb5008080, "Intel" },                               /* From Ref. 1 */
-       {  0xa5000001, "Ericsson" },                            /* From captures */
-       {  0, NULL }
-};
-/* Ref 1 http://www.delta-info.com/Protocol_Test/Manufacturer_codes.html       */
-/* Ref 2 http://www.cix.co.uk/~bpechey/H221/h221code.htm                       */
-/* Ref 3 http://www.regtp.de/reg_tele/start/in_05-06-03-11-00_m/index.html     */
-
-
-
-
 static int
 dissect_h245_t35CountryCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
@@ -7951,35 +7603,6 @@ dissect_h245_h221NonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, prot
        return offset;
 }
 
-/* dissect_h245_h221NonStandard_with_extension is used for H.225 */
-
-static per_sequence_t h221NonStandard_sequence_with_extension[] = {
-       { "t35CountryCode", EXTENSION_ROOT, NOT_OPTIONAL,
-               dissect_h245_t35CountryCode },
-       { "t35Extension", EXTENSION_ROOT, NOT_OPTIONAL, 
-               dissect_h245_t35Extension },
-       { "manufacturerCode", EXTENSION_ROOT, NOT_OPTIONAL,
-               dissect_h245_manufacturerCode },
-       { NULL, 0, 0, NULL }
-};
-int
-dissect_h245_h221NonStandard_with_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
-{
-       t35CountryCode = 0;
-       t35Extension = 0;
-       manufacturerCode = 0;
-
-       offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h245_h221NonStandard, ett_h245_h221NonStandard, h221NonStandard_sequence_with_extension);
-
-       h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
-
-       proto_tree_add_uint(tree, hf_h245_h221Manufacturer, tvb, (offset-3)>>3,4,h221NonStandard);
-
-       return offset;
-}
-
-
-
 static int
 dissect_h245_terminalType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
@@ -7990,9 +7613,6 @@ dissect_h245_terminalType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_t
        return offset;
 }
 
-
-
-
 static int
 dissect_h245_statusDeterminationNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
@@ -12853,7 +12473,7 @@ dissect_h245_NonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo
 
        switch (value) {
                case 0 :  /* object */
-                       nsp_handle = dissector_get_port_handle(nsp_object_dissector_table, adler32_str(object));
+                       nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, object);
                        break;
                case 1 :  /* h221NonStandard */
                        nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
@@ -12865,41 +12485,6 @@ dissect_h245_NonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo
        return offset;
 }
 
-
-/* dissect_h245_NonStandardIdentifier_with_extension is used for H.225 */
-
-static per_choice_t NonStandardIdentifier_with_extension_choice[] = {
-       { 0,    "object", EXTENSION_ROOT,
-               dissect_h245_object },
-       { 1,    "h221NonStandard", EXTENSION_ROOT, 
-               dissect_h245_h221NonStandard_with_extension },
-       { 0, NULL, 0, NULL }
-};
-static int
-dissect_h245_NonStandardIdentifier_with_extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
-{
-       guint32 value;
-
-       *object = '\0';
-       h221NonStandard = 0;
-
-       offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h245_NonStandardIdentifier, ett_h245_NonStandardIdentifier, NonStandardIdentifier_with_extension_choice, "NonStandardIdentifier with extension", &value);
-
-       switch (value) {
-               case 0 :  /* object */
-                       nsp_handle = dissector_get_port_handle(nsp_object_dissector_table, adler32_str(object));
-                       break;
-               case 1 :  /* h221NonStandard */
-                       nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
-                       break;
-               default :
-                       nsp_handle = NULL;
-    }
-
-       return offset;
-}
-
-
 static int
 dissect_h245_NonStandardParameterData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
 {
@@ -13552,29 +13137,6 @@ dissect_h245_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo,
        return offset;
 }
 
-/* dissect_h245_NonStandardParameter_with_extension_marker is used for H.225 */
-
-static per_sequence_t NonStandardParameter_with_extension_sequence[] = {
-       { "nonStandardIdentifier", NO_EXTENSIONS, NOT_OPTIONAL,
-               dissect_h245_NonStandardIdentifier_with_extension },
-       { "data", NO_EXTENSIONS, NOT_OPTIONAL,
-               dissect_h245_NonStandardParameterData },
-       { NULL, 0, 0, NULL }
-};
-int
-dissect_h245_NonStandardParameter_with_extension_marker(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
-{
-       nsp_handle = NULL;
-
-       offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h245_NonStandardParameter, ett_h245_NonStandardParameter, NonStandardParameter_with_extension_sequence);
-
-       return offset;
-}
-
-
-
-
-
 static const value_string DataProtocolCapability_vals[] = {
        {  0, "nonStandard" },
        {  1, "v14buffered" },
@@ -21489,7 +21051,7 @@ proto_register_h245(void)
                NULL, 0, "ATM BitRate in 64kbit/s units", HFILL }},
        { &hf_h245_t35CountryCode,
                { "t35CountryCode", "h245.t35CountryCode", FT_UINT32, BASE_DEC,
-               VALS(T35_country_code__vals), 0, "t35CountryCode value", HFILL }},
+               VALS(T35CountryCode_vals), 0, "t35CountryCode value", HFILL }},
        { &hf_h245_t35Extension,
                { "t35Extension", "h245.t35Extension", FT_UINT32, BASE_DEC,
                NULL, 0, "t35Extension value", HFILL }},
@@ -22368,7 +21930,7 @@ proto_register_h245(void)
                NULL, 0, "String for internationalNumber", HFILL }},
        { &hf_h245_h221Manufacturer,
                { "H.221 Manufacturer", "h245.h221Manufacturer", FT_UINT32, BASE_HEX,
-               VALS(h221Manufacturer_vals), 0, "H.221 Manufacturer", HFILL }},
+               VALS(H221ManufacturerCode_vals), 0, "H.221 Manufacturer", HFILL }},
        };
 
        static gint *ett[] =
@@ -22871,7 +22433,7 @@ proto_register_h245(void)
        register_dissector("h245dg", dissect_h245_MultimediaSystemControlMessage, proto_h245);
        register_dissector("h245", dissect_h245, proto_h245);
 
-       nsp_object_dissector_table = register_dissector_table("h245.nsp.object", "H.245 NonStandardParameter (object)", FT_UINT32, BASE_HEX); 
+       nsp_object_dissector_table = register_dissector_table("h245.nsp.object", "H.245 NonStandardParameter (object)", FT_STRING, BASE_NONE); 
        nsp_h221_dissector_table = register_dissector_table("h245.nsp.h221", "H.245 NonStandardParameter (h221)", FT_UINT32, BASE_HEX); 
 }
 
index e365e7bebd58ea1489fc796a488131914f4af916..dde2b6366b3e7faf3218259af6ee74c0cb3fa10e 100644 (file)
@@ -2,7 +2,7 @@
  * Routines for H.245 packet dissection
  * 2003  Ronnie Sahlberg
  *
- * $Id: packet-h245.h,v 1.4 2003/08/26 21:44:35 sahlberg Exp $
+ * $Id: packet-h245.h,v 1.5 2003/09/26 22:20:07 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@ethereal.com>
@@ -31,8 +31,6 @@ extern int dissect_h245_h221NonStandard(tvbuff_t *tvb, int offset, packet_info *
 
 extern int dissect_h245_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
 
-extern int dissect_h245_NonStandardParameter_with_extension_marker(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
-
 extern int dissect_h245_T38FaxProfile(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
 
 extern int dissect_h245_DataProtocolCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
index 5f5ae8273b347e438c35ed3f0106ed0c657523a0..66b53ef1049f76ce91537ed1e66bd71f28f06b15 100644 (file)
@@ -125,6 +125,7 @@ static int hf_h4501_ROS = -1;
 static int hf_h4501_rosApdus = -1;
 static int hf_h4501_ServiceApdus = -1;
 
+static int hf_h4502_nonStandardData = -1;
 static int hf_h4502_DummyArg = -1;
 static int hf_h4502_CallIdentity = -1;
 static int hf_h4502_CTInitiateArg = -1;
@@ -351,6 +352,14 @@ NOT_DECODED_YET("H.450.1 ExtensionSeq");
 }
 
 
+static int
+dissect_h4502_nonStandardData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
+{
+       offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, 
+                               hf_h4502_nonStandardData);
+       return offset;
+}
+
 static const value_string Extension_vals[] = {
        { 0, "extensionSeq" },
        { 1, "nonStandardData" },
@@ -360,7 +369,7 @@ static per_choice_t Extension_choice[] = {
        { 0, "extensionSeq", NO_EXTENSIONS, 
                dissect_h4501_ExtensionSeq },
        { 1, "nonStandardData", NO_EXTENSIONS, 
-               dissect_h245_NonStandardParameter_with_extension_marker },
+               dissect_h4502_nonStandardData },
        { 0, NULL, 0, NULL }
 };
 static int
@@ -1109,6 +1118,9 @@ proto_register_h4501(void)
    { &hf_h4501_H225InformationElement,
       { "H225InformationElement", "h4501.H225InformationElement", FT_BYTES, BASE_HEX,
       NULL, 0, "H225InformationElement", HFILL }},
+   { &hf_h4502_nonStandardData,
+      { "nonStandardData", "h4502.nonStandardData", FT_NONE, BASE_NONE,
+         NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
    { &hf_h4502_DummyArg,
       { "DummyArg", "h4502.DummyArg", FT_NONE, BASE_NONE,
       NULL, 0, "DummyArg sequence of", HFILL }},
diff --git a/t35.c b/t35.c
new file mode 100644 (file)
index 0000000..d514c77
--- /dev/null
+++ b/t35.c
@@ -0,0 +1,375 @@
+/* t35.c
+ * T.35 and H.221 tables
+ * 2003  Tomas Kukosa
+ *
+ * 
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ */
+
+#include "t35.h"
+
+/*Recommendation T.35 (02/2000) 3  */
+const value_string T35CountryCode_vals[] = {
+       { 0x00, "Japan"},
+       { 0x01, "Albania"},
+       { 0x02, "Algeria"},
+       { 0x03, "American Samoa"},
+       { 0x04, "Germany (Federal Republic of)"},
+       { 0x05, "Anguilla"},
+       { 0x06, "Antigua and Barbuda"},
+       { 0x07, "Argentina"},
+       { 0x08, "Ascension (see S. Helena)"},
+       { 0x09, "Australia"},
+       { 0x0a, "Austria"},
+       { 0x0b, "Bahamas"},
+       { 0x0c, "Bahrain"},
+       { 0x0d, "Bangladesh"},
+       { 0x0e, "Barbados"},
+       { 0x0f, "Belgium"},
+       { 0x10, "Belize"},
+       { 0x11, "Benin (Republic of)"},
+       { 0x12, "Bermudas"},
+       { 0x13, "Bhutan (Kingdom of)"},
+       { 0x14, "Bolivia"},
+       { 0x15, "Botswana"},
+       { 0x16, "Brazil"},
+       { 0x17, "British Antarctic Territory"},
+       { 0x18, "British Indian Ocean Territory"},
+       { 0x19, "British Virgin Islands"},
+       { 0x1a, "Brunei Darussalam"},
+       { 0x1b, "Bulgaria"},
+       { 0x1c, "Myanmar (Union of)"},
+       { 0x1d, "Burundi"},
+       { 0x1e, "Byelorussia"},
+       { 0x1f, "Cameroon"},
+       { 0x20, "Canada"},
+       { 0x21, "Cape Verde"},
+       { 0x22, "Cayman Islands"},
+       { 0x23, "Central African Republic"},
+       { 0x24, "Chad"},
+       { 0x25, "Chile"},
+       { 0x26, "China"},
+       { 0x27, "Colombia"},
+       { 0x28, "Comoros"},
+       { 0x29, "Congo"},
+       { 0x2a, "Cook Islands"},
+       { 0x2b, "Costa Rica"},
+       { 0x2c, "Cuba"},
+       { 0x2d, "Cyprus"},
+       { 0x2e, "Czech and Slovak Federal Republic"},
+       { 0x2f, "Cambodia"},
+       { 0x30, "Democratic People's Republic of Korea"},
+       { 0x31, "Denmark"},
+       { 0x32, "Djibouti"},
+       { 0x33, "Dominican Republic"},
+       { 0x34, "Dominica"},
+       { 0x35, "Ecuador"},
+       { 0x36, "Egypt"},
+       { 0x37, "El Salvador"},
+       { 0x38, "Equatorial Guinea"},
+       { 0x39, "Ethiopia"},
+       { 0x3a, "Falkland Islands"},
+       { 0x3b, "Fiji"},
+       { 0x3c, "Finland"},
+       { 0x3d, "France"},
+       { 0x3e, "French Polynesia"},
+       { 0x3f, "French Southern and Antarctic Lands"},
+       { 0x40, "Gabon"},
+       { 0x41, "Gambia"},
+       { 0x42, "Germany (Federal Republic of)"},
+       { 0x43, "Angola"},
+       { 0x44, "Ghana"},
+       { 0x45, "Gibraltar"},
+       { 0x46, "Greece"},
+       { 0x47, "Grenada"},
+       { 0x48, "Guam"},
+       { 0x49, "Guatemala"},
+       { 0x4a, "Guernsey"},
+       { 0x4b, "Guinea"},
+       { 0x4c, "Guinea-Bissau"},
+       { 0x4d, "Guayana"},
+       { 0x4e, "Haiti"},
+       { 0x4f, "Honduras"},
+       { 0x50, "Hongkong"},
+       { 0x51, "Hungary (Republic of)"},
+       { 0x52, "Iceland"},
+       { 0x53, "India"},
+       { 0x54, "Indonesia"},
+       { 0x55, "Iran (Islamic Republic of)"},
+       { 0x56, "Iraq"},
+       { 0x57, "Ireland"},
+       { 0x58, "Israel"},
+       { 0x59, "Italy"},
+       { 0x5a, "Cte d'Ivoire"},
+       { 0x5b, "Jamaica"},
+       { 0x5c, "Afghanistan"},
+       { 0x5d, "Jersey"},
+       { 0x5e, "Jordan"},
+       { 0x5f, "Kenya"},
+       { 0x60, "Kiribati"},
+       { 0x61, "Korea (Republic of)"},
+       { 0x62, "Kuwait"},
+       { 0x63, "Lao (People's Democratic Republic)"},
+       { 0x64, "Lebanon"},
+       { 0x65, "Lesotho"},
+       { 0x66, "Liberia"},
+       { 0x67, "Libya"},
+       { 0x68, "Liechtenstein"},
+       { 0x69, "Luxembourg"},
+       { 0x6a, "Macau"},
+       { 0x6b, "Madagascar"},
+       { 0x6c, "Malaysia"},
+       { 0x6d, "Malawi"},
+       { 0x6e, "Maldives"},
+       { 0x6f, "Mali"},
+       { 0x70, "Malta"},
+       { 0x71, "Mauritania"},
+       { 0x72, "Mauritius"},
+       { 0x73, "Mexico"},
+       { 0x74, "Monaco"},
+       { 0x75, "Mongolia"},
+       { 0x76, "Montserrat"},
+       { 0x77, "Morocco"},
+       { 0x78, "Mozambique"},
+       { 0x79, "Nauru"},
+       { 0x7a, "Nepal"},
+       { 0x7b, "Netherlands"},
+       { 0x7c, "Netherlands Antilles"},
+       { 0x7d, "New Caledonia"},
+       { 0x7e, "New Zealand"},
+       { 0x7f, "Nicaragua"},
+       { 0x80, "Niger"},
+       { 0x81, "Nigeria"},
+       { 0x82, "Norway"},
+       { 0x83, "Oman"},
+       { 0x84, "Pakistan"},
+       { 0x85, "Panama"},
+       { 0x86, "Papua New Guinea"},
+       { 0x87, "Paraguay"},
+       { 0x88, "Peru"},
+       { 0x89, "Philippines"},
+       { 0x8a, "Poland (Republic of)"},
+       { 0x8b, "Portugal"},
+       { 0x8c, "Puerto Rico"},
+       { 0x8d, "Qatar"},
+       { 0x8e, "Romania"},
+       { 0x8f, "Rwanda"},
+       { 0x90, "Saint Kitts and Nevis"},
+       { 0x91, "Saint Croix"},
+       { 0x92, "Saint Helena and Ascension"},
+       { 0x93, "Saint Lucia"},
+       { 0x94, "San Marino"},
+       { 0x95, "Saint Thomas"},
+       { 0x96, "Sao Tom�and Principe"},
+       { 0x97, "Saint Vincent and the Grenadines"},
+       { 0x98, "Saudi Arabia"},
+       { 0x99, "Senegal"},
+       { 0x9a, "Seychelles"},
+       { 0x9b, "Sierra Leone"},
+       { 0x9c, "Singapore"},
+       { 0x9d, "Solomon Islands"},
+       { 0x9e, "Somalia"},
+       { 0x9f, "South Africa"},
+       { 0xa0, "Spain"},
+       { 0xa1, "Sri Lanka"},
+       { 0xa2, "Sudan"},
+       { 0xa3, "Suriname"},
+       { 0xa4, "Swaziland"},
+       { 0xa5, "Sweden"},
+       { 0xa6, "Switzerland"},
+       { 0xa7, "Syria"},
+       { 0xa8, "Tanzania"},
+       { 0xa9, "Thailand"},
+       { 0xaa, "Togo"},
+       { 0xab, "Tonga"},
+       { 0xac, "Trinidad and Tobago"},
+       { 0xad, "Tunisia"},
+       { 0xae, "Turkey"},
+       { 0xaf, "Turks and Caicos Islands"},
+       { 0xb0, "Tuvalu"},
+       { 0xb1, "Uganda"},
+       { 0xb2, "Ukraine"},
+       { 0xb3, "United Arab Emirates"},
+       { 0xb4, "United Kingdom"},
+       { 0xb5, "United States"},
+       { 0xb6, "Burkina Faso"},
+       { 0xb7, "Uruguay"},
+       { 0xb8, "U.S.S.R."},
+       { 0xb9, "Vanuatu"},
+       { 0xba, "Vatican City State"},
+       { 0xbb, "Venezuela"},
+       { 0xbc, "Viet Nam"},
+       { 0xbd, "Wallis and Futuna"},
+       { 0xbe, "Western Samoa"},
+       { 0xbf, "Yemen (Republic of)"},
+       { 0xc0, "Yemen (Republic of)"},
+       { 0xc1, "Yugoslavia"},
+       { 0xc2, "Zaire"},
+       { 0xc3, "Zambia"},
+       { 0xc4, "Zimbabwe"},
+       {  0, NULL }
+};
+
+
+const value_string T35Extension_vals[] = {
+       {  0, NULL }
+};
+
+const value_string H221ManufacturerCode_vals[] = {
+       {  0x04000042, "Deutsche Telekom AG" },                                         /* From Ref. 3 */
+       {  0x04000043, "Deutsche Telekom AG" },                                         /* From Ref. 3 */
+       {  0x04000082, "Siemens AG" },                                                  /* From Ref. 3 */
+       {  0x04000084, "ITO Communication" },                                           /* From Ref. 3 */
+       {  0x04000086, "Hauni Elektronik" },                                            /* From Ref. 3 */
+       {  0x04000088, "Dr.Neuhaus Mikroelektronik" },                                  /* From Ref. 3 */
+       {  0x0400008a, "mps Software" },                                                        /* From Ref. 3 */
+       {  0x0400008b, "Ferrari electronik GmbH" },                                     /* From Ref. 3 */
+       {  0x0400008c, "mbp Kommunikationssysteme GmbH" },                              /* From Ref. 3 */
+       {  0x0400008d, "Schneider Rundfunkwerke AG" },                                  /* From Ref. 3 */
+       {  0x0400008e, "Digitronic computersysteme gmbh" },                             /* From Ref. 3 */
+       {  0x0400008f, "DeTeWe - Deutsche Telephonwerke AG &Co" },                      /* From Ref. 3 */
+       {  0x04000082, "SITK Institut für Telekommunikation GmbH & Co KG" },    /* From Ref. 3 */
+      {  0x0900003D, "Equivalence (OpenH323)" },                                       /* From captures */
+       {  0x82000002, "Ericsson" },                                                            /* From captures */
+      {  0xa5000001, "Ericsson" },                                                     /* From captures */
+       {  0xb4000000, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000001, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000002, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000003, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000004, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000005, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000006, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000007, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000008, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000009, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000a, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000b, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000c, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000d, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000e, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb400000f, "British Telecommunications" },                                  /* From Ref. 2 */
+       {  0xb4000010, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000011, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000012, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000013, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000014, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000015, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000016, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000017, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000018, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb4000019, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb400001a, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb400001b, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb400001c, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb400001d, "GPT Video Systems" },                                           /* From Ref. 2 */
+       {  0xb400001e, "GPT Video Systems" },                   /* From Ref. 2 */
+       {  0xb400001f, "GPT Video Systems" },                   /* From Ref. 2 */
+       {  0xb4000020, "Marconi Communications" },              /* From Ref. 2 */ 
+       {  0xb4000021, "Indigo Active Vision Systems" },        /* From Ref. 2 */ 
+       {  0xb4000022, "LiveWorks Limited" },                   /* From Ref. 2 */ 
+       {  0xb4000023, "ATL Telecom Limited" },                 /* From Ref. 2 */ 
+       {  0xb400002a, "Network Alchemy Limited" },             /* From Ref. 2 */ 
+       {  0xb4000042, "Motion Media Technology" },             /* From Ref. 2 */ 
+       {  0xb4000044, "Data Connection" },                     /* From Ref. 2 */ 
+       {  0xb4000045, "Westbay Engineers" },                   /* From Ref. 2 */ 
+       {  0xb4000049, "ImageCom" },                            /* From Ref. 2 */ 
+       {  0xb400004d, "Madge Networks" },                      /* From Ref. 2 */ 
+       {  0xb4000052, "Ridgeway Systems and Software" },       /* From Ref. 2 */ 
+       {  0xb4000053, "SpliceCom" },                           /* From Ref. 2 */ 
+       {  0xb4000054, "TeleWare" },                            /* From Ref. 2 */ 
+       {  0xb4000056, "Vegastream" },                          /* From Ref. 2 */ 
+       {  0xb4000066, "Westell" },                             /* From Ref. 2 */ 
+       {  0xb4000069, "ISDN Communications" },                 /* From Ref. 2 */ 
+       {  0xb40000c0, "Codian" },                              /* From Ref. 2 */ 
+
+       {  0xb5000000, "Compression Labs" },                                    /* From Ref. 1 */
+       {  0xb5000001, "PictureTel" },                                          /* From Ref. 1 */
+       {  0xb5000002, "Compression Labs" },                                    /* From Ref. 1 */
+       {  0xb5000003, "VTEL" },                                                /* From Ref. 1 */
+       {  0xb5000005, "ERIS" },                                                /* From Ref. 1 */
+       {  0xb5000007, "AT&T Worldworx" },                                      /* From Ref. 1 */
+       {  0xb5000009, "VideoServer" },                                         /* From Ref. 1 */
+       {  0xb500000b, "3Com Corporation" },                                    /* From Ref. 1 */
+       {  0xb500000c, "Clarent Corporation" },                                 /* From Ref. 1 */
+       {  0xb500000d, "Genesys Telecommunications Labs Inc" },                 /* From Ref. 1 */
+       {  0xb500000e, "C-Phone Corporation." },                                /* From Ref. 1 */
+       {  0xb500000f, "Science Dynamics Corporation" },                        /* From Ref. 1 */
+       {  0xb5000010, "AT&T Starpoint" },                                      /* From Ref. 1 */
+       {  0xb5000011, "Netscape Conference" },                                 /* From Ref. 1 */
+       {  0xb5000012, "Cisco" },                                               /* From Ref. 1 */
+       {  0xb5000013, "Cirilium, Inc." },                                      /* From Ref. 1 */
+       {  0xb5000014, "Ascend Communications, Inc." },                         /* From Ref. 1 */
+       {  0xb5000015, "RADVision, Inc." },                                     /* From Ref. 1 */
+       {  0xb5000016, "Objective Communications" },                            /* From Ref. 1 */
+       {  0xb5000017, "VocalTec Communications, Inc." },                       /* From Ref. 1 */
+       {  0xb5000018, "Serome Technology, Inc." },                             /* From Ref. 1 */
+       {  0xb5000019, "Aspect Communications" },                               /* From Ref. 1 */
+       {  0xb500001a, "Cintech Tele-Management" },                             /* From Ref. 1 */
+       {  0xb500001b, "Philips Video Conferencing Systems" },                  /* From Ref. 1 */
+       {  0xb500001c, "Vertical Networks, Inc." },                             /* From Ref. 1 */
+       {  0xb500001d, "Syndeo Corp." },                                        /* From Ref. 1 */
+       {  0xb500001e, "Telxon Corporation" },                                  /* From Ref. 1 */
+       {  0xb500001f, "Network Equipment Technologies" },                      /* From Ref. 1 */
+       {  0xb5000020, "Pagoo, Inc." },                                         /* From Ref. 1 */
+       {  0xb5000021, "General Dynamics" },                                    /* From Ref. 1 */
+       {  0xb5000022, "Vanguard Managed Solutions" },                          /* From Ref. 1 */
+       {  0xb5000023, "TeleStream Technologies, Inc." },                       /* From Ref. 1 */
+       {  0xb5000024, "Spirent Communications" },                              /* From Ref. 1 */
+       {  0xb5000025, "CrystalVoice Communications" },                         /* From Ref. 1 */
+       {  0xb5000026, "Xiph.org" },                                            /* From Ref. 1 */
+       {  0xb5000027, "NACT Telecommunications" },                             /* From Ref. 1 */
+       {  0xb5000028, "AudioCodes, Inc." },                                    /* From Ref. 1 */
+       {  0xb5000120, "AT&T - GBCS" },                                         /* From Ref. 1 */
+       {  0xb5000168, "Leadtek Research Inc." },                               /* From Ref. 1 */
+       {  0xb5000247, "Lucent Technologies" },                                 /* From Ref. 1 */
+       {  0xb500029a, "Symbol Technologies Inc." },                            /* From Ref. 1 */
+       {  0xb5000378, "StarVox, Inc." },                                       /* From Ref. 1 */
+       {  0xb50003f7, "Inari Inc." },                                          /* From Ref. 1 */
+       {  0xb5000727, "Quintum Technologies, Inc." },                          /* From Ref. 1 */
+       {  0xb5000918, "Netrix Corporation" },                                  /* From Ref. 1 */
+       {  0xb500101e, "SysMaster Corporation" },                               /* From Ref. 1 */
+       {  0xb5001a1a, "Alpha Telecom, Inc. U.S.A." },                          /* From Ref. 1 */
+       {  0xb5002331, "ViaVideo" },                                            /* From Ref. 1 */
+       {  0xb500301c, "Congruency, Inc." },                                    /* From Ref. 1 */
+       {  0xb5003039, "MiBridge Inc." },                                       /* From Ref. 1 */
+       {  0xb5003838, "8x8 Inc." },                                            /* From Ref. 1 */
+       {  0xb5004147, "Agere Systems" },                                       /* From Ref. 1 */
+       {  0xb5004153, "Artisoft Inc." },                                       /* From Ref. 1 */
+       {  0xb5004156, "Avaya" },                                               /* From Ref. 1 */
+       {  0xb5004242, "IBM." },                                                /* From Ref. 1 */
+       {  0xb5004257, "StreamComm" },                                          /* From Ref. 1 */
+
+       {  0xb5004c54, "Lucent Technologies" },                                 /* From Ref. 1 */
+       {  0xb5004d47, "MediaGate" },                                           /* From Ref. 1 */
+       {  0xb5004e54, "Nortel Networks" },                                     /* From Ref. 1 */
+
+       {  0xb5005243, "Siemens Business Communication Systems" },      /* From Ref. 1 */
+       {  0xb500534c, "Microsoft" },                           /* From Ref. 1 */
+
+       {  0xb500600d, "Lucent Technologies" },                                 /* From Ref. 1 */
+
+       {  0xb5008080, "Intel" },                               /* From Ref. 1 */
+       {  0xa5000001, "Ericsson" },                            /* From captures */
+       {  0, NULL }
+};
+/* Ref 1 http://www.delta-info.com/Protocol_Test/Manufacturer_codes.html       */
+/* Ref 2 http://www.cix.co.uk/~bpechey/H221/h221code.htm                       */
+/* Ref 3 http://www.regtp.de/reg_tele/start/in_05-06-03-11-00_m/index.html     */
+
diff --git a/t35.h b/t35.h
new file mode 100644 (file)
index 0000000..0aa8e86
--- /dev/null
+++ b/t35.h
@@ -0,0 +1,35 @@
+/* t35.h
+ * T.35 and H.221 tables
+ * 2003  Tomas Kukosa
+ *
+ * 
+ *
+ * Ethereal - Network traffic analyzer
+ * By Gerald Combs <gerald@ethereal.com>
+ * Copyright 1998 Gerald Combs
+ *
+ * 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.
+ */
+
+#ifndef __T35_H__
+#define __T35_H__ 
+
+#include "epan/value_string.h"
+
+extern const value_string T35CountryCode_vals[];
+extern const value_string T35Extension_vals[];
+extern const value_string H221ManufacturerCode_vals[];
+
+#endif  /* __T35_H__ */