*
* 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>
#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;
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;
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;
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;
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;
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;
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;
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" },
};
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,
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,
};
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,
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;
}
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,
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
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,
}
+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" },
{ 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,
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" },
{ 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
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 }
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
{ "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
}
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,
};
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,
{ "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
}
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 }
};
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 }
};
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,
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,
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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ 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 }
{ "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,
{ "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,
{ "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,
{ "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,
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;
}
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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,
{ "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
}
+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;
}
{ "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,
{ "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,
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,
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,
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 }},
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 }},
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 }},
{ &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*/
};
&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,
&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,
&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,
&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;
"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
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);
*
* 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>
#endif
#include <glib.h>
-#include <adler32.h>
#include <epan/packet.h>
#include <epan/conversation.h>
#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;
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)
{
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)
{
return offset;
}
-
-
-
static int
dissect_h245_statusDeterminationNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
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);
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)
{
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" },
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 }},
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[] =
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);
}
--- /dev/null
+/* 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 */
+