summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-h225.c
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/packet-h225.c
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/packet-h225.c')
-rw-r--r--epan/dissectors/packet-h225.c11911
1 files changed, 11911 insertions, 0 deletions
diff --git a/epan/dissectors/packet-h225.c b/epan/dissectors/packet-h225.c
new file mode 100644
index 00000000..5bd5f1f1
--- /dev/null
+++ b/epan/dissectors/packet-h225.c
@@ -0,0 +1,11911 @@
+/* Do not modify this file. Changes will be overwritten. */
+/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
+/* packet-h225.c */
+/* asn2wrs.py -L -p h225 -c ./h225.cnf -s ./packet-h225-template -D . -O ../.. H323-MESSAGES.asn */
+
+/* packet-h225.c
+ * Routines for h225 packet dissection
+ * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ * To quote the author of the previous H323/H225/H245 dissector:
+ * "This is a complete replacement of the previous limitied dissector
+ * that Ronnie was crazy enough to write by hand. It was a lot of time
+ * to hack it by hand, but it is incomplete and buggy and it is good when
+ * it will go away."
+ * Ronnie did a great job and all the VoIP users had made good use of it!
+ * Credit to Tomas Kukosa for developing the asn2wrs compiler.
+ *
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/conversation.h>
+#include <epan/proto_data.h>
+
+#include <epan/prefs.h>
+#include <epan/oids.h>
+#include <epan/next_tvb.h>
+#include <epan/asn1.h>
+#include <epan/t35.h>
+#include <epan/tap.h>
+#include <epan/stat_tap_ui.h>
+#include <epan/rtd_table.h>
+#include "packet-frame.h"
+#include "packet-tpkt.h"
+#include "packet-per.h"
+#include "packet-h225.h"
+#include "packet-h235.h"
+#include "packet-h245.h"
+#include "packet-h323.h"
+#include "packet-q931.h"
+#include "packet-tls.h"
+
+#define PNAME "H323-MESSAGES"
+#define PSNAME "H.225.0"
+#define PFNAME "h225"
+
+#define UDP_PORT_RAS_RANGE "1718-1719"
+#define TCP_PORT_CS 1720
+#define TLS_PORT_CS 1300
+
+void proto_register_h225(void);
+static h225_packet_info* create_h225_packet_info(packet_info *pinfo);
+static void ras_call_matching(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, h225_packet_info *pi);
+
+/* Item of ras request list*/
+typedef struct _h225ras_call_t {
+ guint32 requestSeqNum;
+ e_guid_t guid;
+ guint32 req_num; /* frame number request seen */
+ guint32 rsp_num; /* frame number response seen */
+ nstime_t req_time; /* arrival time of request */
+ gboolean responded; /* true, if request has been responded */
+ struct _h225ras_call_t *next_call; /* pointer to next ras request with same SequenceNumber and conversation handle */
+} h225ras_call_t;
+
+
+/* Item of ras-request key list*/
+typedef struct _h225ras_call_info_key {
+ guint reqSeqNum;
+ conversation_t *conversation;
+} h225ras_call_info_key;
+
+/* Global Memory Chunks for lists and Global hash tables*/
+
+static wmem_map_t *ras_calls[7] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
+
+/* functions, needed using ras-request and halfcall matching*/
+static h225ras_call_t * find_h225ras_call(h225ras_call_info_key *h225ras_call_key ,int category);
+static h225ras_call_t * new_h225ras_call(h225ras_call_info_key *h225ras_call_key, packet_info *pinfo, e_guid_t *guid, int category);
+static h225ras_call_t * append_h225ras_call(h225ras_call_t *prev_call, packet_info *pinfo, e_guid_t *guid, int category);
+
+
+static dissector_handle_t h225ras_handle;
+static dissector_handle_t data_handle;
+/* Subdissector tables */
+static dissector_table_t nsp_object_dissector_table;
+static dissector_table_t nsp_h221_dissector_table;
+static dissector_table_t tp_dissector_table;
+static dissector_table_t gef_name_dissector_table;
+static dissector_table_t gef_content_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 dissector_handle_t tp_handle;
+
+static next_tvb_list_t *h245_list;
+static next_tvb_list_t *tp_list;
+
+/* Initialize the protocol and registered fields */
+static int h225_tap = -1;
+static int proto_h225 = -1;
+
+static int hf_h221Manufacturer = -1;
+static int hf_h225_ras_req_frame = -1;
+static int hf_h225_ras_rsp_frame = -1;
+static int hf_h225_ras_dup = -1;
+static int hf_h225_ras_deltatime = -1;
+static int hf_h225_debug_dissector_try_string = -1;
+
+static int hf_h225_H323_UserInformation_PDU = -1; /* H323_UserInformation */
+static int hf_h225_h225_ExtendedAliasAddress_PDU = -1; /* ExtendedAliasAddress */
+static int hf_h225_RasMessage_PDU = -1; /* RasMessage */
+static int hf_h225_h323_uu_pdu = -1; /* H323_UU_PDU */
+static int hf_h225_user_data = -1; /* T_user_data */
+static int hf_h225_protocol_discriminator = -1; /* INTEGER_0_255 */
+static int hf_h225_user_information = -1; /* OCTET_STRING_SIZE_1_131 */
+static int hf_h225_h323_message_body = -1; /* T_h323_message_body */
+static int hf_h225_setup = -1; /* Setup_UUIE */
+static int hf_h225_callProceeding = -1; /* CallProceeding_UUIE */
+static int hf_h225_connect = -1; /* Connect_UUIE */
+static int hf_h225_alerting = -1; /* Alerting_UUIE */
+static int hf_h225_information = -1; /* Information_UUIE */
+static int hf_h225_releaseComplete = -1; /* ReleaseComplete_UUIE */
+static int hf_h225_facility = -1; /* Facility_UUIE */
+static int hf_h225_progress = -1; /* Progress_UUIE */
+static int hf_h225_empty_flg = -1; /* T_empty_flg */
+static int hf_h225_status = -1; /* Status_UUIE */
+static int hf_h225_statusInquiry = -1; /* StatusInquiry_UUIE */
+static int hf_h225_setupAcknowledge = -1; /* SetupAcknowledge_UUIE */
+static int hf_h225_notify = -1; /* Notify_UUIE */
+static int hf_h225_nonStandardData = -1; /* NonStandardParameter */
+static int hf_h225_h4501SupplementaryService = -1; /* T_h4501SupplementaryService */
+static int hf_h225_h4501SupplementaryService_item = -1; /* T_h4501SupplementaryService_item */
+static int hf_h225_h245Tunnelling = -1; /* T_h245Tunnelling */
+static int hf_h225_H245Control_item = -1; /* H245Control_item */
+static int hf_h225_h245Control = -1; /* H245Control */
+static int hf_h225_nonStandardControl = -1; /* SEQUENCE_OF_NonStandardParameter */
+static int hf_h225_nonStandardControl_item = -1; /* NonStandardParameter */
+static int hf_h225_callLinkage = -1; /* CallLinkage */
+static int hf_h225_tunnelledSignallingMessage = -1; /* T_tunnelledSignallingMessage */
+static int hf_h225_tunnelledProtocolID = -1; /* TunnelledProtocol */
+static int hf_h225_messageContent = -1; /* T_messageContent */
+static int hf_h225_messageContent_item = -1; /* T_messageContent_item */
+static int hf_h225_tunnellingRequired = -1; /* NULL */
+static int hf_h225_provisionalRespToH245Tunnelling = -1; /* NULL */
+static int hf_h225_stimulusControl = -1; /* StimulusControl */
+static int hf_h225_genericData = -1; /* SEQUENCE_OF_GenericData */
+static int hf_h225_genericData_item = -1; /* GenericData */
+static int hf_h225_nonStandard = -1; /* NonStandardParameter */
+static int hf_h225_isText = -1; /* NULL */
+static int hf_h225_h248Message = -1; /* OCTET_STRING */
+static int hf_h225_protocolIdentifier = -1; /* ProtocolIdentifier */
+static int hf_h225_uUIE_destinationInfo = -1; /* EndpointType */
+static int hf_h225_h245Address = -1; /* H245TransportAddress */
+static int hf_h225_callIdentifier = -1; /* CallIdentifier */
+static int hf_h225_h245SecurityMode = -1; /* H245Security */
+static int hf_h225_tokens = -1; /* SEQUENCE_OF_ClearToken */
+static int hf_h225_tokens_item = -1; /* ClearToken */
+static int hf_h225_cryptoTokens = -1; /* SEQUENCE_OF_CryptoH323Token */
+static int hf_h225_cryptoTokens_item = -1; /* CryptoH323Token */
+static int hf_h225_fastStart = -1; /* FastStart */
+static int hf_h225_multipleCalls = -1; /* BOOLEAN */
+static int hf_h225_maintainConnection = -1; /* BOOLEAN */
+static int hf_h225_alertingAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_alertingAddress_item = -1; /* AliasAddress */
+static int hf_h225_presentationIndicator = -1; /* PresentationIndicator */
+static int hf_h225_screeningIndicator = -1; /* ScreeningIndicator */
+static int hf_h225_fastConnectRefused = -1; /* NULL */
+static int hf_h225_serviceControl = -1; /* SEQUENCE_OF_ServiceControlSession */
+static int hf_h225_serviceControl_item = -1; /* ServiceControlSession */
+static int hf_h225_capacity = -1; /* CallCapacity */
+static int hf_h225_featureSet = -1; /* FeatureSet */
+static int hf_h225_displayName = -1; /* SEQUENCE_OF_DisplayName */
+static int hf_h225_displayName_item = -1; /* DisplayName */
+static int hf_h225_conferenceID = -1; /* ConferenceIdentifier */
+static int hf_h225_language = -1; /* Language */
+static int hf_h225_connectedAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_connectedAddress_item = -1; /* AliasAddress */
+static int hf_h225_circuitInfo = -1; /* CircuitInfo */
+static int hf_h225_releaseCompleteReason = -1; /* ReleaseCompleteReason */
+static int hf_h225_busyAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_busyAddress_item = -1; /* AliasAddress */
+static int hf_h225_destinationInfo = -1; /* EndpointType */
+static int hf_h225_noBandwidth = -1; /* NULL */
+static int hf_h225_gatekeeperResources = -1; /* NULL */
+static int hf_h225_unreachableDestination = -1; /* NULL */
+static int hf_h225_destinationRejection = -1; /* NULL */
+static int hf_h225_invalidRevision = -1; /* NULL */
+static int hf_h225_noPermission = -1; /* NULL */
+static int hf_h225_unreachableGatekeeper = -1; /* NULL */
+static int hf_h225_gatewayResources = -1; /* NULL */
+static int hf_h225_badFormatAddress = -1; /* NULL */
+static int hf_h225_adaptiveBusy = -1; /* NULL */
+static int hf_h225_inConf = -1; /* NULL */
+static int hf_h225_undefinedReason = -1; /* NULL */
+static int hf_h225_facilityCallDeflection = -1; /* NULL */
+static int hf_h225_securityDenied = -1; /* NULL */
+static int hf_h225_calledPartyNotRegistered = -1; /* NULL */
+static int hf_h225_callerNotRegistered = -1; /* NULL */
+static int hf_h225_newConnectionNeeded = -1; /* NULL */
+static int hf_h225_nonStandardReason = -1; /* NonStandardParameter */
+static int hf_h225_replaceWithConferenceInvite = -1; /* ConferenceIdentifier */
+static int hf_h225_genericDataReason = -1; /* NULL */
+static int hf_h225_neededFeatureNotSupported = -1; /* NULL */
+static int hf_h225_tunnelledSignallingRejected = -1; /* NULL */
+static int hf_h225_invalidCID = -1; /* NULL */
+static int hf_h225_rLC_securityError = -1; /* SecurityErrors */
+static int hf_h225_hopCountExceeded = -1; /* NULL */
+static int hf_h225_sourceAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_sourceAddress_item = -1; /* AliasAddress */
+static int hf_h225_setup_UUIE_sourceInfo = -1; /* EndpointType */
+static int hf_h225_destinationAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_destinationAddress_item = -1; /* AliasAddress */
+static int hf_h225_destCallSignalAddress = -1; /* TransportAddress */
+static int hf_h225_destExtraCallInfo = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_destExtraCallInfo_item = -1; /* AliasAddress */
+static int hf_h225_destExtraCRV = -1; /* SEQUENCE_OF_CallReferenceValue */
+static int hf_h225_destExtraCRV_item = -1; /* CallReferenceValue */
+static int hf_h225_activeMC = -1; /* BOOLEAN */
+static int hf_h225_conferenceGoal = -1; /* T_conferenceGoal */
+static int hf_h225_create = -1; /* NULL */
+static int hf_h225_join = -1; /* NULL */
+static int hf_h225_invite = -1; /* NULL */
+static int hf_h225_capability_negotiation = -1; /* NULL */
+static int hf_h225_callIndependentSupplementaryService = -1; /* NULL */
+static int hf_h225_callServices = -1; /* QseriesOptions */
+static int hf_h225_callType = -1; /* CallType */
+static int hf_h225_sourceCallSignalAddress = -1; /* TransportAddress */
+static int hf_h225_uUIE_remoteExtensionAddress = -1; /* AliasAddress */
+static int hf_h225_h245SecurityCapability = -1; /* SEQUENCE_OF_H245Security */
+static int hf_h225_h245SecurityCapability_item = -1; /* H245Security */
+static int hf_h225_FastStart_item = -1; /* FastStart_item */
+static int hf_h225_mediaWaitForConnect = -1; /* BOOLEAN */
+static int hf_h225_canOverlapSend = -1; /* BOOLEAN */
+static int hf_h225_endpointIdentifier = -1; /* EndpointIdentifier */
+static int hf_h225_connectionParameters = -1; /* T_connectionParameters */
+static int hf_h225_connectionType = -1; /* ScnConnectionType */
+static int hf_h225_numberOfScnConnections = -1; /* INTEGER_0_65535 */
+static int hf_h225_connectionAggregation = -1; /* ScnConnectionAggregation */
+static int hf_h225_Language_item = -1; /* IA5String_SIZE_1_32 */
+static int hf_h225_symmetricOperationRequired = -1; /* NULL */
+static int hf_h225_desiredProtocols = -1; /* SEQUENCE_OF_SupportedProtocols */
+static int hf_h225_desiredProtocols_item = -1; /* SupportedProtocols */
+static int hf_h225_neededFeatures = -1; /* SEQUENCE_OF_FeatureDescriptor */
+static int hf_h225_neededFeatures_item = -1; /* FeatureDescriptor */
+static int hf_h225_desiredFeatures = -1; /* SEQUENCE_OF_FeatureDescriptor */
+static int hf_h225_desiredFeatures_item = -1; /* FeatureDescriptor */
+static int hf_h225_supportedFeatures = -1; /* SEQUENCE_OF_FeatureDescriptor */
+static int hf_h225_supportedFeatures_item = -1; /* FeatureDescriptor */
+static int hf_h225_ParallelH245Control_item = -1; /* ParallelH245Control_item */
+static int hf_h225_parallelH245Control = -1; /* ParallelH245Control */
+static int hf_h225_additionalSourceAddresses = -1; /* SEQUENCE_OF_ExtendedAliasAddress */
+static int hf_h225_additionalSourceAddresses_item = -1; /* ExtendedAliasAddress */
+static int hf_h225_hopCount_1_31 = -1; /* INTEGER_1_31 */
+static int hf_h225_unknown = -1; /* NULL */
+static int hf_h225_bChannel = -1; /* NULL */
+static int hf_h225_hybrid2x64 = -1; /* NULL */
+static int hf_h225_hybrid384 = -1; /* NULL */
+static int hf_h225_hybrid1536 = -1; /* NULL */
+static int hf_h225_hybrid1920 = -1; /* NULL */
+static int hf_h225_multirate = -1; /* NULL */
+static int hf_h225_auto = -1; /* NULL */
+static int hf_h225_none = -1; /* NULL */
+static int hf_h225_h221 = -1; /* NULL */
+static int hf_h225_bonded_mode1 = -1; /* NULL */
+static int hf_h225_bonded_mode2 = -1; /* NULL */
+static int hf_h225_bonded_mode3 = -1; /* NULL */
+static int hf_h225_presentationAllowed = -1; /* NULL */
+static int hf_h225_presentationRestricted = -1; /* NULL */
+static int hf_h225_addressNotAvailable = -1; /* NULL */
+static int hf_h225_alternativeAddress = -1; /* TransportAddress */
+static int hf_h225_alternativeAliasAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_alternativeAliasAddress_item = -1; /* AliasAddress */
+static int hf_h225_facilityReason = -1; /* FacilityReason */
+static int hf_h225_conferences = -1; /* SEQUENCE_OF_ConferenceList */
+static int hf_h225_conferences_item = -1; /* ConferenceList */
+static int hf_h225_conferenceAlias = -1; /* AliasAddress */
+static int hf_h225_routeCallToGatekeeper = -1; /* NULL */
+static int hf_h225_callForwarded = -1; /* NULL */
+static int hf_h225_routeCallToMC = -1; /* NULL */
+static int hf_h225_conferenceListChoice = -1; /* NULL */
+static int hf_h225_startH245 = -1; /* NULL */
+static int hf_h225_noH245 = -1; /* NULL */
+static int hf_h225_newTokens = -1; /* NULL */
+static int hf_h225_featureSetUpdate = -1; /* NULL */
+static int hf_h225_forwardedElements = -1; /* NULL */
+static int hf_h225_transportedInformation = -1; /* NULL */
+static int hf_h225_h245IpAddress = -1; /* T_h245IpAddress */
+static int hf_h225_h245Ip = -1; /* T_h245Ip */
+static int hf_h225_h245IpPort = -1; /* T_h245IpPort */
+static int hf_h225_h245IpSourceRoute = -1; /* T_h245IpSourceRoute */
+static int hf_h225_ip = -1; /* OCTET_STRING_SIZE_4 */
+static int hf_h225_port = -1; /* INTEGER_0_65535 */
+static int hf_h225_h245Route = -1; /* T_h245Route */
+static int hf_h225_h245Route_item = -1; /* OCTET_STRING_SIZE_4 */
+static int hf_h225_h245Routing = -1; /* T_h245Routing */
+static int hf_h225_strict = -1; /* NULL */
+static int hf_h225_loose = -1; /* NULL */
+static int hf_h225_h245IpxAddress = -1; /* T_h245IpxAddress */
+static int hf_h225_node = -1; /* OCTET_STRING_SIZE_6 */
+static int hf_h225_netnum = -1; /* OCTET_STRING_SIZE_4 */
+static int hf_h225_h245IpxPort = -1; /* OCTET_STRING_SIZE_2 */
+static int hf_h225_h245Ip6Address = -1; /* T_h245Ip6Address */
+static int hf_h225_h245Ip6 = -1; /* T_h245Ip6 */
+static int hf_h225_h245Ip6port = -1; /* T_h245Ip6port */
+static int hf_h225_netBios = -1; /* OCTET_STRING_SIZE_16 */
+static int hf_h225_nsap = -1; /* OCTET_STRING_SIZE_1_20 */
+static int hf_h225_nonStandardAddress = -1; /* NonStandardParameter */
+static int hf_h225_ipAddress = -1; /* T_ipAddress */
+static int hf_h225_ipV4 = -1; /* IpV4 */
+static int hf_h225_ipV4_port = -1; /* INTEGER_0_65535 */
+static int hf_h225_ipSourceRoute = -1; /* T_ipSourceRoute */
+static int hf_h225_src_route_ipV4 = -1; /* OCTET_STRING_SIZE_4 */
+static int hf_h225_ipV4_src_port = -1; /* INTEGER_0_65535 */
+static int hf_h225_route = -1; /* T_route */
+static int hf_h225_route_item = -1; /* OCTET_STRING_SIZE_4 */
+static int hf_h225_routing = -1; /* T_routing */
+static int hf_h225_ipxAddress = -1; /* T_ipxAddress */
+static int hf_h225_ipx_port = -1; /* OCTET_STRING_SIZE_2 */
+static int hf_h225_ip6Address = -1; /* T_ip6Address */
+static int hf_h225_ipV6 = -1; /* OCTET_STRING_SIZE_16 */
+static int hf_h225_ipV6_port = -1; /* INTEGER_0_65535 */
+static int hf_h225_vendor = -1; /* VendorIdentifier */
+static int hf_h225_gatekeeper = -1; /* GatekeeperInfo */
+static int hf_h225_gateway = -1; /* GatewayInfo */
+static int hf_h225_mcu = -1; /* McuInfo */
+static int hf_h225_terminal = -1; /* TerminalInfo */
+static int hf_h225_mc = -1; /* BOOLEAN */
+static int hf_h225_undefinedNode = -1; /* BOOLEAN */
+static int hf_h225_set = -1; /* BIT_STRING_SIZE_32 */
+static int hf_h225_supportedTunnelledProtocols = -1; /* SEQUENCE_OF_TunnelledProtocol */
+static int hf_h225_supportedTunnelledProtocols_item = -1; /* TunnelledProtocol */
+static int hf_h225_protocol = -1; /* SEQUENCE_OF_SupportedProtocols */
+static int hf_h225_protocol_item = -1; /* SupportedProtocols */
+static int hf_h225_h310 = -1; /* H310Caps */
+static int hf_h225_h320 = -1; /* H320Caps */
+static int hf_h225_h321 = -1; /* H321Caps */
+static int hf_h225_h322 = -1; /* H322Caps */
+static int hf_h225_h323 = -1; /* H323Caps */
+static int hf_h225_h324 = -1; /* H324Caps */
+static int hf_h225_voice = -1; /* VoiceCaps */
+static int hf_h225_t120_only = -1; /* T120OnlyCaps */
+static int hf_h225_nonStandardProtocol = -1; /* NonStandardProtocol */
+static int hf_h225_t38FaxAnnexbOnly = -1; /* T38FaxAnnexbOnlyCaps */
+static int hf_h225_sip = -1; /* SIPCaps */
+static int hf_h225_dataRatesSupported = -1; /* SEQUENCE_OF_DataRate */
+static int hf_h225_dataRatesSupported_item = -1; /* DataRate */
+static int hf_h225_supportedPrefixes = -1; /* SEQUENCE_OF_SupportedPrefix */
+static int hf_h225_supportedPrefixes_item = -1; /* SupportedPrefix */
+static int hf_h225_t38FaxProtocol = -1; /* DataProtocolCapability */
+static int hf_h225_t38FaxProfile = -1; /* T38FaxProfile */
+static int hf_h225_vendorIdentifier_vendor = -1; /* H221NonStandard */
+static int hf_h225_productId = -1; /* OCTET_STRING_SIZE_1_256 */
+static int hf_h225_versionId = -1; /* OCTET_STRING_SIZE_1_256 */
+static int hf_h225_enterpriseNumber = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_t35CountryCode = -1; /* T_t35CountryCode */
+static int hf_h225_t35Extension = -1; /* T_t35Extension */
+static int hf_h225_manufacturerCode = -1; /* T_manufacturerCode */
+static int hf_h225_tunnelledProtocol_id = -1; /* TunnelledProtocol_id */
+static int hf_h225_tunnelledProtocolObjectID = -1; /* T_tunnelledProtocolObjectID */
+static int hf_h225_tunnelledProtocolAlternateID = -1; /* TunnelledProtocolAlternateIdentifier */
+static int hf_h225_subIdentifier = -1; /* IA5String_SIZE_1_64 */
+static int hf_h225_protocolType = -1; /* IA5String_SIZE_1_64 */
+static int hf_h225_protocolVariant = -1; /* IA5String_SIZE_1_64 */
+static int hf_h225_nonStandardIdentifier = -1; /* NonStandardIdentifier */
+static int hf_h225_nsp_data = -1; /* T_nsp_data */
+static int hf_h225_nsiOID = -1; /* T_nsiOID */
+static int hf_h225_h221NonStandard = -1; /* H221NonStandard */
+static int hf_h225_dialledDigits = -1; /* DialedDigits */
+static int hf_h225_h323_ID = -1; /* BMPString_SIZE_1_256 */
+static int hf_h225_url_ID = -1; /* IA5String_SIZE_1_512 */
+static int hf_h225_transportID = -1; /* TransportAddress */
+static int hf_h225_email_ID = -1; /* IA5String_SIZE_1_512 */
+static int hf_h225_partyNumber = -1; /* PartyNumber */
+static int hf_h225_mobileUIM = -1; /* MobileUIM */
+static int hf_h225_isupNumber = -1; /* IsupNumber */
+static int hf_h225_wildcard = -1; /* AliasAddress */
+static int hf_h225_range = -1; /* T_range */
+static int hf_h225_startOfRange = -1; /* PartyNumber */
+static int hf_h225_endOfRange = -1; /* PartyNumber */
+static int hf_h225_e164Number = -1; /* PublicPartyNumber */
+static int hf_h225_dataPartyNumber = -1; /* NumberDigits */
+static int hf_h225_telexPartyNumber = -1; /* NumberDigits */
+static int hf_h225_privateNumber = -1; /* PrivatePartyNumber */
+static int hf_h225_nationalStandardPartyNumber = -1; /* NumberDigits */
+static int hf_h225_publicTypeOfNumber = -1; /* PublicTypeOfNumber */
+static int hf_h225_publicNumberDigits = -1; /* NumberDigits */
+static int hf_h225_privateTypeOfNumber = -1; /* PrivateTypeOfNumber */
+static int hf_h225_privateNumberDigits = -1; /* NumberDigits */
+static int hf_h225_displayName_language = -1; /* IA5String */
+static int hf_h225_name = -1; /* BMPString_SIZE_1_80 */
+static int hf_h225_internationalNumber = -1; /* NULL */
+static int hf_h225_nationalNumber = -1; /* NULL */
+static int hf_h225_networkSpecificNumber = -1; /* NULL */
+static int hf_h225_subscriberNumber = -1; /* NULL */
+static int hf_h225_abbreviatedNumber = -1; /* NULL */
+static int hf_h225_level2RegionalNumber = -1; /* NULL */
+static int hf_h225_level1RegionalNumber = -1; /* NULL */
+static int hf_h225_pISNSpecificNumber = -1; /* NULL */
+static int hf_h225_localNumber = -1; /* NULL */
+static int hf_h225_ansi_41_uim = -1; /* ANSI_41_UIM */
+static int hf_h225_gsm_uim = -1; /* GSM_UIM */
+static int hf_h225_imsi = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_min = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_mdn = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_msisdn = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_esn = -1; /* TBCD_STRING_SIZE_16 */
+static int hf_h225_mscid = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_system_id = -1; /* T_system_id */
+static int hf_h225_sid = -1; /* TBCD_STRING_SIZE_1_4 */
+static int hf_h225_mid = -1; /* TBCD_STRING_SIZE_1_4 */
+static int hf_h225_systemMyTypeCode = -1; /* OCTET_STRING_SIZE_1 */
+static int hf_h225_systemAccessType = -1; /* OCTET_STRING_SIZE_1 */
+static int hf_h225_qualificationInformationCode = -1; /* OCTET_STRING_SIZE_1 */
+static int hf_h225_sesn = -1; /* TBCD_STRING_SIZE_16 */
+static int hf_h225_soc = -1; /* TBCD_STRING_SIZE_3_16 */
+static int hf_h225_tmsi = -1; /* OCTET_STRING_SIZE_1_4 */
+static int hf_h225_imei = -1; /* TBCD_STRING_SIZE_15_16 */
+static int hf_h225_hplmn = -1; /* TBCD_STRING_SIZE_1_4 */
+static int hf_h225_vplmn = -1; /* TBCD_STRING_SIZE_1_4 */
+static int hf_h225_isupE164Number = -1; /* IsupPublicPartyNumber */
+static int hf_h225_isupDataPartyNumber = -1; /* IsupDigits */
+static int hf_h225_isupTelexPartyNumber = -1; /* IsupDigits */
+static int hf_h225_isupPrivateNumber = -1; /* IsupPrivatePartyNumber */
+static int hf_h225_isupNationalStandardPartyNumber = -1; /* IsupDigits */
+static int hf_h225_natureOfAddress = -1; /* NatureOfAddress */
+static int hf_h225_address = -1; /* IsupDigits */
+static int hf_h225_routingNumberNationalFormat = -1; /* NULL */
+static int hf_h225_routingNumberNetworkSpecificFormat = -1; /* NULL */
+static int hf_h225_routingNumberWithCalledDirectoryNumber = -1; /* NULL */
+static int hf_h225_extAliasAddress = -1; /* AliasAddress */
+static int hf_h225_aliasAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_aliasAddress_item = -1; /* AliasAddress */
+static int hf_h225_callSignalAddress = -1; /* SEQUENCE_OF_TransportAddress */
+static int hf_h225_callSignalAddress_item = -1; /* TransportAddress */
+static int hf_h225_rasAddress = -1; /* SEQUENCE_OF_TransportAddress */
+static int hf_h225_rasAddress_item = -1; /* TransportAddress */
+static int hf_h225_endpointType = -1; /* EndpointType */
+static int hf_h225_priority = -1; /* INTEGER_0_127 */
+static int hf_h225_remoteExtensionAddress = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_ep_remoteExtensionAddress_item = -1; /* AliasAddress */
+static int hf_h225_alternateTransportAddresses = -1; /* AlternateTransportAddresses */
+static int hf_h225_annexE = -1; /* SEQUENCE_OF_TransportAddress */
+static int hf_h225_annexE_item = -1; /* TransportAddress */
+static int hf_h225_sctp = -1; /* SEQUENCE_OF_TransportAddress */
+static int hf_h225_sctp_item = -1; /* TransportAddress */
+static int hf_h225_tcp = -1; /* NULL */
+static int hf_h225_annexE_flg = -1; /* NULL */
+static int hf_h225_sctp_flg = -1; /* NULL */
+static int hf_h225_alternateGK_rasAddress = -1; /* TransportAddress */
+static int hf_h225_gatekeeperIdentifier = -1; /* GatekeeperIdentifier */
+static int hf_h225_needToRegister = -1; /* BOOLEAN */
+static int hf_h225_alternateGatekeeper = -1; /* SEQUENCE_OF_AlternateGK */
+static int hf_h225_alternateGatekeeper_item = -1; /* AlternateGK */
+static int hf_h225_altGKisPermanent = -1; /* BOOLEAN */
+static int hf_h225_default = -1; /* NULL */
+static int hf_h225_encryption = -1; /* SecurityServiceMode */
+static int hf_h225_authenticaton = -1; /* SecurityServiceMode */
+static int hf_h225_securityCapabilities_integrity = -1; /* SecurityServiceMode */
+static int hf_h225_securityWrongSyncTime = -1; /* NULL */
+static int hf_h225_securityReplay = -1; /* NULL */
+static int hf_h225_securityWrongGeneralID = -1; /* NULL */
+static int hf_h225_securityWrongSendersID = -1; /* NULL */
+static int hf_h225_securityIntegrityFailed = -1; /* NULL */
+static int hf_h225_securityWrongOID = -1; /* NULL */
+static int hf_h225_securityDHmismatch = -1; /* NULL */
+static int hf_h225_securityCertificateExpired = -1; /* NULL */
+static int hf_h225_securityCertificateDateInvalid = -1; /* NULL */
+static int hf_h225_securityCertificateRevoked = -1; /* NULL */
+static int hf_h225_securityCertificateNotReadable = -1; /* NULL */
+static int hf_h225_securityCertificateSignatureInvalid = -1; /* NULL */
+static int hf_h225_securityCertificateMissing = -1; /* NULL */
+static int hf_h225_securityCertificateIncomplete = -1; /* NULL */
+static int hf_h225_securityUnsupportedCertificateAlgOID = -1; /* NULL */
+static int hf_h225_securityUnknownCA = -1; /* NULL */
+static int hf_h225_noSecurity = -1; /* NULL */
+static int hf_h225_tls = -1; /* SecurityCapabilities */
+static int hf_h225_ipsec = -1; /* SecurityCapabilities */
+static int hf_h225_q932Full = -1; /* BOOLEAN */
+static int hf_h225_q951Full = -1; /* BOOLEAN */
+static int hf_h225_q952Full = -1; /* BOOLEAN */
+static int hf_h225_q953Full = -1; /* BOOLEAN */
+static int hf_h225_q955Full = -1; /* BOOLEAN */
+static int hf_h225_q956Full = -1; /* BOOLEAN */
+static int hf_h225_q957Full = -1; /* BOOLEAN */
+static int hf_h225_q954Info = -1; /* Q954Details */
+static int hf_h225_conferenceCalling = -1; /* BOOLEAN */
+static int hf_h225_threePartyService = -1; /* BOOLEAN */
+static int hf_h225_guid = -1; /* T_guid */
+static int hf_h225_isoAlgorithm = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_hMAC_MD5 = -1; /* NULL */
+static int hf_h225_hMAC_iso10118_2_s = -1; /* EncryptIntAlg */
+static int hf_h225_hMAC_iso10118_2_l = -1; /* EncryptIntAlg */
+static int hf_h225_hMAC_iso10118_3 = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_digSig = -1; /* NULL */
+static int hf_h225_iso9797 = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_nonIsoIM = -1; /* NonIsoIntegrityMechanism */
+static int hf_h225_algorithmOID = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_icv = -1; /* BIT_STRING */
+static int hf_h225_cryptoEPPwdHash = -1; /* T_cryptoEPPwdHash */
+static int hf_h225_alias = -1; /* AliasAddress */
+static int hf_h225_timeStamp = -1; /* TimeStamp */
+static int hf_h225_token = -1; /* HASHED */
+static int hf_h225_cryptoGKPwdHash = -1; /* T_cryptoGKPwdHash */
+static int hf_h225_gatekeeperId = -1; /* GatekeeperIdentifier */
+static int hf_h225_cryptoEPPwdEncr = -1; /* ENCRYPTED */
+static int hf_h225_cryptoGKPwdEncr = -1; /* ENCRYPTED */
+static int hf_h225_cryptoEPCert = -1; /* SIGNED */
+static int hf_h225_cryptoGKCert = -1; /* SIGNED */
+static int hf_h225_cryptoFastStart = -1; /* SIGNED */
+static int hf_h225_nestedcryptoToken = -1; /* CryptoToken */
+static int hf_h225_channelRate = -1; /* BandWidth */
+static int hf_h225_channelMultiplier = -1; /* INTEGER_1_256 */
+static int hf_h225_globalCallId = -1; /* GloballyUniqueID */
+static int hf_h225_threadId = -1; /* GloballyUniqueID */
+static int hf_h225_prefix = -1; /* AliasAddress */
+static int hf_h225_canReportCallCapacity = -1; /* BOOLEAN */
+static int hf_h225_capacityReportingSpecification_when = -1; /* CapacityReportingSpecification_when */
+static int hf_h225_callStart = -1; /* NULL */
+static int hf_h225_callEnd = -1; /* NULL */
+static int hf_h225_maximumCallCapacity = -1; /* CallCapacityInfo */
+static int hf_h225_currentCallCapacity = -1; /* CallCapacityInfo */
+static int hf_h225_voiceGwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_voiceGwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h310GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h310GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h320GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h320GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h321GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h321GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h322GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h322GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h323GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h323GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_h324GwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_h324GwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_t120OnlyGwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_t120OnlyGwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_t38FaxAnnexbOnlyGwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_t38FaxAnnexbOnlyGwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_terminalCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_terminalCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_mcuCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_mcuCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_sipGwCallsAvailable = -1; /* SEQUENCE_OF_CallsAvailable */
+static int hf_h225_sipGwCallsAvailable_item = -1; /* CallsAvailable */
+static int hf_h225_calls = -1; /* INTEGER_0_4294967295 */
+static int hf_h225_group_IA5String = -1; /* IA5String_SIZE_1_128 */
+static int hf_h225_carrier = -1; /* CarrierInfo */
+static int hf_h225_sourceCircuitID = -1; /* CircuitIdentifier */
+static int hf_h225_destinationCircuitID = -1; /* CircuitIdentifier */
+static int hf_h225_cic = -1; /* CicInfo */
+static int hf_h225_group = -1; /* GroupID */
+static int hf_h225_cic_2_4 = -1; /* T_cic_2_4 */
+static int hf_h225_cic_2_4_item = -1; /* OCTET_STRING_SIZE_2_4 */
+static int hf_h225_pointCode = -1; /* OCTET_STRING_SIZE_2_5 */
+static int hf_h225_member = -1; /* T_member */
+static int hf_h225_member_item = -1; /* INTEGER_0_65535 */
+static int hf_h225_carrierIdentificationCode = -1; /* OCTET_STRING_SIZE_3_4 */
+static int hf_h225_carrierName = -1; /* IA5String_SIZE_1_128 */
+static int hf_h225_url = -1; /* IA5String_SIZE_0_512 */
+static int hf_h225_signal = -1; /* H248SignalsDescriptor */
+static int hf_h225_callCreditServiceControl = -1; /* CallCreditServiceControl */
+static int hf_h225_sessionId_0_255 = -1; /* INTEGER_0_255 */
+static int hf_h225_contents = -1; /* ServiceControlDescriptor */
+static int hf_h225_reason = -1; /* ServiceControlSession_reason */
+static int hf_h225_open = -1; /* NULL */
+static int hf_h225_refresh = -1; /* NULL */
+static int hf_h225_close = -1; /* NULL */
+static int hf_h225_nonStandardUsageTypes = -1; /* SEQUENCE_OF_NonStandardParameter */
+static int hf_h225_nonStandardUsageTypes_item = -1; /* NonStandardParameter */
+static int hf_h225_startTime = -1; /* NULL */
+static int hf_h225_endTime_flg = -1; /* NULL */
+static int hf_h225_terminationCause_flg = -1; /* NULL */
+static int hf_h225_when = -1; /* RasUsageSpecification_when */
+static int hf_h225_start = -1; /* NULL */
+static int hf_h225_end = -1; /* NULL */
+static int hf_h225_inIrr = -1; /* NULL */
+static int hf_h225_ras_callStartingPoint = -1; /* RasUsageSpecificationcallStartingPoint */
+static int hf_h225_alerting_flg = -1; /* NULL */
+static int hf_h225_connect_flg = -1; /* NULL */
+static int hf_h225_required = -1; /* RasUsageInfoTypes */
+static int hf_h225_nonStandardUsageFields = -1; /* SEQUENCE_OF_NonStandardParameter */
+static int hf_h225_nonStandardUsageFields_item = -1; /* NonStandardParameter */
+static int hf_h225_alertingTime = -1; /* TimeStamp */
+static int hf_h225_connectTime = -1; /* TimeStamp */
+static int hf_h225_endTime = -1; /* TimeStamp */
+static int hf_h225_releaseCompleteCauseIE = -1; /* OCTET_STRING_SIZE_2_32 */
+static int hf_h225_sender = -1; /* BOOLEAN */
+static int hf_h225_multicast = -1; /* BOOLEAN */
+static int hf_h225_bandwidth = -1; /* BandWidth */
+static int hf_h225_rtcpAddresses = -1; /* TransportChannelInfo */
+static int hf_h225_canDisplayAmountString = -1; /* BOOLEAN */
+static int hf_h225_canEnforceDurationLimit = -1; /* BOOLEAN */
+static int hf_h225_amountString = -1; /* BMPString_SIZE_1_512 */
+static int hf_h225_billingMode = -1; /* T_billingMode */
+static int hf_h225_credit = -1; /* NULL */
+static int hf_h225_debit = -1; /* NULL */
+static int hf_h225_callDurationLimit = -1; /* INTEGER_1_4294967295 */
+static int hf_h225_enforceCallDurationLimit = -1; /* BOOLEAN */
+static int hf_h225_callStartingPoint = -1; /* CallCreditServiceControl_callStartingPoint */
+static int hf_h225_id = -1; /* GenericIdentifier */
+static int hf_h225_parameters = -1; /* SEQUENCE_SIZE_1_512_OF_EnumeratedParameter */
+static int hf_h225_parameters_item = -1; /* EnumeratedParameter */
+static int hf_h225_standard = -1; /* T_standard */
+static int hf_h225_oid = -1; /* T_oid */
+static int hf_h225_genericIdentifier_nonStandard = -1; /* GloballyUniqueID */
+static int hf_h225_content = -1; /* Content */
+static int hf_h225_raw = -1; /* T_raw */
+static int hf_h225_text = -1; /* IA5String */
+static int hf_h225_unicode = -1; /* BMPString */
+static int hf_h225_bool = -1; /* BOOLEAN */
+static int hf_h225_number8 = -1; /* INTEGER_0_255 */
+static int hf_h225_number16 = -1; /* INTEGER_0_65535 */
+static int hf_h225_number32 = -1; /* INTEGER_0_4294967295 */
+static int hf_h225_transport = -1; /* TransportAddress */
+static int hf_h225_compound = -1; /* SEQUENCE_SIZE_1_512_OF_EnumeratedParameter */
+static int hf_h225_compound_item = -1; /* EnumeratedParameter */
+static int hf_h225_nested = -1; /* SEQUENCE_SIZE_1_16_OF_GenericData */
+static int hf_h225_nested_item = -1; /* GenericData */
+static int hf_h225_replacementFeatureSet = -1; /* BOOLEAN */
+static int hf_h225_sendAddress = -1; /* TransportAddress */
+static int hf_h225_recvAddress = -1; /* TransportAddress */
+static int hf_h225_rtpAddress = -1; /* TransportChannelInfo */
+static int hf_h225_rtcpAddress = -1; /* TransportChannelInfo */
+static int hf_h225_cname = -1; /* PrintableString */
+static int hf_h225_ssrc = -1; /* INTEGER_1_4294967295 */
+static int hf_h225_sessionId = -1; /* INTEGER_1_255 */
+static int hf_h225_associatedSessionIds = -1; /* T_associatedSessionIds */
+static int hf_h225_associatedSessionIds_item = -1; /* INTEGER_1_255 */
+static int hf_h225_multicast_flg = -1; /* NULL */
+static int hf_h225_gatekeeperBased = -1; /* NULL */
+static int hf_h225_endpointBased = -1; /* NULL */
+static int hf_h225_gatekeeperRequest = -1; /* GatekeeperRequest */
+static int hf_h225_gatekeeperConfirm = -1; /* GatekeeperConfirm */
+static int hf_h225_gatekeeperReject = -1; /* GatekeeperReject */
+static int hf_h225_registrationRequest = -1; /* RegistrationRequest */
+static int hf_h225_registrationConfirm = -1; /* RegistrationConfirm */
+static int hf_h225_registrationReject = -1; /* RegistrationReject */
+static int hf_h225_unregistrationRequest = -1; /* UnregistrationRequest */
+static int hf_h225_unregistrationConfirm = -1; /* UnregistrationConfirm */
+static int hf_h225_unregistrationReject = -1; /* UnregistrationReject */
+static int hf_h225_admissionRequest = -1; /* AdmissionRequest */
+static int hf_h225_admissionConfirm = -1; /* AdmissionConfirm */
+static int hf_h225_admissionReject = -1; /* AdmissionReject */
+static int hf_h225_bandwidthRequest = -1; /* BandwidthRequest */
+static int hf_h225_bandwidthConfirm = -1; /* BandwidthConfirm */
+static int hf_h225_bandwidthReject = -1; /* BandwidthReject */
+static int hf_h225_disengageRequest = -1; /* DisengageRequest */
+static int hf_h225_disengageConfirm = -1; /* DisengageConfirm */
+static int hf_h225_disengageReject = -1; /* DisengageReject */
+static int hf_h225_locationRequest = -1; /* LocationRequest */
+static int hf_h225_locationConfirm = -1; /* LocationConfirm */
+static int hf_h225_locationReject = -1; /* LocationReject */
+static int hf_h225_infoRequest = -1; /* InfoRequest */
+static int hf_h225_infoRequestResponse = -1; /* InfoRequestResponse */
+static int hf_h225_nonStandardMessage = -1; /* NonStandardMessage */
+static int hf_h225_unknownMessageResponse = -1; /* UnknownMessageResponse */
+static int hf_h225_requestInProgress = -1; /* RequestInProgress */
+static int hf_h225_resourcesAvailableIndicate = -1; /* ResourcesAvailableIndicate */
+static int hf_h225_resourcesAvailableConfirm = -1; /* ResourcesAvailableConfirm */
+static int hf_h225_infoRequestAck = -1; /* InfoRequestAck */
+static int hf_h225_infoRequestNak = -1; /* InfoRequestNak */
+static int hf_h225_serviceControlIndication = -1; /* ServiceControlIndication */
+static int hf_h225_serviceControlResponse = -1; /* ServiceControlResponse */
+static int hf_h225_admissionConfirmSequence = -1; /* SEQUENCE_OF_AdmissionConfirm */
+static int hf_h225_admissionConfirmSequence_item = -1; /* AdmissionConfirm */
+static int hf_h225_requestSeqNum = -1; /* RequestSeqNum */
+static int hf_h225_gatekeeperRequest_rasAddress = -1; /* TransportAddress */
+static int hf_h225_endpointAlias = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_endpointAlias_item = -1; /* AliasAddress */
+static int hf_h225_alternateEndpoints = -1; /* SEQUENCE_OF_Endpoint */
+static int hf_h225_alternateEndpoints_item = -1; /* Endpoint */
+static int hf_h225_authenticationCapability = -1; /* SEQUENCE_OF_AuthenticationMechanism */
+static int hf_h225_authenticationCapability_item = -1; /* AuthenticationMechanism */
+static int hf_h225_algorithmOIDs = -1; /* T_algorithmOIDs */
+static int hf_h225_algorithmOIDs_item = -1; /* OBJECT_IDENTIFIER */
+static int hf_h225_integrity = -1; /* SEQUENCE_OF_IntegrityMechanism */
+static int hf_h225_integrity_item = -1; /* IntegrityMechanism */
+static int hf_h225_integrityCheckValue = -1; /* ICV */
+static int hf_h225_supportsAltGK = -1; /* NULL */
+static int hf_h225_supportsAssignedGK = -1; /* BOOLEAN */
+static int hf_h225_assignedGatekeeper = -1; /* AlternateGK */
+static int hf_h225_gatekeeperConfirm_rasAddress = -1; /* TransportAddress */
+static int hf_h225_authenticationMode = -1; /* AuthenticationMechanism */
+static int hf_h225_rehomingModel = -1; /* RehomingModel */
+static int hf_h225_gatekeeperRejectReason = -1; /* GatekeeperRejectReason */
+static int hf_h225_altGKInfo = -1; /* AltGKInfo */
+static int hf_h225_resourceUnavailable = -1; /* NULL */
+static int hf_h225_terminalExcluded = -1; /* NULL */
+static int hf_h225_securityDenial = -1; /* NULL */
+static int hf_h225_gkRej_securityError = -1; /* SecurityErrors */
+static int hf_h225_discoveryComplete = -1; /* BOOLEAN */
+static int hf_h225_terminalType = -1; /* EndpointType */
+static int hf_h225_terminalAlias = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_terminalAlias_item = -1; /* AliasAddress */
+static int hf_h225_endpointVendor = -1; /* VendorIdentifier */
+static int hf_h225_timeToLive = -1; /* TimeToLive */
+static int hf_h225_keepAlive = -1; /* BOOLEAN */
+static int hf_h225_willSupplyUUIEs = -1; /* BOOLEAN */
+static int hf_h225_additiveRegistration = -1; /* NULL */
+static int hf_h225_terminalAliasPattern = -1; /* SEQUENCE_OF_AddressPattern */
+static int hf_h225_terminalAliasPattern_item = -1; /* AddressPattern */
+static int hf_h225_usageReportingCapability = -1; /* RasUsageInfoTypes */
+static int hf_h225_supportedH248Packages = -1; /* SEQUENCE_OF_H248PackagesDescriptor */
+static int hf_h225_supportedH248Packages_item = -1; /* H248PackagesDescriptor */
+static int hf_h225_callCreditCapability = -1; /* CallCreditCapability */
+static int hf_h225_capacityReportingCapability = -1; /* CapacityReportingCapability */
+static int hf_h225_restart = -1; /* NULL */
+static int hf_h225_supportsACFSequences = -1; /* NULL */
+static int hf_h225_transportQOS = -1; /* TransportQOS */
+static int hf_h225_willRespondToIRR = -1; /* BOOLEAN */
+static int hf_h225_preGrantedARQ = -1; /* T_preGrantedARQ */
+static int hf_h225_makeCall = -1; /* BOOLEAN */
+static int hf_h225_useGKCallSignalAddressToMakeCall = -1; /* BOOLEAN */
+static int hf_h225_answerCall = -1; /* BOOLEAN */
+static int hf_h225_useGKCallSignalAddressToAnswer = -1; /* BOOLEAN */
+static int hf_h225_irrFrequencyInCall = -1; /* INTEGER_1_65535 */
+static int hf_h225_totalBandwidthRestriction = -1; /* BandWidth */
+static int hf_h225_useSpecifiedTransport = -1; /* UseSpecifiedTransport */
+static int hf_h225_supportsAdditiveRegistration = -1; /* NULL */
+static int hf_h225_usageSpec = -1; /* SEQUENCE_OF_RasUsageSpecification */
+static int hf_h225_usageSpec_item = -1; /* RasUsageSpecification */
+static int hf_h225_featureServerAlias = -1; /* AliasAddress */
+static int hf_h225_capacityReportingSpec = -1; /* CapacityReportingSpecification */
+static int hf_h225_registrationRejectReason = -1; /* RegistrationRejectReason */
+static int hf_h225_discoveryRequired = -1; /* NULL */
+static int hf_h225_invalidCallSignalAddress = -1; /* NULL */
+static int hf_h225_invalidRASAddress = -1; /* NULL */
+static int hf_h225_duplicateAlias = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_duplicateAlias_item = -1; /* AliasAddress */
+static int hf_h225_invalidTerminalType = -1; /* NULL */
+static int hf_h225_transportNotSupported = -1; /* NULL */
+static int hf_h225_transportQOSNotSupported = -1; /* NULL */
+static int hf_h225_invalidAlias = -1; /* NULL */
+static int hf_h225_fullRegistrationRequired = -1; /* NULL */
+static int hf_h225_additiveRegistrationNotSupported = -1; /* NULL */
+static int hf_h225_invalidTerminalAliases = -1; /* T_invalidTerminalAliases */
+static int hf_h225_reg_securityError = -1; /* SecurityErrors */
+static int hf_h225_registerWithAssignedGK = -1; /* NULL */
+static int hf_h225_unregRequestReason = -1; /* UnregRequestReason */
+static int hf_h225_endpointAliasPattern = -1; /* SEQUENCE_OF_AddressPattern */
+static int hf_h225_endpointAliasPattern_item = -1; /* AddressPattern */
+static int hf_h225_reregistrationRequired = -1; /* NULL */
+static int hf_h225_ttlExpired = -1; /* NULL */
+static int hf_h225_maintenance = -1; /* NULL */
+static int hf_h225_securityError = -1; /* SecurityErrors2 */
+static int hf_h225_unregRejectReason = -1; /* UnregRejectReason */
+static int hf_h225_notCurrentlyRegistered = -1; /* NULL */
+static int hf_h225_callInProgress = -1; /* NULL */
+static int hf_h225_permissionDenied = -1; /* NULL */
+static int hf_h225_callModel = -1; /* CallModel */
+static int hf_h225_DestinationInfo_item = -1; /* DestinationInfo_item */
+static int hf_h225_destinationInfo_01 = -1; /* DestinationInfo */
+static int hf_h225_srcInfo = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_srcInfo_item = -1; /* AliasAddress */
+static int hf_h225_srcCallSignalAddress = -1; /* TransportAddress */
+static int hf_h225_bandWidth = -1; /* BandWidth */
+static int hf_h225_callReferenceValue = -1; /* CallReferenceValue */
+static int hf_h225_canMapAlias = -1; /* BOOLEAN */
+static int hf_h225_srcAlternatives = -1; /* SEQUENCE_OF_Endpoint */
+static int hf_h225_srcAlternatives_item = -1; /* Endpoint */
+static int hf_h225_destAlternatives = -1; /* SEQUENCE_OF_Endpoint */
+static int hf_h225_destAlternatives_item = -1; /* Endpoint */
+static int hf_h225_gatewayDataRate = -1; /* DataRate */
+static int hf_h225_desiredTunnelledProtocol = -1; /* TunnelledProtocol */
+static int hf_h225_canMapSrcAlias = -1; /* BOOLEAN */
+static int hf_h225_pointToPoint = -1; /* NULL */
+static int hf_h225_oneToN = -1; /* NULL */
+static int hf_h225_nToOne = -1; /* NULL */
+static int hf_h225_nToN = -1; /* NULL */
+static int hf_h225_direct = -1; /* NULL */
+static int hf_h225_gatekeeperRouted = -1; /* NULL */
+static int hf_h225_endpointControlled = -1; /* NULL */
+static int hf_h225_gatekeeperControlled = -1; /* NULL */
+static int hf_h225_noControl = -1; /* NULL */
+static int hf_h225_qOSCapabilities = -1; /* SEQUENCE_SIZE_1_256_OF_QOSCapability */
+static int hf_h225_qOSCapabilities_item = -1; /* QOSCapability */
+static int hf_h225_irrFrequency = -1; /* INTEGER_1_65535 */
+static int hf_h225_destinationType = -1; /* EndpointType */
+static int hf_h225_ac_remoteExtensionAddress_item = -1; /* AliasAddress */
+static int hf_h225_uuiesRequested = -1; /* UUIEsRequested */
+static int hf_h225_supportedProtocols = -1; /* SEQUENCE_OF_SupportedProtocols */
+static int hf_h225_supportedProtocols_item = -1; /* SupportedProtocols */
+static int hf_h225_modifiedSrcInfo = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_modifiedSrcInfo_item = -1; /* AliasAddress */
+static int hf_h225_setup_bool = -1; /* BOOLEAN */
+static int hf_h225_callProceeding_flg = -1; /* BOOLEAN */
+static int hf_h225_connect_bool = -1; /* BOOLEAN */
+static int hf_h225_alerting_bool = -1; /* BOOLEAN */
+static int hf_h225_information_bool = -1; /* BOOLEAN */
+static int hf_h225_releaseComplete_bool = -1; /* BOOLEAN */
+static int hf_h225_facility_bool = -1; /* BOOLEAN */
+static int hf_h225_progress_bool = -1; /* BOOLEAN */
+static int hf_h225_empty = -1; /* BOOLEAN */
+static int hf_h225_status_bool = -1; /* BOOLEAN */
+static int hf_h225_statusInquiry_bool = -1; /* BOOLEAN */
+static int hf_h225_setupAcknowledge_bool = -1; /* BOOLEAN */
+static int hf_h225_notify_bool = -1; /* BOOLEAN */
+static int hf_h225_rejectReason = -1; /* AdmissionRejectReason */
+static int hf_h225_invalidPermission = -1; /* NULL */
+static int hf_h225_requestDenied = -1; /* NULL */
+static int hf_h225_invalidEndpointIdentifier = -1; /* NULL */
+static int hf_h225_qosControlNotSupported = -1; /* NULL */
+static int hf_h225_incompleteAddress = -1; /* NULL */
+static int hf_h225_aliasesInconsistent = -1; /* NULL */
+static int hf_h225_routeCallToSCN = -1; /* SEQUENCE_OF_PartyNumber */
+static int hf_h225_routeCallToSCN_item = -1; /* PartyNumber */
+static int hf_h225_exceedsCallCapacity = -1; /* NULL */
+static int hf_h225_collectDestination = -1; /* NULL */
+static int hf_h225_collectPIN = -1; /* NULL */
+static int hf_h225_noRouteToDestination = -1; /* NULL */
+static int hf_h225_unallocatedNumber = -1; /* NULL */
+static int hf_h225_answeredCall = -1; /* BOOLEAN */
+static int hf_h225_usageInformation = -1; /* RasUsageInformation */
+static int hf_h225_bandwidthDetails = -1; /* SEQUENCE_OF_BandwidthDetails */
+static int hf_h225_bandwidthDetails_item = -1; /* BandwidthDetails */
+static int hf_h225_bandRejectReason = -1; /* BandRejectReason */
+static int hf_h225_allowedBandWidth = -1; /* BandWidth */
+static int hf_h225_notBound = -1; /* NULL */
+static int hf_h225_invalidConferenceID = -1; /* NULL */
+static int hf_h225_insufficientResources = -1; /* NULL */
+static int hf_h225_replyAddress = -1; /* TransportAddress */
+static int hf_h225_sourceInfo = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_sourceInfo_item = -1; /* AliasAddress */
+static int hf_h225_hopCount = -1; /* INTEGER_1_255 */
+static int hf_h225_sourceEndpointInfo = -1; /* SEQUENCE_OF_AliasAddress */
+static int hf_h225_sourceEndpointInfo_item = -1; /* AliasAddress */
+static int hf_h225_locationConfirm_callSignalAddress = -1; /* TransportAddress */
+static int hf_h225_locationConfirm_rasAddress = -1; /* TransportAddress */
+static int hf_h225_remoteExtensionAddress_item = -1; /* AliasAddress */
+static int hf_h225_locationRejectReason = -1; /* LocationRejectReason */
+static int hf_h225_notRegistered = -1; /* NULL */
+static int hf_h225_routeCalltoSCN = -1; /* SEQUENCE_OF_PartyNumber */
+static int hf_h225_routeCalltoSCN_item = -1; /* PartyNumber */
+static int hf_h225_disengageReason = -1; /* DisengageReason */
+static int hf_h225_terminationCause = -1; /* CallTerminationCause */
+static int hf_h225_forcedDrop = -1; /* NULL */
+static int hf_h225_normalDrop = -1; /* NULL */
+static int hf_h225_disengageRejectReason = -1; /* DisengageRejectReason */
+static int hf_h225_requestToDropOther = -1; /* NULL */
+static int hf_h225_usageInfoRequested = -1; /* RasUsageInfoTypes */
+static int hf_h225_segmentedResponseSupported = -1; /* NULL */
+static int hf_h225_nextSegmentRequested = -1; /* INTEGER_0_65535 */
+static int hf_h225_capacityInfoRequested = -1; /* NULL */
+static int hf_h225_infoRequestResponse_rasAddress = -1; /* TransportAddress */
+static int hf_h225_perCallInfo = -1; /* T_perCallInfo */
+static int hf_h225_perCallInfo_item = -1; /* T_perCallInfo_item */
+static int hf_h225_originator = -1; /* BOOLEAN */
+static int hf_h225_audio = -1; /* SEQUENCE_OF_RTPSession */
+static int hf_h225_audio_item = -1; /* RTPSession */
+static int hf_h225_video = -1; /* SEQUENCE_OF_RTPSession */
+static int hf_h225_video_item = -1; /* RTPSession */
+static int hf_h225_data = -1; /* SEQUENCE_OF_TransportChannelInfo */
+static int hf_h225_data_item = -1; /* TransportChannelInfo */
+static int hf_h225_h245 = -1; /* TransportChannelInfo */
+static int hf_h225_callSignalling = -1; /* TransportChannelInfo */
+static int hf_h225_substituteConfIDs = -1; /* SEQUENCE_OF_ConferenceIdentifier */
+static int hf_h225_substituteConfIDs_item = -1; /* ConferenceIdentifier */
+static int hf_h225_pdu = -1; /* T_pdu */
+static int hf_h225_pdu_item = -1; /* T_pdu_item */
+static int hf_h225_h323pdu = -1; /* H323_UU_PDU */
+static int hf_h225_sent = -1; /* BOOLEAN */
+static int hf_h225_needResponse = -1; /* BOOLEAN */
+static int hf_h225_irrStatus = -1; /* InfoRequestResponseStatus */
+static int hf_h225_unsolicited = -1; /* BOOLEAN */
+static int hf_h225_complete = -1; /* NULL */
+static int hf_h225_incomplete = -1; /* NULL */
+static int hf_h225_segment = -1; /* INTEGER_0_65535 */
+static int hf_h225_invalidCall = -1; /* NULL */
+static int hf_h225_nakReason = -1; /* InfoRequestNakReason */
+static int hf_h225_messageNotUnderstood = -1; /* OCTET_STRING */
+static int hf_h225_delay = -1; /* INTEGER_1_65535 */
+static int hf_h225_protocols = -1; /* SEQUENCE_OF_SupportedProtocols */
+static int hf_h225_protocols_item = -1; /* SupportedProtocols */
+static int hf_h225_almostOutOfResources = -1; /* BOOLEAN */
+static int hf_h225_callSpecific = -1; /* T_callSpecific */
+static int hf_h225_result = -1; /* T_result */
+static int hf_h225_started = -1; /* NULL */
+static int hf_h225_failed = -1; /* NULL */
+static int hf_h225_stopped = -1; /* NULL */
+static int hf_h225_notAvailable = -1; /* NULL */
+
+/* Initialize the subtree pointers */
+static gint ett_h225 = -1;
+static gint ett_h225_H323_UserInformation = -1;
+static gint ett_h225_T_user_data = -1;
+static gint ett_h225_H323_UU_PDU = -1;
+static gint ett_h225_T_h323_message_body = -1;
+static gint ett_h225_T_h4501SupplementaryService = -1;
+static gint ett_h225_H245Control = -1;
+static gint ett_h225_SEQUENCE_OF_NonStandardParameter = -1;
+static gint ett_h225_T_tunnelledSignallingMessage = -1;
+static gint ett_h225_T_messageContent = -1;
+static gint ett_h225_SEQUENCE_OF_GenericData = -1;
+static gint ett_h225_StimulusControl = -1;
+static gint ett_h225_Alerting_UUIE = -1;
+static gint ett_h225_SEQUENCE_OF_ClearToken = -1;
+static gint ett_h225_SEQUENCE_OF_CryptoH323Token = -1;
+static gint ett_h225_SEQUENCE_OF_AliasAddress = -1;
+static gint ett_h225_SEQUENCE_OF_ServiceControlSession = -1;
+static gint ett_h225_SEQUENCE_OF_DisplayName = -1;
+static gint ett_h225_CallProceeding_UUIE = -1;
+static gint ett_h225_Connect_UUIE = -1;
+static gint ett_h225_Information_UUIE = -1;
+static gint ett_h225_ReleaseComplete_UUIE = -1;
+static gint ett_h225_ReleaseCompleteReason = -1;
+static gint ett_h225_Setup_UUIE = -1;
+static gint ett_h225_SEQUENCE_OF_CallReferenceValue = -1;
+static gint ett_h225_T_conferenceGoal = -1;
+static gint ett_h225_SEQUENCE_OF_H245Security = -1;
+static gint ett_h225_FastStart = -1;
+static gint ett_h225_T_connectionParameters = -1;
+static gint ett_h225_Language = -1;
+static gint ett_h225_SEQUENCE_OF_SupportedProtocols = -1;
+static gint ett_h225_SEQUENCE_OF_FeatureDescriptor = -1;
+static gint ett_h225_ParallelH245Control = -1;
+static gint ett_h225_SEQUENCE_OF_ExtendedAliasAddress = -1;
+static gint ett_h225_ScnConnectionType = -1;
+static gint ett_h225_ScnConnectionAggregation = -1;
+static gint ett_h225_PresentationIndicator = -1;
+static gint ett_h225_Facility_UUIE = -1;
+static gint ett_h225_SEQUENCE_OF_ConferenceList = -1;
+static gint ett_h225_ConferenceList = -1;
+static gint ett_h225_FacilityReason = -1;
+static gint ett_h225_Progress_UUIE = -1;
+static gint ett_h225_TransportAddress = -1;
+static gint ett_h225_H245TransportAddress = -1;
+static gint ett_h225_T_h245IpAddress = -1;
+static gint ett_h225_T_h245IpSourceRoute = -1;
+static gint ett_h225_T_h245Route = -1;
+static gint ett_h225_T_h245Routing = -1;
+static gint ett_h225_T_h245IpxAddress = -1;
+static gint ett_h225_T_h245Ip6Address = -1;
+static gint ett_h225_T_ipAddress = -1;
+static gint ett_h225_T_ipSourceRoute = -1;
+static gint ett_h225_T_route = -1;
+static gint ett_h225_T_routing = -1;
+static gint ett_h225_T_ipxAddress = -1;
+static gint ett_h225_T_ip6Address = -1;
+static gint ett_h225_Status_UUIE = -1;
+static gint ett_h225_StatusInquiry_UUIE = -1;
+static gint ett_h225_SetupAcknowledge_UUIE = -1;
+static gint ett_h225_Notify_UUIE = -1;
+static gint ett_h225_EndpointType = -1;
+static gint ett_h225_SEQUENCE_OF_TunnelledProtocol = -1;
+static gint ett_h225_GatewayInfo = -1;
+static gint ett_h225_SupportedProtocols = -1;
+static gint ett_h225_H310Caps = -1;
+static gint ett_h225_SEQUENCE_OF_DataRate = -1;
+static gint ett_h225_SEQUENCE_OF_SupportedPrefix = -1;
+static gint ett_h225_H320Caps = -1;
+static gint ett_h225_H321Caps = -1;
+static gint ett_h225_H322Caps = -1;
+static gint ett_h225_H323Caps = -1;
+static gint ett_h225_H324Caps = -1;
+static gint ett_h225_VoiceCaps = -1;
+static gint ett_h225_T120OnlyCaps = -1;
+static gint ett_h225_NonStandardProtocol = -1;
+static gint ett_h225_T38FaxAnnexbOnlyCaps = -1;
+static gint ett_h225_SIPCaps = -1;
+static gint ett_h225_McuInfo = -1;
+static gint ett_h225_TerminalInfo = -1;
+static gint ett_h225_GatekeeperInfo = -1;
+static gint ett_h225_VendorIdentifier = -1;
+static gint ett_h225_H221NonStandard = -1;
+static gint ett_h225_TunnelledProtocol = -1;
+static gint ett_h225_TunnelledProtocol_id = -1;
+static gint ett_h225_TunnelledProtocolAlternateIdentifier = -1;
+static gint ett_h225_NonStandardParameter = -1;
+static gint ett_h225_NonStandardIdentifier = -1;
+static gint ett_h225_AliasAddress = -1;
+static gint ett_h225_AddressPattern = -1;
+static gint ett_h225_T_range = -1;
+static gint ett_h225_PartyNumber = -1;
+static gint ett_h225_PublicPartyNumber = -1;
+static gint ett_h225_PrivatePartyNumber = -1;
+static gint ett_h225_DisplayName = -1;
+static gint ett_h225_PublicTypeOfNumber = -1;
+static gint ett_h225_PrivateTypeOfNumber = -1;
+static gint ett_h225_MobileUIM = -1;
+static gint ett_h225_ANSI_41_UIM = -1;
+static gint ett_h225_T_system_id = -1;
+static gint ett_h225_GSM_UIM = -1;
+static gint ett_h225_IsupNumber = -1;
+static gint ett_h225_IsupPublicPartyNumber = -1;
+static gint ett_h225_IsupPrivatePartyNumber = -1;
+static gint ett_h225_NatureOfAddress = -1;
+static gint ett_h225_ExtendedAliasAddress = -1;
+static gint ett_h225_Endpoint = -1;
+static gint ett_h225_SEQUENCE_OF_TransportAddress = -1;
+static gint ett_h225_AlternateTransportAddresses = -1;
+static gint ett_h225_UseSpecifiedTransport = -1;
+static gint ett_h225_AlternateGK = -1;
+static gint ett_h225_AltGKInfo = -1;
+static gint ett_h225_SEQUENCE_OF_AlternateGK = -1;
+static gint ett_h225_SecurityServiceMode = -1;
+static gint ett_h225_SecurityCapabilities = -1;
+static gint ett_h225_SecurityErrors = -1;
+static gint ett_h225_SecurityErrors2 = -1;
+static gint ett_h225_H245Security = -1;
+static gint ett_h225_QseriesOptions = -1;
+static gint ett_h225_Q954Details = -1;
+static gint ett_h225_CallIdentifier = -1;
+static gint ett_h225_EncryptIntAlg = -1;
+static gint ett_h225_NonIsoIntegrityMechanism = -1;
+static gint ett_h225_IntegrityMechanism = -1;
+static gint ett_h225_ICV = -1;
+static gint ett_h225_CryptoH323Token = -1;
+static gint ett_h225_T_cryptoEPPwdHash = -1;
+static gint ett_h225_T_cryptoGKPwdHash = -1;
+static gint ett_h225_DataRate = -1;
+static gint ett_h225_CallLinkage = -1;
+static gint ett_h225_SupportedPrefix = -1;
+static gint ett_h225_CapacityReportingCapability = -1;
+static gint ett_h225_CapacityReportingSpecification = -1;
+static gint ett_h225_CapacityReportingSpecification_when = -1;
+static gint ett_h225_CallCapacity = -1;
+static gint ett_h225_CallCapacityInfo = -1;
+static gint ett_h225_SEQUENCE_OF_CallsAvailable = -1;
+static gint ett_h225_CallsAvailable = -1;
+static gint ett_h225_CircuitInfo = -1;
+static gint ett_h225_CircuitIdentifier = -1;
+static gint ett_h225_CicInfo = -1;
+static gint ett_h225_T_cic_2_4 = -1;
+static gint ett_h225_GroupID = -1;
+static gint ett_h225_T_member = -1;
+static gint ett_h225_CarrierInfo = -1;
+static gint ett_h225_ServiceControlDescriptor = -1;
+static gint ett_h225_ServiceControlSession = -1;
+static gint ett_h225_ServiceControlSession_reason = -1;
+static gint ett_h225_RasUsageInfoTypes = -1;
+static gint ett_h225_RasUsageSpecification = -1;
+static gint ett_h225_RasUsageSpecification_when = -1;
+static gint ett_h225_RasUsageSpecificationcallStartingPoint = -1;
+static gint ett_h225_RasUsageInformation = -1;
+static gint ett_h225_CallTerminationCause = -1;
+static gint ett_h225_BandwidthDetails = -1;
+static gint ett_h225_CallCreditCapability = -1;
+static gint ett_h225_CallCreditServiceControl = -1;
+static gint ett_h225_T_billingMode = -1;
+static gint ett_h225_CallCreditServiceControl_callStartingPoint = -1;
+static gint ett_h225_GenericData = -1;
+static gint ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter = -1;
+static gint ett_h225_GenericIdentifier = -1;
+static gint ett_h225_EnumeratedParameter = -1;
+static gint ett_h225_Content = -1;
+static gint ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData = -1;
+static gint ett_h225_FeatureSet = -1;
+static gint ett_h225_TransportChannelInfo = -1;
+static gint ett_h225_RTPSession = -1;
+static gint ett_h225_T_associatedSessionIds = -1;
+static gint ett_h225_RehomingModel = -1;
+static gint ett_h225_RasMessage = -1;
+static gint ett_h225_SEQUENCE_OF_AdmissionConfirm = -1;
+static gint ett_h225_GatekeeperRequest = -1;
+static gint ett_h225_SEQUENCE_OF_Endpoint = -1;
+static gint ett_h225_SEQUENCE_OF_AuthenticationMechanism = -1;
+static gint ett_h225_T_algorithmOIDs = -1;
+static gint ett_h225_SEQUENCE_OF_IntegrityMechanism = -1;
+static gint ett_h225_GatekeeperConfirm = -1;
+static gint ett_h225_GatekeeperReject = -1;
+static gint ett_h225_GatekeeperRejectReason = -1;
+static gint ett_h225_RegistrationRequest = -1;
+static gint ett_h225_SEQUENCE_OF_AddressPattern = -1;
+static gint ett_h225_SEQUENCE_OF_H248PackagesDescriptor = -1;
+static gint ett_h225_RegistrationConfirm = -1;
+static gint ett_h225_T_preGrantedARQ = -1;
+static gint ett_h225_SEQUENCE_OF_RasUsageSpecification = -1;
+static gint ett_h225_RegistrationReject = -1;
+static gint ett_h225_RegistrationRejectReason = -1;
+static gint ett_h225_T_invalidTerminalAliases = -1;
+static gint ett_h225_UnregistrationRequest = -1;
+static gint ett_h225_UnregRequestReason = -1;
+static gint ett_h225_UnregistrationConfirm = -1;
+static gint ett_h225_UnregistrationReject = -1;
+static gint ett_h225_UnregRejectReason = -1;
+static gint ett_h225_AdmissionRequest = -1;
+static gint ett_h225_DestinationInfo = -1;
+static gint ett_h225_CallType = -1;
+static gint ett_h225_CallModel = -1;
+static gint ett_h225_TransportQOS = -1;
+static gint ett_h225_SEQUENCE_SIZE_1_256_OF_QOSCapability = -1;
+static gint ett_h225_AdmissionConfirm = -1;
+static gint ett_h225_UUIEsRequested = -1;
+static gint ett_h225_AdmissionReject = -1;
+static gint ett_h225_AdmissionRejectReason = -1;
+static gint ett_h225_SEQUENCE_OF_PartyNumber = -1;
+static gint ett_h225_BandwidthRequest = -1;
+static gint ett_h225_SEQUENCE_OF_BandwidthDetails = -1;
+static gint ett_h225_BandwidthConfirm = -1;
+static gint ett_h225_BandwidthReject = -1;
+static gint ett_h225_BandRejectReason = -1;
+static gint ett_h225_LocationRequest = -1;
+static gint ett_h225_LocationConfirm = -1;
+static gint ett_h225_LocationReject = -1;
+static gint ett_h225_LocationRejectReason = -1;
+static gint ett_h225_DisengageRequest = -1;
+static gint ett_h225_DisengageReason = -1;
+static gint ett_h225_DisengageConfirm = -1;
+static gint ett_h225_DisengageReject = -1;
+static gint ett_h225_DisengageRejectReason = -1;
+static gint ett_h225_InfoRequest = -1;
+static gint ett_h225_InfoRequestResponse = -1;
+static gint ett_h225_T_perCallInfo = -1;
+static gint ett_h225_T_perCallInfo_item = -1;
+static gint ett_h225_SEQUENCE_OF_RTPSession = -1;
+static gint ett_h225_SEQUENCE_OF_TransportChannelInfo = -1;
+static gint ett_h225_SEQUENCE_OF_ConferenceIdentifier = -1;
+static gint ett_h225_T_pdu = -1;
+static gint ett_h225_T_pdu_item = -1;
+static gint ett_h225_InfoRequestResponseStatus = -1;
+static gint ett_h225_InfoRequestAck = -1;
+static gint ett_h225_InfoRequestNak = -1;
+static gint ett_h225_InfoRequestNakReason = -1;
+static gint ett_h225_NonStandardMessage = -1;
+static gint ett_h225_UnknownMessageResponse = -1;
+static gint ett_h225_RequestInProgress = -1;
+static gint ett_h225_ResourcesAvailableIndicate = -1;
+static gint ett_h225_ResourcesAvailableConfirm = -1;
+static gint ett_h225_ServiceControlIndication = -1;
+static gint ett_h225_T_callSpecific = -1;
+static gint ett_h225_ServiceControlResponse = -1;
+static gint ett_h225_T_result = -1;
+
+/* Preferences */
+static guint h225_tls_port = TLS_PORT_CS;
+static gboolean h225_reassembly = TRUE;
+static gboolean h225_h245_in_tree = TRUE;
+static gboolean h225_tp_in_tree = TRUE;
+
+/* Global variables */
+static guint32 ipv4_address;
+static ws_in6_addr ipv6_address;
+static ws_in6_addr ipv6_address_zeros = {{0}};
+static guint32 ip_port;
+static gboolean contains_faststart = FALSE;
+static e_guid_t *call_id_guid;
+
+/* NonStandardParameter */
+static const char *nsiOID;
+static guint32 h221NonStandard;
+static guint32 t35CountryCode;
+static guint32 t35Extension;
+static guint32 manufacturerCode;
+
+/* TunnelledProtocol */
+static const char *tpOID;
+
+static const value_string ras_message_category[] = {
+ { 0, "Gatekeeper "},
+ { 1, "Registration "},
+ { 2, "UnRegistration"},
+ { 3, "Admission "},
+ { 4, "Bandwidth "},
+ { 5, "Disengage "},
+ { 6, "Location "},
+ { 0, NULL }
+};
+
+typedef enum _ras_type {
+ RAS_REQUEST,
+ RAS_CONFIRM,
+ RAS_REJECT,
+ RAS_OTHER
+}ras_type;
+
+typedef enum _ras_category {
+ RAS_GATEKEEPER,
+ RAS_REGISTRATION,
+ RAS_UNREGISTRATION,
+ RAS_ADMISSION,
+ RAS_BANDWIDTH,
+ RAS_DISENGAGE,
+ RAS_LOCATION,
+ RAS_OTHERS
+}ras_category;
+
+#define NUM_RAS_STATS 7
+
+static tap_packet_status
+h225rassrt_packet(void *phs, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *phi, tap_flags_t flags _U_)
+{
+ rtd_data_t* rtd_data = (rtd_data_t*)phs;
+ rtd_stat_table* rs = &rtd_data->stat_table;
+ const h225_packet_info *pi=(const h225_packet_info *)phi;
+
+ ras_type rasmsg_type = RAS_OTHER;
+ ras_category rascategory = RAS_OTHERS;
+
+ if (pi->msg_type != H225_RAS || pi->msg_tag == -1) {
+ /* No RAS Message or uninitialized msg_tag -> return */
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
+ if (pi->msg_tag < 21) {
+ /* */
+ rascategory = (ras_category)(pi->msg_tag / 3);
+ rasmsg_type = (ras_type)(pi->msg_tag % 3);
+ }
+ else {
+ /* No SRT yet (ToDo) */
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
+ switch(rasmsg_type) {
+
+ case RAS_REQUEST:
+ if(pi->is_duplicate){
+ rs->time_stats[rascategory].req_dup_num++;
+ }
+ else {
+ rs->time_stats[rascategory].open_req_num++;
+ }
+ break;
+
+ case RAS_CONFIRM:
+ /* no break - delay stats are identical for Confirm and Reject */
+ case RAS_REJECT:
+ if(pi->is_duplicate){
+ /* Duplicate is ignored */
+ rs->time_stats[rascategory].rsp_dup_num++;
+ }
+ else if (!pi->request_available) {
+ /* no request was seen, ignore response */
+ rs->time_stats[rascategory].disc_rsp_num++;
+ }
+ else {
+ rs->time_stats[rascategory].open_req_num--;
+ time_stat_update(&(rs->time_stats[rascategory].rtd[0]),&(pi->delta_time), pinfo);
+ }
+ break;
+
+ default:
+ return TAP_PACKET_DONT_REDRAW;
+ }
+ return TAP_PACKET_REDRAW;
+}
+
+/*--- Cyclic dependencies ---*/
+
+/* EnumeratedParameter -> Content -> Content/compound -> EnumeratedParameter */
+static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
+
+/* GenericData -> GenericData/parameters -> EnumeratedParameter -> Content -> Content/nested -> GenericData */
+/*int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
+
+
+#define MAX_RECURSION_DEPTH 100 // Arbitrarily chosen.
+
+
+static int
+dissect_h225_ProtocolIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h245Ip(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *value_tvb;
+
+ ipv4_address = 0;
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 4, 4, FALSE, &value_tvb);
+
+ if (value_tvb)
+ ipv4_address = tvb_get_ipv4(value_tvb, 0);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h245IpPort(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, &ip_port, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h245IpAddress_sequence[] = {
+ { &hf_h225_h245Ip , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_h245Ip },
+ { &hf_h225_h245IpPort , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_h245IpPort },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_h245IpAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245IpAddress, T_h245IpAddress_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 4, 4, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h245Route_sequence_of[1] = {
+ { &hf_h225_h245Route_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+};
+
+static int
+dissect_h225_T_h245Route(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245Route, T_h245Route_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string h225_T_h245Routing_vals[] = {
+ { 0, "strict" },
+ { 1, "loose" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_h245Routing_choice[] = {
+ { 0, &hf_h225_strict , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_loose , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_h245Routing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245Routing, T_h245Routing_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h245IpSourceRoute_sequence[] = {
+ { &hf_h225_ip , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+ { &hf_h225_port , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+ { &hf_h225_h245Route , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_h245Route },
+ { &hf_h225_h245Routing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_h245Routing },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_h245IpSourceRoute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245IpSourceRoute, T_h245IpSourceRoute_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 6, 6, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 2, 2, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h245IpxAddress_sequence[] = {
+ { &hf_h225_node , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_6 },
+ { &hf_h225_netnum , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+ { &hf_h225_h245IpxPort , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_h245IpxAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245IpxAddress, T_h245IpxAddress_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h245Ip6(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *value_tvb;
+
+ ipv6_address = ipv6_address_zeros;
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 16, 16, FALSE, &value_tvb);
+
+ if (value_tvb)
+ tvb_get_ipv6(value_tvb, 0, &ipv6_address);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h245Ip6port(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, &ip_port, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h245Ip6Address_sequence[] = {
+ { &hf_h225_h245Ip6 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_h245Ip6 },
+ { &hf_h225_h245Ip6port , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_h245Ip6port },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_h245Ip6Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h245Ip6Address, T_h245Ip6Address_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 16, 16, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_1_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 20, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_nsiOID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &nsiOID);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_t35CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, &t35CountryCode, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_t35Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, &t35Extension, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_manufacturerCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, &manufacturerCode, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t H221NonStandard_sequence[] = {
+ { &hf_h225_t35CountryCode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_t35CountryCode },
+ { &hf_h225_t35Extension , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_t35Extension },
+ { &hf_h225_manufacturerCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_manufacturerCode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H221NonStandard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ t35CountryCode = 0;
+ t35Extension = 0;
+ manufacturerCode = 0;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H221NonStandard, H221NonStandard_sequence);
+
+ h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
+ proto_tree_add_uint(tree, hf_h221Manufacturer, tvb, (offset>>3)-4, 4, h221NonStandard);
+ return offset;
+}
+
+
+static const value_string h225_NonStandardIdentifier_vals[] = {
+ { 0, "object" },
+ { 1, "h221NonStandard" },
+ { 0, NULL }
+};
+
+static const per_choice_t NonStandardIdentifier_choice[] = {
+ { 0, &hf_h225_nsiOID , ASN1_EXTENSION_ROOT , dissect_h225_T_nsiOID },
+ { 1, &hf_h225_h221NonStandard, ASN1_EXTENSION_ROOT , dissect_h225_H221NonStandard },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_NonStandardIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+
+ nsiOID = "";
+ h221NonStandard = 0;
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_NonStandardIdentifier, NonStandardIdentifier_choice,
+ &value);
+
+ switch (value) {
+ case 0 : /* object */
+ nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, nsiOID);
+ break;
+ case 1 : /* h221NonStandard */
+ nsp_handle = dissector_get_uint_handle(nsp_h221_dissector_table, h221NonStandard);
+ break;
+ default :
+ nsp_handle = NULL;
+ }
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_nsp_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *next_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &next_tvb);
+
+ if (next_tvb && tvb_reported_length(next_tvb)) {
+ call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, actx->pinfo, tree);
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t NonStandardParameter_sequence[] = {
+ { &hf_h225_nonStandardIdentifier, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_NonStandardIdentifier },
+ { &hf_h225_nsp_data , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_nsp_data },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ nsp_handle = NULL;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_NonStandardParameter, NonStandardParameter_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_H245TransportAddress_vals[] = {
+ { 0, "ipAddress" },
+ { 1, "ipSourceRoute" },
+ { 2, "ipxAddress" },
+ { 3, "ip6Address" },
+ { 4, "netBios" },
+ { 5, "nsap" },
+ { 6, "nonStandardAddress" },
+ { 0, NULL }
+};
+
+static const per_choice_t H245TransportAddress_choice[] = {
+ { 0, &hf_h225_h245IpAddress , ASN1_EXTENSION_ROOT , dissect_h225_T_h245IpAddress },
+ { 1, &hf_h225_h245IpSourceRoute, ASN1_EXTENSION_ROOT , dissect_h225_T_h245IpSourceRoute },
+ { 2, &hf_h225_h245IpxAddress , ASN1_EXTENSION_ROOT , dissect_h225_T_h245IpxAddress },
+ { 3, &hf_h225_h245Ip6Address , ASN1_EXTENSION_ROOT , dissect_h225_T_h245Ip6Address },
+ { 4, &hf_h225_netBios , ASN1_EXTENSION_ROOT , dissect_h225_OCTET_STRING_SIZE_16 },
+ { 5, &hf_h225_nsap , ASN1_EXTENSION_ROOT , dissect_h225_OCTET_STRING_SIZE_1_20 },
+ { 6, &hf_h225_nonStandardAddress, ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_H245TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ ipv4_address=0;
+ ipv6_address = ipv6_address_zeros;
+ ip_port=0;
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_H245TransportAddress, H245TransportAddress_choice,
+ NULL);
+
+ /* we need this info for TAPing */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ if (h225_pi) {
+ h225_pi->is_h245 = TRUE;
+ h225_pi->h245_address = ipv4_address;
+ h225_pi->h245_port = ip_port;
+ }
+ if ( !actx->pinfo->fd->visited && h245_handle && ip_port!=0 ) {
+ address src_addr;
+ conversation_t *conv=NULL;
+
+ if (ipv4_address!=0) {
+ set_address(&src_addr, AT_IPv4, 4, &ipv4_address);
+ } else if (memcmp(ipv6_address.bytes, ipv6_address_zeros.bytes, sizeof(ipv6_address.bytes))!=0) {
+ set_address(&src_addr, AT_IPv6, 16, ipv6_address.bytes);
+ } else {
+ return offset;
+ }
+
+ conv=find_conversation(actx->pinfo->num, &src_addr, &src_addr, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR_B|NO_PORT_B);
+ if(!conv){
+ conv=conversation_new(actx->pinfo->num, &src_addr, &src_addr, CONVERSATION_TCP, ip_port, ip_port, NO_ADDR2|NO_PORT2);
+ conversation_set_dissector(conv, h245_handle);
+ }
+ }
+ return offset;
+}
+
+
+
+static int
+dissect_h225_DialedDigits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *value_tvb = NULL;
+ guint len = 0;
+ h225_packet_info* h225_pi;
+
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE, "0123456789#*,", 13,
+ &value_tvb);
+
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi && h225_pi->is_destinationInfo == TRUE) {
+ if (value_tvb) {
+ len = tvb_reported_length(value_tvb);
+ /* XXX - should this be allocated as an ephemeral string? */
+ if (len > sizeof h225_pi->dialedDigits - 1)
+ len = sizeof h225_pi->dialedDigits - 1;
+ tvb_memcpy(value_tvb, (guint8*)h225_pi->dialedDigits, 0, len);
+ }
+ h225_pi->dialedDigits[len] = '\0';
+ h225_pi->is_destinationInfo = FALSE;
+ }
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BMPString_SIZE_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ 1, 256, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String_SIZE_1_512(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 512, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IpV4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 4, 4, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ipAddress_sequence[] = {
+ { &hf_h225_ipV4 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_IpV4 },
+ { &hf_h225_ipV4_port , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_ipAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_ipAddress, T_ipAddress_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_route_sequence_of[1] = {
+ { &hf_h225_route_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+};
+
+static int
+dissect_h225_T_route(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_route, T_route_sequence_of);
+
+ return offset;
+}
+
+
+static const value_string h225_T_routing_vals[] = {
+ { 0, "strict" },
+ { 1, "loose" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_routing_choice[] = {
+ { 0, &hf_h225_strict , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_loose , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_routing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_routing, T_routing_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ipSourceRoute_sequence[] = {
+ { &hf_h225_src_route_ipV4 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+ { &hf_h225_ipV4_src_port , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+ { &hf_h225_route , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_route },
+ { &hf_h225_routing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_routing },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_ipSourceRoute(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_ipSourceRoute, T_ipSourceRoute_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ipxAddress_sequence[] = {
+ { &hf_h225_node , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_6 },
+ { &hf_h225_netnum , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_4 },
+ { &hf_h225_ipx_port , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_2 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_ipxAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_ipxAddress, T_ipxAddress_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_ip6Address_sequence[] = {
+ { &hf_h225_ipV6 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_16 },
+ { &hf_h225_ipV6_port , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_ip6Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_ip6Address, T_ip6Address_sequence);
+
+ return offset;
+}
+
+
+const value_string h225_TransportAddress_vals[] = {
+ { 0, "ipAddress" },
+ { 1, "ipSourceRoute" },
+ { 2, "ipxAddress" },
+ { 3, "ip6Address" },
+ { 4, "netBios" },
+ { 5, "nsap" },
+ { 6, "nonStandardAddress" },
+ { 0, NULL }
+};
+
+static const per_choice_t TransportAddress_choice[] = {
+ { 0, &hf_h225_ipAddress , ASN1_EXTENSION_ROOT , dissect_h225_T_ipAddress },
+ { 1, &hf_h225_ipSourceRoute , ASN1_EXTENSION_ROOT , dissect_h225_T_ipSourceRoute },
+ { 2, &hf_h225_ipxAddress , ASN1_EXTENSION_ROOT , dissect_h225_T_ipxAddress },
+ { 3, &hf_h225_ip6Address , ASN1_EXTENSION_ROOT , dissect_h225_T_ip6Address },
+ { 4, &hf_h225_netBios , ASN1_EXTENSION_ROOT , dissect_h225_OCTET_STRING_SIZE_16 },
+ { 5, &hf_h225_nsap , ASN1_EXTENSION_ROOT , dissect_h225_OCTET_STRING_SIZE_1_20 },
+ { 6, &hf_h225_nonStandardAddress, ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_TransportAddress, TransportAddress_choice,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string h225_PublicTypeOfNumber_vals[] = {
+ { 0, "unknown" },
+ { 1, "internationalNumber" },
+ { 2, "nationalNumber" },
+ { 3, "networkSpecificNumber" },
+ { 4, "subscriberNumber" },
+ { 5, "abbreviatedNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t PublicTypeOfNumber_choice[] = {
+ { 0, &hf_h225_unknown , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_internationalNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_nationalNumber , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_networkSpecificNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_subscriberNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_abbreviatedNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_PublicTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_PublicTypeOfNumber, PublicTypeOfNumber_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_NumberDigits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE, "0123456789#*,", 13,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PublicPartyNumber_sequence[] = {
+ { &hf_h225_publicTypeOfNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_PublicTypeOfNumber },
+ { &hf_h225_publicNumberDigits, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_NumberDigits },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_PublicPartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_PublicPartyNumber, PublicPartyNumber_sequence);
+
+ return offset;
+}
+
+
+const value_string h225_PrivateTypeOfNumber_vals[] = {
+ { 0, "unknown" },
+ { 1, "level2RegionalNumber" },
+ { 2, "level1RegionalNumber" },
+ { 3, "pISNSpecificNumber" },
+ { 4, "localNumber" },
+ { 5, "abbreviatedNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t PrivateTypeOfNumber_choice[] = {
+ { 0, &hf_h225_unknown , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_level2RegionalNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_level1RegionalNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_pISNSpecificNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_localNumber , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_abbreviatedNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_PrivateTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_PrivateTypeOfNumber, PrivateTypeOfNumber_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t PrivatePartyNumber_sequence[] = {
+ { &hf_h225_privateTypeOfNumber, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_PrivateTypeOfNumber },
+ { &hf_h225_privateNumberDigits, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_NumberDigits },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_PrivatePartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_PrivatePartyNumber, PrivatePartyNumber_sequence);
+
+ return offset;
+}
+
+
+const value_string h225_PartyNumber_vals[] = {
+ { 0, "e164Number" },
+ { 1, "dataPartyNumber" },
+ { 2, "telexPartyNumber" },
+ { 3, "privateNumber" },
+ { 4, "nationalStandardPartyNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t PartyNumber_choice[] = {
+ { 0, &hf_h225_e164Number , ASN1_EXTENSION_ROOT , dissect_h225_PublicPartyNumber },
+ { 1, &hf_h225_dataPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_NumberDigits },
+ { 2, &hf_h225_telexPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_NumberDigits },
+ { 3, &hf_h225_privateNumber , ASN1_EXTENSION_ROOT , dissect_h225_PrivatePartyNumber },
+ { 4, &hf_h225_nationalStandardPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_NumberDigits },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_PartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_PartyNumber, PartyNumber_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_TBCD_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ int min_len, max_len;
+ gboolean has_extension;
+
+ get_size_constraint_from_stack(actx, "TBCD_STRING", &min_len, &max_len, &has_extension);
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
+ min_len, max_len, has_extension, "0123456789#*abc", 15,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_TBCD_STRING_SIZE_3_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_h225_TBCD_STRING,
+ "TBCD_STRING", 3, 16, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_TBCD_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_h225_TBCD_STRING,
+ "TBCD_STRING", 16, 16, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_TBCD_STRING_SIZE_1_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_h225_TBCD_STRING,
+ "TBCD_STRING", 1, 4, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h225_T_system_id_vals[] = {
+ { 0, "sid" },
+ { 1, "mid" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_system_id_choice[] = {
+ { 0, &hf_h225_sid , ASN1_EXTENSION_ROOT , dissect_h225_TBCD_STRING_SIZE_1_4 },
+ { 1, &hf_h225_mid , ASN1_EXTENSION_ROOT , dissect_h225_TBCD_STRING_SIZE_1_4 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_system_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_system_id, T_system_id_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 1, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ANSI_41_UIM_sequence[] = {
+ { &hf_h225_imsi , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_min , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_mdn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_msisdn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_esn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_16 },
+ { &hf_h225_mscid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_system_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_system_id },
+ { &hf_h225_systemMyTypeCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1 },
+ { &hf_h225_systemAccessType, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1 },
+ { &hf_h225_qualificationInformationCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1 },
+ { &hf_h225_sesn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_16 },
+ { &hf_h225_soc , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ANSI_41_UIM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ANSI_41_UIM, ANSI_41_UIM_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_1_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 4, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_TBCD_STRING_SIZE_15_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_size_constrained_type(tvb, offset, actx, tree, hf_index, dissect_h225_TBCD_STRING,
+ "TBCD_STRING", 15, 16, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t GSM_UIM_sequence[] = {
+ { &hf_h225_imsi , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_tmsi , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1_4 },
+ { &hf_h225_msisdn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_3_16 },
+ { &hf_h225_imei , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_15_16 },
+ { &hf_h225_hplmn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_1_4 },
+ { &hf_h225_vplmn , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TBCD_STRING_SIZE_1_4 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GSM_UIM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GSM_UIM, GSM_UIM_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_MobileUIM_vals[] = {
+ { 0, "ansi-41-uim" },
+ { 1, "gsm-uim" },
+ { 0, NULL }
+};
+
+static const per_choice_t MobileUIM_choice[] = {
+ { 0, &hf_h225_ansi_41_uim , ASN1_EXTENSION_ROOT , dissect_h225_ANSI_41_UIM },
+ { 1, &hf_h225_gsm_uim , ASN1_EXTENSION_ROOT , dissect_h225_GSM_UIM },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_MobileUIM(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_MobileUIM, MobileUIM_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_NatureOfAddress_vals[] = {
+ { 0, "unknown" },
+ { 1, "subscriberNumber" },
+ { 2, "nationalNumber" },
+ { 3, "internationalNumber" },
+ { 4, "networkSpecificNumber" },
+ { 5, "routingNumberNationalFormat" },
+ { 6, "routingNumberNetworkSpecificFormat" },
+ { 7, "routingNumberWithCalledDirectoryNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t NatureOfAddress_choice[] = {
+ { 0, &hf_h225_unknown , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_subscriberNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_nationalNumber , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_internationalNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_networkSpecificNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_routingNumberNationalFormat, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_routingNumberNetworkSpecificFormat, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 7, &hf_h225_routingNumberWithCalledDirectoryNumber, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_NatureOfAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_NatureOfAddress, NatureOfAddress_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IsupDigits(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE, "0123456789ABCDE", 15,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t IsupPublicPartyNumber_sequence[] = {
+ { &hf_h225_natureOfAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_NatureOfAddress },
+ { &hf_h225_address , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_IsupDigits },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_IsupPublicPartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_IsupPublicPartyNumber, IsupPublicPartyNumber_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t IsupPrivatePartyNumber_sequence[] = {
+ { &hf_h225_privateTypeOfNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_PrivateTypeOfNumber },
+ { &hf_h225_address , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_IsupDigits },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_IsupPrivatePartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_IsupPrivatePartyNumber, IsupPrivatePartyNumber_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_IsupNumber_vals[] = {
+ { 0, "e164Number" },
+ { 1, "dataPartyNumber" },
+ { 2, "telexPartyNumber" },
+ { 3, "privateNumber" },
+ { 4, "nationalStandardPartyNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t IsupNumber_choice[] = {
+ { 0, &hf_h225_isupE164Number , ASN1_EXTENSION_ROOT , dissect_h225_IsupPublicPartyNumber },
+ { 1, &hf_h225_isupDataPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_IsupDigits },
+ { 2, &hf_h225_isupTelexPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_IsupDigits },
+ { 3, &hf_h225_isupPrivateNumber, ASN1_EXTENSION_ROOT , dissect_h225_IsupPrivatePartyNumber },
+ { 4, &hf_h225_isupNationalStandardPartyNumber, ASN1_EXTENSION_ROOT , dissect_h225_IsupDigits },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_IsupNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_IsupNumber, IsupNumber_choice,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string AliasAddress_vals[] = {
+ { 0, "dialledDigits" },
+ { 1, "h323-ID" },
+ { 2, "url-ID" },
+ { 3, "transportID" },
+ { 4, "email-ID" },
+ { 5, "partyNumber" },
+ { 6, "mobileUIM" },
+ { 7, "isupNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t AliasAddress_choice[] = {
+ { 0, &hf_h225_dialledDigits , ASN1_EXTENSION_ROOT , dissect_h225_DialedDigits },
+ { 1, &hf_h225_h323_ID , ASN1_EXTENSION_ROOT , dissect_h225_BMPString_SIZE_1_256 },
+ { 2, &hf_h225_url_ID , ASN1_NOT_EXTENSION_ROOT, dissect_h225_IA5String_SIZE_1_512 },
+ { 3, &hf_h225_transportID , ASN1_NOT_EXTENSION_ROOT, dissect_h225_TransportAddress },
+ { 4, &hf_h225_email_ID , ASN1_NOT_EXTENSION_ROOT, dissect_h225_IA5String_SIZE_1_512 },
+ { 5, &hf_h225_partyNumber , ASN1_NOT_EXTENSION_ROOT, dissect_h225_PartyNumber },
+ { 6, &hf_h225_mobileUIM , ASN1_NOT_EXTENSION_ROOT, dissect_h225_MobileUIM },
+ { 7, &hf_h225_isupNumber , ASN1_NOT_EXTENSION_ROOT, dissect_h225_IsupNumber },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_AliasAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_AliasAddress, AliasAddress_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_AliasAddress_sequence_of[1] = {
+ { &hf_h225_alertingAddress_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_AliasAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_AliasAddress, SEQUENCE_OF_AliasAddress_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 256, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t VendorIdentifier_sequence[] = {
+ { &hf_h225_vendorIdentifier_vendor, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_H221NonStandard },
+ { &hf_h225_productId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1_256 },
+ { &hf_h225_versionId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_1_256 },
+ { &hf_h225_enterpriseNumber, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_OBJECT_IDENTIFIER },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_VendorIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_VendorIdentifier, VendorIdentifier_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GatekeeperInfo_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GatekeeperInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatekeeperInfo, GatekeeperInfo_sequence);
+
+ return offset;
+}
+
+
+
+int
+dissect_h225_BandWidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4294967295U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_1_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 256U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DataRate_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_channelRate , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_channelMultiplier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_INTEGER_1_256 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_DataRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_DataRate, DataRate_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_DataRate_sequence_of[1] = {
+ { &hf_h225_dataRatesSupported_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_DataRate },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_DataRate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_DataRate, SEQUENCE_OF_DataRate_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SupportedPrefix_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_prefix , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_SupportedPrefix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_SupportedPrefix, SupportedPrefix_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_SupportedPrefix_sequence_of[1] = {
+ { &hf_h225_supportedPrefixes_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_SupportedPrefix },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_SupportedPrefix(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_SupportedPrefix, SEQUENCE_OF_SupportedPrefix_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t H310Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H310Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H310Caps, H310Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H320Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H320Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H320Caps, H320Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H321Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H321Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H321Caps, H321Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H322Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H322Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H322Caps, H322Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H323Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H323Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H323Caps, H323Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H324Caps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H324Caps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H324Caps, H324Caps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t VoiceCaps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_VoiceCaps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_VoiceCaps, VoiceCaps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T120OnlyCaps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T120OnlyCaps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T120OnlyCaps, T120OnlyCaps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonStandardProtocol_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_NonStandardProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_NonStandardProtocol, NonStandardProtocol_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T38FaxAnnexbOnlyCaps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { &hf_h225_t38FaxProtocol , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_DataProtocolCapability },
+ { &hf_h225_t38FaxProfile , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_T38FaxProfile },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T38FaxAnnexbOnlyCaps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T38FaxAnnexbOnlyCaps, T38FaxAnnexbOnlyCaps_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SIPCaps_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_dataRatesSupported, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DataRate },
+ { &hf_h225_supportedPrefixes, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_SIPCaps(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_SIPCaps, SIPCaps_sequence);
+
+ return offset;
+}
+
+
+const value_string h225_SupportedProtocols_vals[] = {
+ { 0, "nonStandardData" },
+ { 1, "h310" },
+ { 2, "h320" },
+ { 3, "h321" },
+ { 4, "h322" },
+ { 5, "h323" },
+ { 6, "h324" },
+ { 7, "voice" },
+ { 8, "t120-only" },
+ { 9, "nonStandardProtocol" },
+ { 10, "t38FaxAnnexbOnly" },
+ { 11, "sip" },
+ { 0, NULL }
+};
+
+static const per_choice_t SupportedProtocols_choice[] = {
+ { 0, &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 1, &hf_h225_h310 , ASN1_EXTENSION_ROOT , dissect_h225_H310Caps },
+ { 2, &hf_h225_h320 , ASN1_EXTENSION_ROOT , dissect_h225_H320Caps },
+ { 3, &hf_h225_h321 , ASN1_EXTENSION_ROOT , dissect_h225_H321Caps },
+ { 4, &hf_h225_h322 , ASN1_EXTENSION_ROOT , dissect_h225_H322Caps },
+ { 5, &hf_h225_h323 , ASN1_EXTENSION_ROOT , dissect_h225_H323Caps },
+ { 6, &hf_h225_h324 , ASN1_EXTENSION_ROOT , dissect_h225_H324Caps },
+ { 7, &hf_h225_voice , ASN1_EXTENSION_ROOT , dissect_h225_VoiceCaps },
+ { 8, &hf_h225_t120_only , ASN1_EXTENSION_ROOT , dissect_h225_T120OnlyCaps },
+ { 9, &hf_h225_nonStandardProtocol, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NonStandardProtocol },
+ { 10, &hf_h225_t38FaxAnnexbOnly, ASN1_NOT_EXTENSION_ROOT, dissect_h225_T38FaxAnnexbOnlyCaps },
+ { 11, &hf_h225_sip , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SIPCaps },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_SupportedProtocols(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_SupportedProtocols, SupportedProtocols_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_SupportedProtocols_sequence_of[1] = {
+ { &hf_h225_desiredProtocols_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_SupportedProtocols },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_SupportedProtocols(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_SupportedProtocols, SEQUENCE_OF_SupportedProtocols_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t GatewayInfo_sequence[] = {
+ { &hf_h225_protocol , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GatewayInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatewayInfo, GatewayInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t McuInfo_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_protocol , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_McuInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_McuInfo, McuInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t TerminalInfo_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_TerminalInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_TerminalInfo, TerminalInfo_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BIT_STRING_SIZE_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ 32, 32, FALSE, NULL, 0, NULL, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_tunnelledProtocolObjectID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &tpOID);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String_SIZE_1_64(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 64, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TunnelledProtocolAlternateIdentifier_sequence[] = {
+ { &hf_h225_protocolType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_IA5String_SIZE_1_64 },
+ { &hf_h225_protocolVariant, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_IA5String_SIZE_1_64 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_TunnelledProtocolAlternateIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_TunnelledProtocolAlternateIdentifier, TunnelledProtocolAlternateIdentifier_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_TunnelledProtocol_id_vals[] = {
+ { 0, "tunnelledProtocolObjectID" },
+ { 1, "tunnelledProtocolAlternateID" },
+ { 0, NULL }
+};
+
+static const per_choice_t TunnelledProtocol_id_choice[] = {
+ { 0, &hf_h225_tunnelledProtocolObjectID, ASN1_EXTENSION_ROOT , dissect_h225_T_tunnelledProtocolObjectID },
+ { 1, &hf_h225_tunnelledProtocolAlternateID, ASN1_EXTENSION_ROOT , dissect_h225_TunnelledProtocolAlternateIdentifier },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_TunnelledProtocol_id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_TunnelledProtocol_id, TunnelledProtocol_id_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TunnelledProtocol_sequence[] = {
+ { &hf_h225_tunnelledProtocol_id, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol_id },
+ { &hf_h225_subIdentifier , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_IA5String_SIZE_1_64 },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_TunnelledProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tpOID = "";
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_TunnelledProtocol, TunnelledProtocol_sequence);
+
+ tp_handle = dissector_get_string_handle(tp_dissector_table, tpOID);
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_TunnelledProtocol_sequence_of[1] = {
+ { &hf_h225_supportedTunnelledProtocols_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_TunnelledProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_TunnelledProtocol, SEQUENCE_OF_TunnelledProtocol_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t EndpointType_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_vendor , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_VendorIdentifier },
+ { &hf_h225_gatekeeper , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperInfo },
+ { &hf_h225_gateway , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatewayInfo },
+ { &hf_h225_mcu , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_McuInfo },
+ { &hf_h225_terminal , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TerminalInfo },
+ { &hf_h225_mc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_undefinedNode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_set , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BIT_STRING_SIZE_32 },
+ { &hf_h225_supportedTunnelledProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TunnelledProtocol },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_EndpointType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_EndpointType, EndpointType_sequence);
+
+ return offset;
+}
+
+
+
+int
+dissect_h225_CallReferenceValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_CallReferenceValue_sequence_of[1] = {
+ { &hf_h225_destExtraCRV_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_CallReferenceValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_CallReferenceValue, SEQUENCE_OF_CallReferenceValue_sequence_of);
+
+ return offset;
+}
+
+
+
+int
+dissect_h225_GloballyUniqueID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 16, 16, FALSE, (tvbuff_t **)actx->value_ptr);
+
+ return offset;
+}
+
+
+
+int
+dissect_h225_ConferenceIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string h225_T_conferenceGoal_vals[] = {
+ { 0, "create" },
+ { 1, "join" },
+ { 2, "invite" },
+ { 3, "capability-negotiation" },
+ { 4, "callIndependentSupplementaryService" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_conferenceGoal_choice[] = {
+ { 0, &hf_h225_create , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_join , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_invite , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_capability_negotiation, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 4, &hf_h225_callIndependentSupplementaryService, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_conferenceGoal(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_conferenceGoal, T_conferenceGoal_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t Q954Details_sequence[] = {
+ { &hf_h225_conferenceCalling, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_threePartyService, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Q954Details(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Q954Details, Q954Details_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t QseriesOptions_sequence[] = {
+ { &hf_h225_q932Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q951Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q952Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q953Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q955Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q956Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q957Full , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_q954Info , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_Q954Details },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_QseriesOptions(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_QseriesOptions, QseriesOptions_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_CallType_vals[] = {
+ { 0, "pointToPoint" },
+ { 1, "oneToN" },
+ { 2, "nToOne" },
+ { 3, "nToN" },
+ { 0, NULL }
+};
+
+static const per_choice_t CallType_choice[] = {
+ { 0, &hf_h225_pointToPoint , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_oneToN , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_nToOne , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_nToN , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_CallType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallType, CallType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_guid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *guid_tvb = NULL;
+
+ actx->value_ptr = &guid_tvb;
+ offset = dissect_h225_GloballyUniqueID(tvb, offset, actx, tree, hf_index);
+
+ if (guid_tvb)
+ tvb_get_ntohguid(guid_tvb, 0, call_id_guid = wmem_new(actx->pinfo->pool, e_guid_t));
+ actx->value_ptr = NULL;
+
+ return offset;
+}
+
+
+static const per_sequence_t CallIdentifier_sequence[] = {
+ { &hf_h225_guid , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_guid },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_CallIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallIdentifier, CallIdentifier_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_SecurityServiceMode_vals[] = {
+ { 0, "nonStandard" },
+ { 1, "none" },
+ { 2, "default" },
+ { 0, NULL }
+};
+
+static const per_choice_t SecurityServiceMode_choice[] = {
+ { 0, &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 1, &hf_h225_none , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_default , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_SecurityServiceMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_SecurityServiceMode, SecurityServiceMode_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SecurityCapabilities_sequence[] = {
+ { &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_encryption , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SecurityServiceMode },
+ { &hf_h225_authenticaton , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SecurityServiceMode },
+ { &hf_h225_securityCapabilities_integrity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SecurityServiceMode },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_SecurityCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_SecurityCapabilities, SecurityCapabilities_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_H245Security_vals[] = {
+ { 0, "nonStandard" },
+ { 1, "noSecurity" },
+ { 2, "tls" },
+ { 3, "ipsec" },
+ { 0, NULL }
+};
+
+static const per_choice_t H245Security_choice[] = {
+ { 0, &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 1, &hf_h225_noSecurity , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_tls , ASN1_EXTENSION_ROOT , dissect_h225_SecurityCapabilities },
+ { 3, &hf_h225_ipsec , ASN1_EXTENSION_ROOT , dissect_h225_SecurityCapabilities },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_H245Security(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_H245Security, H245Security_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_H245Security_sequence_of[1] = {
+ { &hf_h225_h245SecurityCapability_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_H245Security },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_H245Security(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_H245Security, SEQUENCE_OF_H245Security_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ClearToken_sequence_of[1] = {
+ { &hf_h225_tokens_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ClearToken },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_ClearToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_ClearToken, SEQUENCE_OF_ClearToken_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_cryptoEPPwdHash_sequence[] = {
+ { &hf_h225_alias , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
+ { &hf_h225_timeStamp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_TimeStamp },
+ { &hf_h225_token , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_HASHED },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_cryptoEPPwdHash(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_cryptoEPPwdHash, T_cryptoEPPwdHash_sequence);
+
+ return offset;
+}
+
+
+
+int
+dissect_h225_GatekeeperIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_cryptoGKPwdHash_sequence[] = {
+ { &hf_h225_gatekeeperId , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_timeStamp , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_TimeStamp },
+ { &hf_h225_token , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_HASHED },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_cryptoGKPwdHash(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_cryptoGKPwdHash, T_cryptoGKPwdHash_sequence);
+
+ return offset;
+}
+
+
+const value_string h225_CryptoH323Token_vals[] = {
+ { 0, "cryptoEPPwdHash" },
+ { 1, "cryptoGKPwdHash" },
+ { 2, "cryptoEPPwdEncr" },
+ { 3, "cryptoGKPwdEncr" },
+ { 4, "cryptoEPCert" },
+ { 5, "cryptoGKCert" },
+ { 6, "cryptoFastStart" },
+ { 7, "nestedcryptoToken" },
+ { 0, NULL }
+};
+
+static const per_choice_t CryptoH323Token_choice[] = {
+ { 0, &hf_h225_cryptoEPPwdHash, ASN1_EXTENSION_ROOT , dissect_h225_T_cryptoEPPwdHash },
+ { 1, &hf_h225_cryptoGKPwdHash, ASN1_EXTENSION_ROOT , dissect_h225_T_cryptoGKPwdHash },
+ { 2, &hf_h225_cryptoEPPwdEncr, ASN1_EXTENSION_ROOT , dissect_h235_ENCRYPTED },
+ { 3, &hf_h225_cryptoGKPwdEncr, ASN1_EXTENSION_ROOT , dissect_h235_ENCRYPTED },
+ { 4, &hf_h225_cryptoEPCert , ASN1_EXTENSION_ROOT , dissect_h235_SIGNED },
+ { 5, &hf_h225_cryptoGKCert , ASN1_EXTENSION_ROOT , dissect_h235_SIGNED },
+ { 6, &hf_h225_cryptoFastStart, ASN1_EXTENSION_ROOT , dissect_h235_SIGNED },
+ { 7, &hf_h225_nestedcryptoToken, ASN1_EXTENSION_ROOT , dissect_h235_CryptoToken },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_CryptoH323Token(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_CryptoH323Token, CryptoH323Token_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_CryptoH323Token_sequence_of[1] = {
+ { &hf_h225_cryptoTokens_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_CryptoH323Token },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_CryptoH323Token(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_CryptoH323Token, SEQUENCE_OF_CryptoH323Token_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_FastStart_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *value_tvb = NULL;
+ char codec_str[50];
+ h225_packet_info* h225_pi;
+ codec_str[0] = '\0';
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &value_tvb);
+
+ if (value_tvb && tvb_reported_length(value_tvb)) {
+ dissect_h245_FastStart_OLC(value_tvb, actx->pinfo, tree, codec_str);
+ }
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ char temp[50];
+ snprintf(temp, 50, "%s %s", h225_pi->frame_label, codec_str);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ h225_pi->is_faststart = TRUE;
+ }
+ contains_faststart = TRUE;
+
+ return offset;
+}
+
+
+static const per_sequence_t FastStart_sequence_of[1] = {
+ { &hf_h225_FastStart_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_FastStart_item },
+};
+
+static int
+dissect_h225_FastStart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_FastStart, FastStart_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_EndpointIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h225_ScnConnectionType_vals[] = {
+ { 0, "unknown" },
+ { 1, "bChannel" },
+ { 2, "hybrid2x64" },
+ { 3, "hybrid384" },
+ { 4, "hybrid1536" },
+ { 5, "hybrid1920" },
+ { 6, "multirate" },
+ { 0, NULL }
+};
+
+static const per_choice_t ScnConnectionType_choice[] = {
+ { 0, &hf_h225_unknown , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_bChannel , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_hybrid2x64 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_hybrid384 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_hybrid1536 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_hybrid1920 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_multirate , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_ScnConnectionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_ScnConnectionType, ScnConnectionType_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_ScnConnectionAggregation_vals[] = {
+ { 0, "auto" },
+ { 1, "none" },
+ { 2, "h221" },
+ { 3, "bonded-mode1" },
+ { 4, "bonded-mode2" },
+ { 5, "bonded-mode3" },
+ { 0, NULL }
+};
+
+static const per_choice_t ScnConnectionAggregation_choice[] = {
+ { 0, &hf_h225_auto , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_none , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_h221 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_bonded_mode1 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_bonded_mode2 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_bonded_mode3 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_ScnConnectionAggregation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_ScnConnectionAggregation, ScnConnectionAggregation_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_connectionParameters_sequence[] = {
+ { &hf_h225_connectionType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ScnConnectionType },
+ { &hf_h225_numberOfScnConnections, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+ { &hf_h225_connectionAggregation, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ScnConnectionAggregation },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_connectionParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_connectionParameters, T_connectionParameters_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String_SIZE_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 32, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t Language_sequence_of[1] = {
+ { &hf_h225_Language_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_IA5String_SIZE_1_32 },
+};
+
+static int
+dissect_h225_Language(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_Language, Language_sequence_of);
+
+ return offset;
+}
+
+
+const value_string h225_PresentationIndicator_vals[] = {
+ { 0, "presentationAllowed" },
+ { 1, "presentationRestricted" },
+ { 2, "addressNotAvailable" },
+ { 0, NULL }
+};
+
+static const per_choice_t PresentationIndicator_choice[] = {
+ { 0, &hf_h225_presentationAllowed, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_presentationRestricted, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_addressNotAvailable, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_PresentationIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_PresentationIndicator, PresentationIndicator_choice,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string h225_ScreeningIndicator_vals[] = {
+ { 0, "userProvidedNotScreened" },
+ { 1, "userProvidedVerifiedAndPassed" },
+ { 2, "userProvidedVerifiedAndFailed" },
+ { 3, "networkProvided" },
+ { 0, NULL }
+};
+
+
+int
+dissect_h225_ScreeningIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
+ 4, NULL, TRUE, 0, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String_SIZE_0_512(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 0, 512, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_H248SignalsDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BMPString_SIZE_1_512(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ 1, 512, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h225_T_billingMode_vals[] = {
+ { 0, "credit" },
+ { 1, "debit" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_billingMode_choice[] = {
+ { 0, &hf_h225_credit , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_debit , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_billingMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_billingMode, T_billingMode_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_1_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 4294967295U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h225_CallCreditServiceControl_callStartingPoint_vals[] = {
+ { 0, "alerting" },
+ { 1, "connect" },
+ { 0, NULL }
+};
+
+static const per_choice_t CallCreditServiceControl_callStartingPoint_choice[] = {
+ { 0, &hf_h225_alerting_flg , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_connect_flg , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_CallCreditServiceControl_callStartingPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallCreditServiceControl_callStartingPoint, CallCreditServiceControl_callStartingPoint_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallCreditServiceControl_sequence[] = {
+ { &hf_h225_amountString , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BMPString_SIZE_1_512 },
+ { &hf_h225_billingMode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_billingMode },
+ { &hf_h225_callDurationLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_INTEGER_1_4294967295 },
+ { &hf_h225_enforceCallDurationLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_callStartingPoint, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CallCreditServiceControl_callStartingPoint },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallCreditServiceControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallCreditServiceControl, CallCreditServiceControl_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_ServiceControlDescriptor_vals[] = {
+ { 0, "url" },
+ { 1, "signal" },
+ { 2, "nonStandard" },
+ { 3, "callCreditServiceControl" },
+ { 0, NULL }
+};
+
+static const per_choice_t ServiceControlDescriptor_choice[] = {
+ { 0, &hf_h225_url , ASN1_EXTENSION_ROOT , dissect_h225_IA5String_SIZE_0_512 },
+ { 1, &hf_h225_signal , ASN1_EXTENSION_ROOT , dissect_h225_H248SignalsDescriptor },
+ { 2, &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 3, &hf_h225_callCreditServiceControl, ASN1_EXTENSION_ROOT , dissect_h225_CallCreditServiceControl },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_ServiceControlDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_ServiceControlDescriptor, ServiceControlDescriptor_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_ServiceControlSession_reason_vals[] = {
+ { 0, "open" },
+ { 1, "refresh" },
+ { 2, "close" },
+ { 0, NULL }
+};
+
+static const per_choice_t ServiceControlSession_reason_choice[] = {
+ { 0, &hf_h225_open , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_refresh , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_close , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_ServiceControlSession_reason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_ServiceControlSession_reason, ServiceControlSession_reason_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ServiceControlSession_sequence[] = {
+ { &hf_h225_sessionId_0_255, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_255 },
+ { &hf_h225_contents , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ServiceControlDescriptor },
+ { &hf_h225_reason , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ServiceControlSession_reason },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_ServiceControlSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ServiceControlSession, ServiceControlSession_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ServiceControlSession_sequence_of[1] = {
+ { &hf_h225_serviceControl_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_ServiceControlSession },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_ServiceControlSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_ServiceControlSession, SEQUENCE_OF_ServiceControlSession_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 4294967295U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String_SIZE_1_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ 1, 128, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_3_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 3, 4, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CarrierInfo_sequence[] = {
+ { &hf_h225_carrierIdentificationCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING_SIZE_3_4 },
+ { &hf_h225_carrierName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_IA5String_SIZE_1_128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CarrierInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CarrierInfo, CarrierInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallsAvailable_sequence[] = {
+ { &hf_h225_calls , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_4294967295 },
+ { &hf_h225_group_IA5String, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_IA5String_SIZE_1_128 },
+ { &hf_h225_carrier , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CarrierInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallsAvailable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallsAvailable, CallsAvailable_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_CallsAvailable_sequence_of[1] = {
+ { &hf_h225_voiceGwCallsAvailable_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_CallsAvailable },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_CallsAvailable(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_CallsAvailable, SEQUENCE_OF_CallsAvailable_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallCapacityInfo_sequence[] = {
+ { &hf_h225_voiceGwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h310GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h320GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h321GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h322GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h323GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_h324GwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_t120OnlyGwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_t38FaxAnnexbOnlyGwCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_terminalCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_mcuCallsAvailable, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { &hf_h225_sipGwCallsAvailable, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallsAvailable },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallCapacityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallCapacityInfo, CallCapacityInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallCapacity_sequence[] = {
+ { &hf_h225_maximumCallCapacity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CallCapacityInfo },
+ { &hf_h225_currentCallCapacity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CallCapacityInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallCapacity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallCapacity, CallCapacity_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_2_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 2, 4, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_cic_2_4_sequence_of[1] = {
+ { &hf_h225_cic_2_4_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_2_4 },
+};
+
+static int
+dissect_h225_T_cic_2_4(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_cic_2_4, T_cic_2_4_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_2_5(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 2, 5, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t CicInfo_sequence[] = {
+ { &hf_h225_cic_2_4 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_cic_2_4 },
+ { &hf_h225_pointCode , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_2_5 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CicInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CicInfo, CicInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_member_sequence_of[1] = {
+ { &hf_h225_member_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_65535 },
+};
+
+static int
+dissect_h225_T_member(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_member, T_member_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t GroupID_sequence[] = {
+ { &hf_h225_member , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_member },
+ { &hf_h225_group_IA5String, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_IA5String_SIZE_1_128 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GroupID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GroupID, GroupID_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CircuitIdentifier_sequence[] = {
+ { &hf_h225_cic , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CicInfo },
+ { &hf_h225_group , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GroupID },
+ { &hf_h225_carrier , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CarrierInfo },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_CircuitIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CircuitIdentifier, CircuitIdentifier_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_standard(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ guint32 value_int = (guint32)-1;
+ gef_ctx_t *gefx;
+
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 16383U, &value_int, TRUE);
+
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = wmem_strdup_printf(actx->pinfo->pool, "%u", value_int);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_oid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ const gchar *oid_str = NULL;
+ gef_ctx_t *gefx;
+
+ offset = dissect_per_object_identifier_str(tvb, offset, actx, tree, hf_index, &oid_str);
+
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) gefx->id = oid_str;
+
+ return offset;
+}
+
+
+const value_string h225_GenericIdentifier_vals[] = {
+ { 0, "standard" },
+ { 1, "oid" },
+ { 2, "nonStandard" },
+ { 0, NULL }
+};
+
+static const per_choice_t GenericIdentifier_choice[] = {
+ { 0, &hf_h225_standard , ASN1_EXTENSION_ROOT , dissect_h225_T_standard },
+ { 1, &hf_h225_oid , ASN1_EXTENSION_ROOT , dissect_h225_T_oid },
+ { 2, &hf_h225_genericIdentifier_nonStandard, ASN1_EXTENSION_ROOT , dissect_h225_GloballyUniqueID },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_GenericIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gef_ctx_t *gefx;
+ proto_item* ti;
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_GenericIdentifier, GenericIdentifier_choice,
+ NULL);
+
+ gef_ctx_update_key(actx->pinfo->pool, gef_ctx_get(actx->private_data));
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string_new(gef_name_dissector_table, gefx->key, tvb_new_subset_length_caplen(tvb, offset>>3, 0, 0), actx->pinfo, tree, FALSE, actx);
+ }
+ actx->private_data = gefx; /* subdissector could overwrite it */
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_raw(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *value_tvb;
+ gef_ctx_t *gefx;
+ proto_item* ti;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &value_tvb);
+
+ gefx = gef_ctx_get(actx->private_data);
+ if (gefx) {
+ ti = proto_tree_add_string(tree, hf_h225_debug_dissector_try_string, tvb, offset>>3, 0, gefx->key);
+ proto_item_set_hidden(ti);
+ dissector_try_string(gef_content_dissector_table, gefx->key, value_tvb, actx->pinfo, tree, actx);
+ }
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_IA5String(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_IA5String(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BMPString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_512_OF_EnumeratedParameter_sequence_of[1] = {
+ { &hf_h225_parameters_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_EnumeratedParameter },
+};
+
+static int
+dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter, SEQUENCE_SIZE_1_512_OF_EnumeratedParameter_sequence_of,
+ 1, 512, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_16_OF_GenericData_sequence_of[1] = {
+ { &hf_h225_nested_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_GenericData },
+};
+
+static int
+dissect_h225_SEQUENCE_SIZE_1_16_OF_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData, SEQUENCE_SIZE_1_16_OF_GenericData_sequence_of,
+ 1, 16, FALSE);
+
+ return offset;
+}
+
+
+static const value_string h225_Content_vals[] = {
+ { 0, "raw" },
+ { 1, "text" },
+ { 2, "unicode" },
+ { 3, "bool" },
+ { 4, "number8" },
+ { 5, "number16" },
+ { 6, "number32" },
+ { 7, "id" },
+ { 8, "alias" },
+ { 9, "transport" },
+ { 10, "compound" },
+ { 11, "nested" },
+ { 0, NULL }
+};
+
+static const per_choice_t Content_choice[] = {
+ { 0, &hf_h225_raw , ASN1_EXTENSION_ROOT , dissect_h225_T_raw },
+ { 1, &hf_h225_text , ASN1_EXTENSION_ROOT , dissect_h225_IA5String },
+ { 2, &hf_h225_unicode , ASN1_EXTENSION_ROOT , dissect_h225_BMPString },
+ { 3, &hf_h225_bool , ASN1_EXTENSION_ROOT , dissect_h225_BOOLEAN },
+ { 4, &hf_h225_number8 , ASN1_EXTENSION_ROOT , dissect_h225_INTEGER_0_255 },
+ { 5, &hf_h225_number16 , ASN1_EXTENSION_ROOT , dissect_h225_INTEGER_0_65535 },
+ { 6, &hf_h225_number32 , ASN1_EXTENSION_ROOT , dissect_h225_INTEGER_0_4294967295 },
+ { 7, &hf_h225_id , ASN1_EXTENSION_ROOT , dissect_h225_GenericIdentifier },
+ { 8, &hf_h225_alias , ASN1_EXTENSION_ROOT , dissect_h225_AliasAddress },
+ { 9, &hf_h225_transport , ASN1_EXTENSION_ROOT , dissect_h225_TransportAddress },
+ { 10, &hf_h225_compound , ASN1_EXTENSION_ROOT , dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter },
+ { 11, &hf_h225_nested , ASN1_EXTENSION_ROOT , dissect_h225_SEQUENCE_SIZE_1_16_OF_GenericData },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_Content(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_Content, Content_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t EnumeratedParameter_sequence[] = {
+ { &hf_h225_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_GenericIdentifier },
+ { &hf_h225_content , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_Content },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers)));
+ const unsigned cycle_size = 4;
+ unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id);
+ DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH);
+ p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size);
+ gef_ctx_t *parent_gefx;
+
+ parent_gefx = gef_ctx_get(actx->private_data);
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, parent_gefx, NULL);
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_EnumeratedParameter, EnumeratedParameter_sequence);
+
+ p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size);
+ actx->private_data = parent_gefx;
+ return offset;
+}
+
+
+static const per_sequence_t GenericData_sequence[] = {
+ { &hf_h225_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_GenericIdentifier },
+ { &hf_h225_parameters , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ const int proto_id = GPOINTER_TO_INT(wmem_list_frame_data(wmem_list_tail(actx->pinfo->layers)));
+ const unsigned cycle_size = 6;
+ unsigned recursion_depth = p_get_proto_depth(actx->pinfo, proto_id);
+ DISSECTOR_ASSERT(recursion_depth <= MAX_RECURSION_DEPTH);
+ p_set_proto_depth(actx->pinfo, proto_id, recursion_depth + cycle_size);
+ void *priv_data = actx->private_data;
+ gef_ctx_t *gefx;
+
+ /* check if not inherited from FeatureDescriptor */
+ gefx = gef_ctx_get(actx->private_data);
+ if (!gefx) {
+ gefx = gef_ctx_alloc(actx->pinfo->pool, NULL, "GenericData");
+ actx->private_data = gefx;
+ }
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GenericData, GenericData_sequence);
+
+ p_set_proto_depth(actx->pinfo, proto_id, recursion_depth - cycle_size);
+ actx->private_data = priv_data;
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_GenericData_sequence_of[1] = {
+ { &hf_h225_genericData_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_GenericData },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_GenericData, SEQUENCE_OF_GenericData_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t CircuitInfo_sequence[] = {
+ { &hf_h225_sourceCircuitID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CircuitIdentifier },
+ { &hf_h225_destinationCircuitID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CircuitIdentifier },
+ { &hf_h225_genericData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_CircuitInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CircuitInfo, CircuitInfo_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_FeatureDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ void *priv_data = actx->private_data;
+ actx->private_data = gef_ctx_alloc(actx->pinfo->pool, NULL, "FeatureDescriptor");
+ offset = dissect_h225_GenericData(tvb, offset, actx, tree, hf_index);
+
+ actx->private_data = priv_data;
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_FeatureDescriptor_sequence_of[1] = {
+ { &hf_h225_neededFeatures_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_FeatureDescriptor },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_FeatureDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_FeatureDescriptor, SEQUENCE_OF_FeatureDescriptor_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_ParallelH245Control_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *h245_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &h245_tvb);
+
+ next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
+
+ return offset;
+}
+
+
+static const per_sequence_t ParallelH245Control_sequence_of[1] = {
+ { &hf_h225_ParallelH245Control_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_ParallelH245Control_item },
+};
+
+static int
+dissect_h225_ParallelH245Control(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_ParallelH245Control, ParallelH245Control_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t ExtendedAliasAddress_sequence[] = {
+ { &hf_h225_extAliasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
+ { &hf_h225_presentationIndicator, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ExtendedAliasAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ExtendedAliasAddress, ExtendedAliasAddress_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ExtendedAliasAddress_sequence_of[1] = {
+ { &hf_h225_additionalSourceAddresses_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_ExtendedAliasAddress },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_ExtendedAliasAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_ExtendedAliasAddress, SEQUENCE_OF_ExtendedAliasAddress_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_1_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 31U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BMPString_SIZE_1_80(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_BMPString(tvb, offset, actx, tree, hf_index,
+ 1, 80, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t DisplayName_sequence[] = {
+ { &hf_h225_displayName_language, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_h225_IA5String },
+ { &hf_h225_name , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_BMPString_SIZE_1_80 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_DisplayName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisplayName, DisplayName_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_DisplayName_sequence_of[1] = {
+ { &hf_h225_displayName_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_DisplayName },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_DisplayName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_DisplayName, SEQUENCE_OF_DisplayName_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t Setup_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_sourceAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_setup_UUIE_sourceInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_destinationAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_destCallSignalAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_destExtraCallInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_destExtraCRV , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CallReferenceValue },
+ { &hf_h225_activeMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_conferenceGoal , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_conferenceGoal },
+ { &hf_h225_callServices , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_QseriesOptions },
+ { &hf_h225_callType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallType },
+ { &hf_h225_sourceCallSignalAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_uUIE_remoteExtensionAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AliasAddress },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_h245SecurityCapability, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_H245Security },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_mediaWaitForConnect, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_canOverlapSend , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_endpointIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointIdentifier },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_connectionParameters, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_connectionParameters },
+ { &hf_h225_language , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_Language },
+ { &hf_h225_presentationIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_symmetricOperationRequired, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_desiredProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_neededFeatures , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { &hf_h225_desiredFeatures, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { &hf_h225_supportedFeatures, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { &hf_h225_parallelH245Control, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ParallelH245Control },
+ { &hf_h225_additionalSourceAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ExtendedAliasAddress },
+ { &hf_h225_hopCount_1_31 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_INTEGER_1_31 },
+ { &hf_h225_displayName , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DisplayName },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Setup_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ contains_faststart = FALSE;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Setup_UUIE, Setup_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_SETUP;
+ if (contains_faststart) {
+ char temp[50];
+ snprintf(temp, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ } else
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t FeatureSet_sequence[] = {
+ { &hf_h225_replacementFeatureSet, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_neededFeatures , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { &hf_h225_desiredFeatures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { &hf_h225_supportedFeatures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_FeatureDescriptor },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_FeatureSet(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_FeatureSet, FeatureSet_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallProceeding_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_uUIE_destinationInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_h245SecurityMode, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245Security },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallProceeding_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallProceeding_UUIE, CallProceeding_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_CALL_PROCEDING;
+ if (contains_faststart) {
+ char temp[50];
+ snprintf(temp, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ } else
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Connect_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_uUIE_destinationInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_h245SecurityMode, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245Security },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_language , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_Language },
+ { &hf_h225_connectedAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_presentationIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_displayName , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DisplayName },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Connect_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Connect_UUIE, Connect_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_CONNECT;
+ if (contains_faststart) {
+ char temp[50];
+ snprintf(temp, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ } else
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Alerting_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_uUIE_destinationInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_h245SecurityMode, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245Security },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_alertingAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_presentationIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_displayName , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DisplayName },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Alerting_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Alerting_UUIE, Alerting_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_ALERTING;
+ if (contains_faststart) {
+ char temp[50];
+ snprintf(temp, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ } else
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Information_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Information_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Information_UUIE, Information_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_INFORMATION;
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const value_string h225_SecurityErrors_vals[] = {
+ { 0, "securityWrongSyncTime" },
+ { 1, "securityReplay" },
+ { 2, "securityWrongGeneralID" },
+ { 3, "securityWrongSendersID" },
+ { 4, "securityIntegrityFailed" },
+ { 5, "securityWrongOID" },
+ { 6, "securityDHmismatch" },
+ { 7, "securityCertificateExpired" },
+ { 8, "securityCertificateDateInvalid" },
+ { 9, "securityCertificateRevoked" },
+ { 10, "securityCertificateNotReadable" },
+ { 11, "securityCertificateSignatureInvalid" },
+ { 12, "securityCertificateMissing" },
+ { 13, "securityCertificateIncomplete" },
+ { 14, "securityUnsupportedCertificateAlgOID" },
+ { 15, "securityUnknownCA" },
+ { 0, NULL }
+};
+
+static const per_choice_t SecurityErrors_choice[] = {
+ { 0, &hf_h225_securityWrongSyncTime, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_securityReplay , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_securityWrongGeneralID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_securityWrongSendersID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_securityIntegrityFailed, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_securityWrongOID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_securityDHmismatch, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 7, &hf_h225_securityCertificateExpired, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 8, &hf_h225_securityCertificateDateInvalid, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 9, &hf_h225_securityCertificateRevoked, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 10, &hf_h225_securityCertificateNotReadable, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 11, &hf_h225_securityCertificateSignatureInvalid, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 12, &hf_h225_securityCertificateMissing, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 13, &hf_h225_securityCertificateIncomplete, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 14, &hf_h225_securityUnsupportedCertificateAlgOID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 15, &hf_h225_securityUnknownCA, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_SecurityErrors(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_SecurityErrors, SecurityErrors_choice,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string h225_ReleaseCompleteReason_vals[] = {
+ { 0, "noBandwidth" },
+ { 1, "gatekeeperResources" },
+ { 2, "unreachableDestination" },
+ { 3, "destinationRejection" },
+ { 4, "invalidRevision" },
+ { 5, "noPermission" },
+ { 6, "unreachableGatekeeper" },
+ { 7, "gatewayResources" },
+ { 8, "badFormatAddress" },
+ { 9, "adaptiveBusy" },
+ { 10, "inConf" },
+ { 11, "undefinedReason" },
+ { 12, "facilityCallDeflection" },
+ { 13, "securityDenied" },
+ { 14, "calledPartyNotRegistered" },
+ { 15, "callerNotRegistered" },
+ { 16, "newConnectionNeeded" },
+ { 17, "nonStandardReason" },
+ { 18, "replaceWithConferenceInvite" },
+ { 19, "genericDataReason" },
+ { 20, "neededFeatureNotSupported" },
+ { 21, "tunnelledSignallingRejected" },
+ { 22, "invalidCID" },
+ { 23, "securityError" },
+ { 24, "hopCountExceeded" },
+ { 0, NULL }
+};
+
+static const per_choice_t ReleaseCompleteReason_choice[] = {
+ { 0, &hf_h225_noBandwidth , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_gatekeeperResources, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_unreachableDestination, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_destinationRejection, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_invalidRevision, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_noPermission , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_unreachableGatekeeper, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 7, &hf_h225_gatewayResources, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 8, &hf_h225_badFormatAddress, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 9, &hf_h225_adaptiveBusy , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 10, &hf_h225_inConf , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 11, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 12, &hf_h225_facilityCallDeflection, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 13, &hf_h225_securityDenied , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 14, &hf_h225_calledPartyNotRegistered, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 15, &hf_h225_callerNotRegistered, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 16, &hf_h225_newConnectionNeeded, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 17, &hf_h225_nonStandardReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NonStandardParameter },
+ { 18, &hf_h225_replaceWithConferenceInvite, ASN1_NOT_EXTENSION_ROOT, dissect_h225_ConferenceIdentifier },
+ { 19, &hf_h225_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 20, &hf_h225_neededFeatureNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 21, &hf_h225_tunnelledSignallingRejected, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 22, &hf_h225_invalidCID , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 23, &hf_h225_rLC_securityError, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors },
+ { 24, &hf_h225_hopCountExceeded, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_ReleaseCompleteReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_ReleaseCompleteReason, ReleaseCompleteReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t ReleaseComplete_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_releaseCompleteReason, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ReleaseCompleteReason },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_busyAddress , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_presentationIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_destinationInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_displayName , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DisplayName },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ReleaseComplete_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ReleaseComplete_UUIE, ReleaseComplete_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_RELEASE_COMPLET;
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+const value_string FacilityReason_vals[] = {
+ { 0, "routeCallToGatekeeper" },
+ { 1, "callForwarded" },
+ { 2, "routeCallToMC" },
+ { 3, "undefinedReason" },
+ { 4, "conferenceListChoice" },
+ { 5, "startH245" },
+ { 6, "noH245" },
+ { 7, "newTokens" },
+ { 8, "featureSetUpdate" },
+ { 9, "forwardedElements" },
+ { 10, "transportedInformation" },
+ { 0, NULL }
+};
+
+static const per_choice_t FacilityReason_choice[] = {
+ { 0, &hf_h225_routeCallToGatekeeper, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_callForwarded , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_routeCallToMC , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_conferenceListChoice, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 5, &hf_h225_startH245 , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 6, &hf_h225_noH245 , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 7, &hf_h225_newTokens , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 8, &hf_h225_featureSetUpdate, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 9, &hf_h225_forwardedElements, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 10, &hf_h225_transportedInformation, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_FacilityReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_FacilityReason, FacilityReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t ConferenceList_sequence[] = {
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ConferenceIdentifier },
+ { &hf_h225_conferenceAlias, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_AliasAddress },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ConferenceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ConferenceList, ConferenceList_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ConferenceList_sequence_of[1] = {
+ { &hf_h225_conferences_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceList },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_ConferenceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_ConferenceList, SEQUENCE_OF_ConferenceList_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t Facility_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_alternativeAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_alternativeAliasAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ConferenceIdentifier },
+ { &hf_h225_facilityReason , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_FacilityReason },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_destExtraCallInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_uUIE_remoteExtensionAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AliasAddress },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_conferences , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ConferenceList },
+ { &hf_h225_h245Address , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_fastStart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_uUIE_destinationInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_h245SecurityMode, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245Security },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Facility_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Facility_UUIE, Facility_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_FACILITY;
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Progress_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_uUIE_destinationInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_h245Address , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245TransportAddress },
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_h245SecurityMode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_H245Security },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_fastStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_FastStart },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_fastConnectRefused, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Progress_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Progress_UUIE, Progress_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_PROGRESS;
+ if (contains_faststart) {
+ char temp[50];
+ snprintf(temp, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
+ (void) g_strlcpy(h225_pi->frame_label, temp, 50);
+ } else
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_empty_flg(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
+
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_EMPTY;
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Status_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Status_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Status_UUIE, Status_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_STATUS;
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t StatusInquiry_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_StatusInquiry_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_StatusInquiry_UUIE, StatusInquiry_UUIE_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SetupAcknowledge_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_SetupAcknowledge_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_SetupAcknowledge_UUIE, SetupAcknowledge_UUIE_sequence);
+
+ /* Add to packet info */
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->cs_type = H225_SETUP_ACK;
+ snprintf(h225_pi->frame_label, 50, "%s", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"));
+ }
+ return offset;
+}
+
+
+static const per_sequence_t Notify_UUIE_sequence[] = {
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_connectedAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_presentationIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_PresentationIndicator },
+ { &hf_h225_screeningIndicator, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ScreeningIndicator },
+ { &hf_h225_destinationInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_displayName , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_DisplayName },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Notify_UUIE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Notify_UUIE, Notify_UUIE_sequence);
+
+ return offset;
+}
+
+
+const value_string T_h323_message_body_vals[] = {
+ { 0, "setup" },
+ { 1, "callProceeding" },
+ { 2, "connect" },
+ { 3, "alerting" },
+ { 4, "information" },
+ { 5, "releaseComplete" },
+ { 6, "facility" },
+ { 7, "progress" },
+ { 8, "empty" },
+ { 9, "status" },
+ { 10, "statusInquiry" },
+ { 11, "setupAcknowledge" },
+ { 12, "notify" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_h323_message_body_choice[] = {
+ { 0, &hf_h225_setup , ASN1_EXTENSION_ROOT , dissect_h225_Setup_UUIE },
+ { 1, &hf_h225_callProceeding , ASN1_EXTENSION_ROOT , dissect_h225_CallProceeding_UUIE },
+ { 2, &hf_h225_connect , ASN1_EXTENSION_ROOT , dissect_h225_Connect_UUIE },
+ { 3, &hf_h225_alerting , ASN1_EXTENSION_ROOT , dissect_h225_Alerting_UUIE },
+ { 4, &hf_h225_information , ASN1_EXTENSION_ROOT , dissect_h225_Information_UUIE },
+ { 5, &hf_h225_releaseComplete, ASN1_EXTENSION_ROOT , dissect_h225_ReleaseComplete_UUIE },
+ { 6, &hf_h225_facility , ASN1_EXTENSION_ROOT , dissect_h225_Facility_UUIE },
+ { 7, &hf_h225_progress , ASN1_NOT_EXTENSION_ROOT, dissect_h225_Progress_UUIE },
+ { 8, &hf_h225_empty_flg , ASN1_NOT_EXTENSION_ROOT, dissect_h225_T_empty_flg },
+ { 9, &hf_h225_status , ASN1_NOT_EXTENSION_ROOT, dissect_h225_Status_UUIE },
+ { 10, &hf_h225_statusInquiry , ASN1_NOT_EXTENSION_ROOT, dissect_h225_StatusInquiry_UUIE },
+ { 11, &hf_h225_setupAcknowledge, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SetupAcknowledge_UUIE },
+ { 12, &hf_h225_notify , ASN1_NOT_EXTENSION_ROOT, dissect_h225_Notify_UUIE },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_h323_message_body(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 message_body_val;
+ h225_packet_info* h225_pi;
+
+ contains_faststart = FALSE;
+ call_id_guid = NULL;
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h323_message_body, T_h323_message_body_choice,
+ &message_body_val);
+
+ col_append_fstr(actx->pinfo->cinfo, COL_INFO, "CS: %s ",
+ val_to_str(message_body_val, T_h323_message_body_vals, "<unknown>"));
+
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ if (h225_pi->msg_type == H225_CS) {
+ /* Don't override msg_tag value from IRR */
+ h225_pi->msg_tag = message_body_val;
+ }
+
+ if (call_id_guid) {
+ h225_pi->guid = *call_id_guid;
+ }
+ }
+
+ if (contains_faststart == TRUE )
+ {
+ col_append_str(actx->pinfo->cinfo, COL_INFO, "OpenLogicalChannel " );
+ }
+
+ col_set_fence(actx->pinfo->cinfo,COL_INFO);
+
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h4501SupplementaryService_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *h4501_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &h4501_tvb);
+
+ if (h4501_tvb && tvb_reported_length(h4501_tvb)) {
+ call_dissector(h4501_handle, h4501_tvb, actx->pinfo, tree);
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t T_h4501SupplementaryService_sequence_of[1] = {
+ { &hf_h225_h4501SupplementaryService_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_h4501SupplementaryService_item },
+};
+
+static int
+dissect_h225_T_h4501SupplementaryService(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_h4501SupplementaryService, T_h4501SupplementaryService_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_h245Tunnelling(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, &(h225_pi->is_h245Tunneling));
+
+ }
+ return offset;
+}
+
+
+
+static int
+dissect_h225_H245Control_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *h245_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &h245_tvb);
+
+ next_tvb_add_handle(h245_list, h245_tvb, (h225_h245_in_tree)?tree:NULL, h245dg_handle);
+
+ return offset;
+}
+
+
+static const per_sequence_t H245Control_sequence_of[1] = {
+ { &hf_h225_H245Control_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_H245Control_item },
+};
+
+static int
+dissect_h225_H245Control(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_H245Control, H245Control_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_NonStandardParameter_sequence_of[1] = {
+ { &hf_h225_nonStandardControl_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_NonStandardParameter },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_NonStandardParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_NonStandardParameter, SEQUENCE_OF_NonStandardParameter_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallLinkage_sequence[] = {
+ { &hf_h225_globalCallId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GloballyUniqueID },
+ { &hf_h225_threadId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GloballyUniqueID },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallLinkage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallLinkage, CallLinkage_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_T_messageContent_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tvbuff_t *next_tvb = NULL;
+
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, &next_tvb);
+
+ next_tvb_add_handle(tp_list, next_tvb, (h225_tp_in_tree)?tree:NULL, tp_handle);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_messageContent_sequence_of[1] = {
+ { &hf_h225_messageContent_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_messageContent_item },
+};
+
+static int
+dissect_h225_T_messageContent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_messageContent, T_messageContent_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_tunnelledSignallingMessage_sequence[] = {
+ { &hf_h225_tunnelledProtocolID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TunnelledProtocol },
+ { &hf_h225_messageContent , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_messageContent },
+ { &hf_h225_tunnellingRequired, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_tunnelledSignallingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ tp_handle = NULL;
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_tunnelledSignallingMessage, T_tunnelledSignallingMessage_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t StimulusControl_sequence[] = {
+ { &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_isText , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_h248Message , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_OCTET_STRING },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_StimulusControl(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_StimulusControl, StimulusControl_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H323_UU_PDU_sequence[] = {
+ { &hf_h225_h323_message_body, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_h323_message_body },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_h4501SupplementaryService, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_h4501SupplementaryService },
+ { &hf_h225_h245Tunnelling , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_T_h245Tunnelling },
+ { &hf_h225_h245Control , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_H245Control },
+ { &hf_h225_nonStandardControl, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_NonStandardParameter },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_tunnelledSignallingMessage, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_tunnelledSignallingMessage },
+ { &hf_h225_provisionalRespToH245Tunnelling, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_stimulusControl, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_StimulusControl },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H323_UU_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H323_UU_PDU, H323_UU_PDU_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_1_131(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 1, 131, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_user_data_sequence[] = {
+ { &hf_h225_protocol_discriminator, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_255 },
+ { &hf_h225_user_information, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING_SIZE_1_131 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_user_data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_user_data, T_user_data_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t H323_UserInformation_sequence[] = {
+ { &hf_h225_h323_uu_pdu , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_H323_UU_PDU },
+ { &hf_h225_user_data , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_user_data },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_H323_UserInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_H323_UserInformation, H323_UserInformation_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_range_sequence[] = {
+ { &hf_h225_startOfRange , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_PartyNumber },
+ { &hf_h225_endOfRange , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_PartyNumber },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_range(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_range, T_range_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_AddressPattern_vals[] = {
+ { 0, "wildcard" },
+ { 1, "range" },
+ { 0, NULL }
+};
+
+static const per_choice_t AddressPattern_choice[] = {
+ { 0, &hf_h225_wildcard , ASN1_EXTENSION_ROOT , dissect_h225_AliasAddress },
+ { 1, &hf_h225_range , ASN1_EXTENSION_ROOT , dissect_h225_T_range },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_AddressPattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_AddressPattern, AddressPattern_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_TransportAddress_sequence_of[1] = {
+ { &hf_h225_callSignalAddress_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_TransportAddress, SEQUENCE_OF_TransportAddress_sequence_of);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 0U, 127U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t AlternateTransportAddresses_sequence[] = {
+ { &hf_h225_annexE , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_sctp , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportAddress },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_AlternateTransportAddresses(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AlternateTransportAddresses, AlternateTransportAddresses_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t Endpoint_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_aliasAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_rasAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_endpointType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_priority , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_INTEGER_0_127 },
+ { &hf_h225_remoteExtensionAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_destExtraCallInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_alternateTransportAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateTransportAddresses },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_Endpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_Endpoint, Endpoint_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_UseSpecifiedTransport_vals[] = {
+ { 0, "tcp" },
+ { 1, "annexE" },
+ { 2, "sctp" },
+ { 0, NULL }
+};
+
+static const per_choice_t UseSpecifiedTransport_choice[] = {
+ { 0, &hf_h225_tcp , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_annexE_flg , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_sctp_flg , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_UseSpecifiedTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_UseSpecifiedTransport, UseSpecifiedTransport_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t AlternateGK_sequence[] = {
+ { &hf_h225_alternateGK_rasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_needToRegister , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_priority , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_0_127 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_AlternateGK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AlternateGK, AlternateGK_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_AlternateGK_sequence_of[1] = {
+ { &hf_h225_alternateGatekeeper_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_AlternateGK },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_AlternateGK(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_AlternateGK, SEQUENCE_OF_AlternateGK_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t AltGKInfo_sequence[] = {
+ { &hf_h225_alternateGatekeeper, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_AlternateGK },
+ { &hf_h225_altGKisPermanent, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_AltGKInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AltGKInfo, AltGKInfo_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_SecurityErrors2_vals[] = {
+ { 0, "securityWrongSyncTime" },
+ { 1, "securityReplay" },
+ { 2, "securityWrongGeneralID" },
+ { 3, "securityWrongSendersID" },
+ { 4, "securityIntegrityFailed" },
+ { 5, "securityWrongOID" },
+ { 0, NULL }
+};
+
+static const per_choice_t SecurityErrors2_choice[] = {
+ { 0, &hf_h225_securityWrongSyncTime, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_securityReplay , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_securityWrongGeneralID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_securityWrongSendersID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_securityIntegrityFailed, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_securityWrongOID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_SecurityErrors2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_SecurityErrors2, SecurityErrors2_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_RequestSeqNum(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 65535U, &(h225_pi->requestSeqNum), FALSE);
+
+ }
+ return offset;
+}
+
+
+
+int
+dissect_h225_TimeToLive(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 4294967295U, NULL, FALSE);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_H248PackagesDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_EncryptIntAlg_vals[] = {
+ { 0, "nonStandard" },
+ { 1, "isoAlgorithm" },
+ { 0, NULL }
+};
+
+static const per_choice_t EncryptIntAlg_choice[] = {
+ { 0, &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 1, &hf_h225_isoAlgorithm , ASN1_EXTENSION_ROOT , dissect_h225_OBJECT_IDENTIFIER },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_EncryptIntAlg(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_EncryptIntAlg, EncryptIntAlg_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_NonIsoIntegrityMechanism_vals[] = {
+ { 0, "hMAC-MD5" },
+ { 1, "hMAC-iso10118-2-s" },
+ { 2, "hMAC-iso10118-2-l" },
+ { 3, "hMAC-iso10118-3" },
+ { 0, NULL }
+};
+
+static const per_choice_t NonIsoIntegrityMechanism_choice[] = {
+ { 0, &hf_h225_hMAC_MD5 , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_hMAC_iso10118_2_s, ASN1_EXTENSION_ROOT , dissect_h225_EncryptIntAlg },
+ { 2, &hf_h225_hMAC_iso10118_2_l, ASN1_EXTENSION_ROOT , dissect_h225_EncryptIntAlg },
+ { 3, &hf_h225_hMAC_iso10118_3, ASN1_EXTENSION_ROOT , dissect_h225_OBJECT_IDENTIFIER },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_NonIsoIntegrityMechanism(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_NonIsoIntegrityMechanism, NonIsoIntegrityMechanism_choice,
+ NULL);
+
+ return offset;
+}
+
+
+const value_string h225_IntegrityMechanism_vals[] = {
+ { 0, "nonStandard" },
+ { 1, "digSig" },
+ { 2, "iso9797" },
+ { 3, "nonIsoIM" },
+ { 0, NULL }
+};
+
+static const per_choice_t IntegrityMechanism_choice[] = {
+ { 0, &hf_h225_nonStandard , ASN1_EXTENSION_ROOT , dissect_h225_NonStandardParameter },
+ { 1, &hf_h225_digSig , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_iso9797 , ASN1_EXTENSION_ROOT , dissect_h225_OBJECT_IDENTIFIER },
+ { 3, &hf_h225_nonIsoIM , ASN1_EXTENSION_ROOT , dissect_h225_NonIsoIntegrityMechanism },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_IntegrityMechanism(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_IntegrityMechanism, IntegrityMechanism_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_BIT_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE, NULL, 0, NULL, NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ICV_sequence[] = {
+ { &hf_h225_algorithmOID , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OBJECT_IDENTIFIER },
+ { &hf_h225_icv , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_BIT_STRING },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_ICV(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ICV, ICV_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CapacityReportingCapability_sequence[] = {
+ { &hf_h225_canReportCallCapacity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CapacityReportingCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CapacityReportingCapability, CapacityReportingCapability_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CapacityReportingSpecification_when_sequence[] = {
+ { &hf_h225_callStart , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_callEnd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CapacityReportingSpecification_when(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CapacityReportingSpecification_when, CapacityReportingSpecification_when_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CapacityReportingSpecification_sequence[] = {
+ { &hf_h225_capacityReportingSpecification_when, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CapacityReportingSpecification_when },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CapacityReportingSpecification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CapacityReportingSpecification, CapacityReportingSpecification_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasUsageInfoTypes_sequence[] = {
+ { &hf_h225_nonStandardUsageTypes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_NonStandardParameter },
+ { &hf_h225_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_endTime_flg , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_terminationCause_flg, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RasUsageInfoTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasUsageInfoTypes, RasUsageInfoTypes_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasUsageSpecification_when_sequence[] = {
+ { &hf_h225_start , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_end , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_inIrr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RasUsageSpecification_when(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasUsageSpecification_when, RasUsageSpecification_when_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasUsageSpecificationcallStartingPoint_sequence[] = {
+ { &hf_h225_alerting_flg , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_connect_flg , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NULL },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RasUsageSpecificationcallStartingPoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasUsageSpecificationcallStartingPoint, RasUsageSpecificationcallStartingPoint_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasUsageSpecification_sequence[] = {
+ { &hf_h225_when , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RasUsageSpecification_when },
+ { &hf_h225_ras_callStartingPoint, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_RasUsageSpecificationcallStartingPoint },
+ { &hf_h225_required , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RasUsageInfoTypes },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RasUsageSpecification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasUsageSpecification, RasUsageSpecification_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RasUsageInformation_sequence[] = {
+ { &hf_h225_nonStandardUsageFields, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_NonStandardParameter },
+ { &hf_h225_alertingTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_TimeStamp },
+ { &hf_h225_connectTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_TimeStamp },
+ { &hf_h225_endTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h235_TimeStamp },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RasUsageInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasUsageInformation, RasUsageInformation_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_OCTET_STRING_SIZE_2_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
+ 2, 32, FALSE, NULL);
+
+ return offset;
+}
+
+
+static const value_string h225_CallTerminationCause_vals[] = {
+ { 0, "releaseCompleteReason" },
+ { 1, "releaseCompleteCauseIE" },
+ { 0, NULL }
+};
+
+static const per_choice_t CallTerminationCause_choice[] = {
+ { 0, &hf_h225_releaseCompleteReason, ASN1_EXTENSION_ROOT , dissect_h225_ReleaseCompleteReason },
+ { 1, &hf_h225_releaseCompleteCauseIE, ASN1_EXTENSION_ROOT , dissect_h225_OCTET_STRING_SIZE_2_32 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_CallTerminationCause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallTerminationCause, CallTerminationCause_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t TransportChannelInfo_sequence[] = {
+ { &hf_h225_sendAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_recvAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { NULL, 0, 0, NULL }
+};
+
+int
+dissect_h225_TransportChannelInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t BandwidthDetails_sequence[] = {
+ { &hf_h225_sender , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_multicast , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_bandwidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_rtcpAddresses , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_BandwidthDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_BandwidthDetails, BandwidthDetails_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t CallCreditCapability_sequence[] = {
+ { &hf_h225_canDisplayAmountString, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_canEnforceDurationLimit, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_CallCreditCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallCreditCapability, CallCreditCapability_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_PrintableString(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
+ NO_BOUND, NO_BOUND, FALSE,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 255U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_associatedSessionIds_sequence_of[1] = {
+ { &hf_h225_associatedSessionIds_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_1_255 },
+};
+
+static int
+dissect_h225_T_associatedSessionIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_associatedSessionIds, T_associatedSessionIds_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t RTPSession_sequence[] = {
+ { &hf_h225_rtpAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+ { &hf_h225_rtcpAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+ { &hf_h225_cname , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_PrintableString },
+ { &hf_h225_ssrc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_1_4294967295 },
+ { &hf_h225_sessionId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_1_255 },
+ { &hf_h225_associatedSessionIds, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_T_associatedSessionIds },
+ { &hf_h225_multicast_flg , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_bandwidth , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BandWidth },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RTPSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RTPSession, RTPSession_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_RehomingModel_vals[] = {
+ { 0, "gatekeeperBased" },
+ { 1, "endpointBased" },
+ { 0, NULL }
+};
+
+static const per_choice_t RehomingModel_choice[] = {
+ { 0, &hf_h225_gatekeeperBased, ASN1_NO_EXTENSIONS , dissect_h225_NULL },
+ { 1, &hf_h225_endpointBased , ASN1_NO_EXTENSIONS , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_RehomingModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_RehomingModel, RehomingModel_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_Endpoint_sequence_of[1] = {
+ { &hf_h225_alternateEndpoints_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_Endpoint },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_Endpoint(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_Endpoint, SEQUENCE_OF_Endpoint_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_AuthenticationMechanism_sequence_of[1] = {
+ { &hf_h225_authenticationCapability_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_AuthenticationMechanism },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_AuthenticationMechanism(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_AuthenticationMechanism, SEQUENCE_OF_AuthenticationMechanism_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_algorithmOIDs_sequence_of[1] = {
+ { &hf_h225_algorithmOIDs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_OBJECT_IDENTIFIER },
+};
+
+static int
+dissect_h225_T_algorithmOIDs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_algorithmOIDs, T_algorithmOIDs_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_IntegrityMechanism_sequence_of[1] = {
+ { &hf_h225_integrity_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_IntegrityMechanism },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_IntegrityMechanism(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_IntegrityMechanism, SEQUENCE_OF_IntegrityMechanism_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t GatekeeperRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_gatekeeperRequest_rasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_endpointType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_callServices , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_QseriesOptions },
+ { &hf_h225_endpointAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_alternateEndpoints, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_authenticationCapability, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AuthenticationMechanism },
+ { &hf_h225_algorithmOIDs , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_algorithmOIDs },
+ { &hf_h225_integrity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_IntegrityMechanism },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_supportsAltGK , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_supportsAssignedGK, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GatekeeperRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatekeeperRequest, GatekeeperRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t GatekeeperConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_gatekeeperConfirm_rasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_alternateGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AlternateGK },
+ { &hf_h225_authenticationMode, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235_AuthenticationMechanism },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_algorithmOID , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_OBJECT_IDENTIFIER },
+ { &hf_h225_integrity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_IntegrityMechanism },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { &hf_h225_rehomingModel , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RehomingModel },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GatekeeperConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatekeeperConfirm, GatekeeperConfirm_sequence);
+
+ return offset;
+}
+
+
+const value_string GatekeeperRejectReason_vals[] = {
+ { 0, "resourceUnavailable" },
+ { 1, "terminalExcluded" },
+ { 2, "invalidRevision" },
+ { 3, "undefinedReason" },
+ { 4, "securityDenial" },
+ { 5, "genericDataReason" },
+ { 6, "neededFeatureNotSupported" },
+ { 7, "securityError" },
+ { 0, NULL }
+};
+
+static const per_choice_t GatekeeperRejectReason_choice[] = {
+ { 0, &hf_h225_resourceUnavailable, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_terminalExcluded, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_invalidRevision, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 5, &hf_h225_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 6, &hf_h225_neededFeatureNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 7, &hf_h225_gkRej_securityError, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_GatekeeperRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatekeeperRejectReason, GatekeeperRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t GatekeeperReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_gatekeeperRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_GatekeeperRejectReason },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_GatekeeperReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_GatekeeperReject, GatekeeperReject_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_AddressPattern_sequence_of[1] = {
+ { &hf_h225_terminalAliasPattern_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_AddressPattern },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_AddressPattern(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_AddressPattern, SEQUENCE_OF_AddressPattern_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_H248PackagesDescriptor_sequence_of[1] = {
+ { &hf_h225_supportedH248Packages_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_H248PackagesDescriptor },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_H248PackagesDescriptor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_H248PackagesDescriptor, SEQUENCE_OF_H248PackagesDescriptor_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_SIZE_1_256_OF_QOSCapability_sequence_of[1] = {
+ { &hf_h225_qOSCapabilities_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_QOSCapability },
+};
+
+static int
+dissect_h225_SEQUENCE_SIZE_1_256_OF_QOSCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_SIZE_1_256_OF_QOSCapability, SEQUENCE_SIZE_1_256_OF_QOSCapability_sequence_of,
+ 1, 256, FALSE);
+
+ return offset;
+}
+
+
+const value_string h225_TransportQOS_vals[] = {
+ { 0, "endpointControlled" },
+ { 1, "gatekeeperControlled" },
+ { 2, "noControl" },
+ { 3, "qOSCapabilities" },
+ { 0, NULL }
+};
+
+static const per_choice_t TransportQOS_choice[] = {
+ { 0, &hf_h225_endpointControlled, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_gatekeeperControlled, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_noControl , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_qOSCapabilities, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SEQUENCE_SIZE_1_256_OF_QOSCapability },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_TransportQOS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_TransportQOS, TransportQOS_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t RegistrationRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_discoveryComplete, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_rasAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_terminalType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_terminalAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_endpointVendor , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_VendorIdentifier },
+ { &hf_h225_alternateEndpoints, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_timeToLive , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TimeToLive },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_keepAlive , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_endpointIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointIdentifier },
+ { &hf_h225_willSupplyUUIEs, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_alternateTransportAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateTransportAddresses },
+ { &hf_h225_additiveRegistration, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_terminalAliasPattern, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AddressPattern },
+ { &hf_h225_supportsAltGK , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_usageReportingCapability, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInfoTypes },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_supportedH248Packages, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_H248PackagesDescriptor },
+ { &hf_h225_callCreditCapability, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCreditCapability },
+ { &hf_h225_capacityReportingCapability, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CapacityReportingCapability },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_restart , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_supportsACFSequences, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_supportsAssignedGK, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { &hf_h225_language , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_Language },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RegistrationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RegistrationRequest, RegistrationRequest_sequence);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
+ 1U, 65535U, NULL, FALSE);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_preGrantedARQ_sequence[] = {
+ { &hf_h225_makeCall , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_useGKCallSignalAddressToMakeCall, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_answerCall , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_useGKCallSignalAddressToAnswer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_irrFrequencyInCall, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_INTEGER_1_65535 },
+ { &hf_h225_totalBandwidthRestriction, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BandWidth },
+ { &hf_h225_alternateTransportAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateTransportAddresses },
+ { &hf_h225_useSpecifiedTransport, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_UseSpecifiedTransport },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_preGrantedARQ(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_preGrantedARQ, T_preGrantedARQ_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_RasUsageSpecification_sequence_of[1] = {
+ { &hf_h225_usageSpec_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_RasUsageSpecification },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_RasUsageSpecification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_RasUsageSpecification, SEQUENCE_OF_RasUsageSpecification_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t RegistrationConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_terminalAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_alternateGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AlternateGK },
+ { &hf_h225_timeToLive , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TimeToLive },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_willRespondToIRR, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_preGrantedARQ , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_preGrantedARQ },
+ { &hf_h225_maintainConnection, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_supportsAdditiveRegistration, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_terminalAliasPattern, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AddressPattern },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { &hf_h225_usageSpec , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_RasUsageSpecification },
+ { &hf_h225_featureServerAlias, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AliasAddress },
+ { &hf_h225_capacityReportingSpec, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CapacityReportingSpecification },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { &hf_h225_rehomingModel , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RehomingModel },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RegistrationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RegistrationConfirm, RegistrationConfirm_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_invalidTerminalAliases_sequence[] = {
+ { &hf_h225_terminalAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_terminalAliasPattern, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AddressPattern },
+ { &hf_h225_supportedPrefixes, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_invalidTerminalAliases(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_invalidTerminalAliases, T_invalidTerminalAliases_sequence);
+
+ return offset;
+}
+
+
+const value_string RegistrationRejectReason_vals[] = {
+ { 0, "discoveryRequired" },
+ { 1, "invalidRevision" },
+ { 2, "invalidCallSignalAddress" },
+ { 3, "invalidRASAddress" },
+ { 4, "duplicateAlias" },
+ { 5, "invalidTerminalType" },
+ { 6, "undefinedReason" },
+ { 7, "transportNotSupported" },
+ { 8, "transportQOSNotSupported" },
+ { 9, "resourceUnavailable" },
+ { 10, "invalidAlias" },
+ { 11, "securityDenial" },
+ { 12, "fullRegistrationRequired" },
+ { 13, "additiveRegistrationNotSupported" },
+ { 14, "invalidTerminalAliases" },
+ { 15, "genericDataReason" },
+ { 16, "neededFeatureNotSupported" },
+ { 17, "securityError" },
+ { 18, "registerWithAssignedGK" },
+ { 0, NULL }
+};
+
+static const per_choice_t RegistrationRejectReason_choice[] = {
+ { 0, &hf_h225_discoveryRequired, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_invalidRevision, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_invalidCallSignalAddress, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_invalidRASAddress, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_duplicateAlias , ASN1_EXTENSION_ROOT , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { 5, &hf_h225_invalidTerminalType, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 7, &hf_h225_transportNotSupported, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 8, &hf_h225_transportQOSNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 9, &hf_h225_resourceUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 10, &hf_h225_invalidAlias , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 11, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 12, &hf_h225_fullRegistrationRequired, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 13, &hf_h225_additiveRegistrationNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 14, &hf_h225_invalidTerminalAliases, ASN1_NOT_EXTENSION_ROOT, dissect_h225_T_invalidTerminalAliases },
+ { 15, &hf_h225_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 16, &hf_h225_neededFeatureNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 17, &hf_h225_reg_securityError, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors },
+ { 18, &hf_h225_registerWithAssignedGK, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_RegistrationRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_RegistrationRejectReason, RegistrationRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t RegistrationReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_registrationRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RegistrationRejectReason },
+ { &hf_h225_gatekeeperIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RegistrationReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RegistrationReject, RegistrationReject_sequence);
+
+ return offset;
+}
+
+
+const value_string UnregRequestReason_vals[] = {
+ { 0, "reregistrationRequired" },
+ { 1, "ttlExpired" },
+ { 2, "securityDenial" },
+ { 3, "undefinedReason" },
+ { 4, "maintenance" },
+ { 5, "securityError" },
+ { 6, "registerWithAssignedGK" },
+ { 0, NULL }
+};
+
+static const per_choice_t UnregRequestReason_choice[] = {
+ { 0, &hf_h225_reregistrationRequired, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_ttlExpired , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_securityDenial , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_maintenance , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 5, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 6, &hf_h225_registerWithAssignedGK, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_UnregRequestReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnregRequestReason, UnregRequestReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t UnregistrationRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_endpointAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_EndpointIdentifier },
+ { &hf_h225_alternateEndpoints, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_gatekeeperIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_unregRequestReason, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_UnregRequestReason },
+ { &hf_h225_endpointAliasPattern, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AddressPattern },
+ { &hf_h225_supportedPrefixes, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedPrefix },
+ { &hf_h225_alternateGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AlternateGK },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_UnregistrationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnregistrationRequest, UnregistrationRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UnregistrationConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_UnregistrationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnregistrationConfirm, UnregistrationConfirm_sequence);
+
+ return offset;
+}
+
+
+const value_string UnregRejectReason_vals[] = {
+ { 0, "notCurrentlyRegistered" },
+ { 1, "callInProgress" },
+ { 2, "undefinedReason" },
+ { 3, "permissionDenied" },
+ { 4, "securityDenial" },
+ { 5, "securityError" },
+ { 0, NULL }
+};
+
+static const per_choice_t UnregRejectReason_choice[] = {
+ { 0, &hf_h225_notCurrentlyRegistered, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_callInProgress , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_permissionDenied, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 4, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 5, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_UnregRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnregRejectReason, UnregRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t UnregistrationReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_unregRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_UnregRejectReason },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_UnregistrationReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnregistrationReject, UnregistrationReject_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_CallModel_vals[] = {
+ { 0, "direct" },
+ { 1, "gatekeeperRouted" },
+ { 0, NULL }
+};
+
+static const per_choice_t CallModel_choice[] = {
+ { 0, &hf_h225_direct , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_gatekeeperRouted, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_CallModel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_CallModel, CallModel_choice,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_h225_DestinationInfo_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ h225_packet_info* h225_pi;
+
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->is_destinationInfo = TRUE;
+ }
+ offset = dissect_h225_AliasAddress(tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const per_sequence_t DestinationInfo_sequence_of[1] = {
+ { &hf_h225_DestinationInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_DestinationInfo_item },
+};
+
+static int
+dissect_h225_DestinationInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_DestinationInfo, DestinationInfo_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t AdmissionRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_callType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallType },
+ { &hf_h225_callModel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CallModel },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_destinationInfo_01, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_DestinationInfo },
+ { &hf_h225_destCallSignalAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_destExtraCallInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_srcInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_srcCallSignalAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_bandWidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_callServices , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_QseriesOptions },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_activeMC , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_answerCall , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_canMapAlias , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_srcAlternatives, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_destAlternatives, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_gatekeeperIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { &hf_h225_willSupplyUUIEs, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_gatewayDataRate, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_DataRate },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_desiredProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_desiredTunnelledProtocol, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TunnelledProtocol },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_canMapSrcAlias , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_AdmissionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AdmissionRequest, AdmissionRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UUIEsRequested_sequence[] = {
+ { &hf_h225_setup_bool , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callProceeding_flg, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_connect_bool , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_alerting_bool , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_information_bool, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_releaseComplete_bool, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_facility_bool , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_progress_bool , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_empty , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_status_bool , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_statusInquiry_bool, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_setupAcknowledge_bool, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_notify_bool , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_UUIEsRequested(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_UUIEsRequested, UUIEsRequested_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t AdmissionConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_bandWidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_callModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallModel },
+ { &hf_h225_destCallSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_irrFrequency , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_INTEGER_1_65535 },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_destinationInfo_01, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_DestinationInfo },
+ { &hf_h225_destExtraCallInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_destinationType, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_remoteExtensionAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_alternateEndpoints, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { &hf_h225_willRespondToIRR, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_uuiesRequested , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_UUIEsRequested },
+ { &hf_h225_language , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_Language },
+ { &hf_h225_alternateTransportAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateTransportAddresses },
+ { &hf_h225_useSpecifiedTransport, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_UseSpecifiedTransport },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_usageSpec , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_RasUsageSpecification },
+ { &hf_h225_supportedProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_modifiedSrcInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_AdmissionConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AdmissionConfirm, AdmissionConfirm_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_PartyNumber_sequence_of[1] = {
+ { &hf_h225_routeCallToSCN_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_PartyNumber },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_PartyNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_PartyNumber, SEQUENCE_OF_PartyNumber_sequence_of);
+
+ return offset;
+}
+
+
+const value_string AdmissionRejectReason_vals[] = {
+ { 0, "calledPartyNotRegistered" },
+ { 1, "invalidPermission" },
+ { 2, "requestDenied" },
+ { 3, "undefinedReason" },
+ { 4, "callerNotRegistered" },
+ { 5, "routeCallToGatekeeper" },
+ { 6, "invalidEndpointIdentifier" },
+ { 7, "resourceUnavailable" },
+ { 8, "securityDenial" },
+ { 9, "qosControlNotSupported" },
+ { 10, "incompleteAddress" },
+ { 11, "aliasesInconsistent" },
+ { 12, "routeCallToSCN" },
+ { 13, "exceedsCallCapacity" },
+ { 14, "collectDestination" },
+ { 15, "collectPIN" },
+ { 16, "genericDataReason" },
+ { 17, "neededFeatureNotSupported" },
+ { 18, "securityError" },
+ { 19, "securityDHmismatch" },
+ { 20, "noRouteToDestination" },
+ { 21, "unallocatedNumber" },
+ { 22, "registerWithAssignedGK" },
+ { 0, NULL }
+};
+
+static const per_choice_t AdmissionRejectReason_choice[] = {
+ { 0, &hf_h225_calledPartyNotRegistered, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_invalidPermission, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_requestDenied , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_callerNotRegistered, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_routeCallToGatekeeper, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_invalidEndpointIdentifier, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 7, &hf_h225_resourceUnavailable, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 8, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 9, &hf_h225_qosControlNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 10, &hf_h225_incompleteAddress, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 11, &hf_h225_aliasesInconsistent, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 12, &hf_h225_routeCallToSCN , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SEQUENCE_OF_PartyNumber },
+ { 13, &hf_h225_exceedsCallCapacity, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 14, &hf_h225_collectDestination, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 15, &hf_h225_collectPIN , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 16, &hf_h225_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 17, &hf_h225_neededFeatureNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 18, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 19, &hf_h225_securityDHmismatch, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 20, &hf_h225_noRouteToDestination, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 21, &hf_h225_unallocatedNumber, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 22, &hf_h225_registerWithAssignedGK, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_AdmissionRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_AdmissionRejectReason, AdmissionRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t AdmissionReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_rejectReason , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_AdmissionRejectReason },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_callSignalAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_AdmissionReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_AdmissionReject, AdmissionReject_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_BandwidthDetails_sequence_of[1] = {
+ { &hf_h225_bandwidthDetails_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_BandwidthDetails },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_BandwidthDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_BandwidthDetails, SEQUENCE_OF_BandwidthDetails_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t BandwidthRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+ { &hf_h225_callType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_CallType },
+ { &hf_h225_bandWidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_gatekeeperIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_answeredCall , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_usageInformation, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInformation },
+ { &hf_h225_bandwidthDetails, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_BandwidthDetails },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_BandwidthRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_BandwidthRequest, BandwidthRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t BandwidthConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_bandWidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_transportQOS , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TransportQOS },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_BandwidthConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_BandwidthConfirm, BandwidthConfirm_sequence);
+
+ return offset;
+}
+
+
+const value_string BandRejectReason_vals[] = {
+ { 0, "notBound" },
+ { 1, "invalidConferenceID" },
+ { 2, "invalidPermission" },
+ { 3, "insufficientResources" },
+ { 4, "invalidRevision" },
+ { 5, "undefinedReason" },
+ { 6, "securityDenial" },
+ { 7, "securityError" },
+ { 0, NULL }
+};
+
+static const per_choice_t BandRejectReason_choice[] = {
+ { 0, &hf_h225_notBound , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_invalidConferenceID, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_invalidPermission, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_insufficientResources, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_invalidRevision, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 5, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 6, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 7, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_BandRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_BandRejectReason, BandRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t BandwidthReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_bandRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandRejectReason },
+ { &hf_h225_allowedBandWidth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_BandwidthReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_BandwidthReject, BandwidthReject_sequence);
+
+ return offset;
+}
+
+
+const value_string DisengageReason_vals[] = {
+ { 0, "forcedDrop" },
+ { 1, "normalDrop" },
+ { 2, "undefinedReason" },
+ { 0, NULL }
+};
+
+static const per_choice_t DisengageReason_choice[] = {
+ { 0, &hf_h225_forcedDrop , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_normalDrop , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_DisengageReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisengageReason, DisengageReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t DisengageRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+ { &hf_h225_disengageReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_DisengageReason },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_gatekeeperIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_answeredCall , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_usageInformation, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInformation },
+ { &hf_h225_terminationCause, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallTerminationCause },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_DisengageRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisengageRequest, DisengageRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t DisengageConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_usageInformation, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInformation },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_DisengageConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisengageConfirm, DisengageConfirm_sequence);
+
+ return offset;
+}
+
+
+const value_string DisengageRejectReason_vals[] = {
+ { 0, "notRegistered" },
+ { 1, "requestToDropOther" },
+ { 2, "securityDenial" },
+ { 3, "securityError" },
+ { 0, NULL }
+};
+
+static const per_choice_t DisengageRejectReason_choice[] = {
+ { 0, &hf_h225_notRegistered , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_requestToDropOther, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 3, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_DisengageRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisengageRejectReason, DisengageRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t DisengageReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_disengageRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_DisengageRejectReason },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_DisengageReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_DisengageReject, DisengageReject_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LocationRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_EndpointIdentifier },
+ { &hf_h225_destinationInfo_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_DestinationInfo },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_replyAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_sourceInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_canMapAlias , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_gatekeeperIdentifier, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_GatekeeperIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_desiredProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_desiredTunnelledProtocol, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_TunnelledProtocol },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_hopCount , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_INTEGER_1_255 },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallIdentifier },
+ { &hf_h225_bandWidth , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BandWidth },
+ { &hf_h225_sourceEndpointInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_canMapSrcAlias , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_language , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_Language },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_LocationRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_LocationRequest, LocationRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t LocationConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_locationConfirm_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_locationConfirm_rasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_destinationInfo_01, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_DestinationInfo },
+ { &hf_h225_destExtraCallInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_destinationType, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_EndpointType },
+ { &hf_h225_remoteExtensionAddress, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_alternateEndpoints, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_Endpoint },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_alternateTransportAddresses, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateTransportAddresses },
+ { &hf_h225_supportedProtocols, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_multipleCalls , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_modifiedSrcInfo, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_bandWidth , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_BandWidth },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_LocationConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_LocationConfirm, LocationConfirm_sequence);
+
+ return offset;
+}
+
+
+const value_string LocationRejectReason_vals[] = {
+ { 0, "notRegistered" },
+ { 1, "invalidPermission" },
+ { 2, "requestDenied" },
+ { 3, "undefinedReason" },
+ { 4, "securityDenial" },
+ { 5, "aliasesInconsistent" },
+ { 6, "routeCalltoSCN" },
+ { 7, "resourceUnavailable" },
+ { 8, "genericDataReason" },
+ { 9, "neededFeatureNotSupported" },
+ { 10, "hopCountExceeded" },
+ { 11, "incompleteAddress" },
+ { 12, "securityError" },
+ { 13, "securityDHmismatch" },
+ { 14, "noRouteToDestination" },
+ { 15, "unallocatedNumber" },
+ { 0, NULL }
+};
+
+static const per_choice_t LocationRejectReason_choice[] = {
+ { 0, &hf_h225_notRegistered , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_invalidPermission, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_requestDenied , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_securityDenial , ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 5, &hf_h225_aliasesInconsistent, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 6, &hf_h225_routeCalltoSCN , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SEQUENCE_OF_PartyNumber },
+ { 7, &hf_h225_resourceUnavailable, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 8, &hf_h225_genericDataReason, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 9, &hf_h225_neededFeatureNotSupported, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 10, &hf_h225_hopCountExceeded, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 11, &hf_h225_incompleteAddress, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 12, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 13, &hf_h225_securityDHmismatch, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 14, &hf_h225_noRouteToDestination, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 15, &hf_h225_unallocatedNumber, ASN1_NOT_EXTENSION_ROOT, dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_LocationRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_LocationRejectReason, LocationRejectReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t LocationReject_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_locationRejectReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_LocationRejectReason },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_altGKInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_serviceControl , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_LocationReject(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_LocationReject, LocationReject_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t InfoRequest_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_replyAddress , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TransportAddress },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_uuiesRequested , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_UUIEsRequested },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_usageInfoRequested, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInfoTypes },
+ { &hf_h225_segmentedResponseSupported, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_nextSegmentRequested, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_INTEGER_0_65535 },
+ { &hf_h225_capacityInfoRequested, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_NULL },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { &hf_h225_assignedGatekeeper, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_AlternateGK },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequest, InfoRequest_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_RTPSession_sequence_of[1] = {
+ { &hf_h225_audio_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_RTPSession },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_RTPSession(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_RTPSession, SEQUENCE_OF_RTPSession_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_TransportChannelInfo_sequence_of[1] = {
+ { &hf_h225_data_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_TransportChannelInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_TransportChannelInfo, SEQUENCE_OF_TransportChannelInfo_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ConferenceIdentifier_sequence_of[1] = {
+ { &hf_h225_substituteConfIDs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_ConferenceIdentifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_ConferenceIdentifier, SEQUENCE_OF_ConferenceIdentifier_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_pdu_item_sequence[] = {
+ { &hf_h225_h323pdu , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_H323_UU_PDU },
+ { &hf_h225_sent , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_pdu_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_pdu_item, T_pdu_item_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_pdu_sequence_of[1] = {
+ { &hf_h225_pdu_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_pdu_item },
+};
+
+static int
+dissect_h225_T_pdu(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_pdu, T_pdu_sequence_of);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_perCallInfo_item_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_originator , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BOOLEAN },
+ { &hf_h225_audio , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_RTPSession },
+ { &hf_h225_video , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_RTPSession },
+ { &hf_h225_data , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_TransportChannelInfo },
+ { &hf_h225_h245 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+ { &hf_h225_callSignalling , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
+ { &hf_h225_callType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallType },
+ { &hf_h225_bandWidth , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BandWidth },
+ { &hf_h225_callModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallModel },
+ { &hf_h225_callIdentifier , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_substituteConfIDs, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_ConferenceIdentifier },
+ { &hf_h225_pdu , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_T_pdu },
+ { &hf_h225_callLinkage , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallLinkage },
+ { &hf_h225_usageInformation, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_RasUsageInformation },
+ { &hf_h225_circuitInfo , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CircuitInfo },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_perCallInfo_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_perCallInfo_item, T_perCallInfo_item_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_perCallInfo_sequence_of[1] = {
+ { &hf_h225_perCallInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_T_perCallInfo_item },
+};
+
+static int
+dissect_h225_T_perCallInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_perCallInfo, T_perCallInfo_sequence_of);
+
+ return offset;
+}
+
+
+static const value_string h225_InfoRequestResponseStatus_vals[] = {
+ { 0, "complete" },
+ { 1, "incomplete" },
+ { 2, "segment" },
+ { 3, "invalidCall" },
+ { 0, NULL }
+};
+
+static const per_choice_t InfoRequestResponseStatus_choice[] = {
+ { 0, &hf_h225_complete , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_incomplete , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_segment , ASN1_EXTENSION_ROOT , dissect_h225_INTEGER_0_65535 },
+ { 3, &hf_h225_invalidCall , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequestResponseStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequestResponseStatus, InfoRequestResponseStatus_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t InfoRequestResponse_sequence[] = {
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_endpointType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointType },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_infoRequestResponse_rasAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
+ { &hf_h225_callSignalAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_TransportAddress },
+ { &hf_h225_endpointAlias , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_AliasAddress },
+ { &hf_h225_perCallInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_perCallInfo },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_needResponse , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_irrStatus , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_InfoRequestResponseStatus },
+ { &hf_h225_unsolicited , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequestResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequestResponse, InfoRequestResponse_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t NonStandardMessage_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_NonStandardMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_NonStandardMessage, NonStandardMessage_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t UnknownMessageResponse_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_tokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_messageNotUnderstood, ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h225_OCTET_STRING },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_UnknownMessageResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_UnknownMessageResponse, UnknownMessageResponse_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t RequestInProgress_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_delay , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_INTEGER_1_65535 },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_RequestInProgress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_RequestInProgress, RequestInProgress_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResourcesAvailableIndicate_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_EndpointIdentifier },
+ { &hf_h225_protocols , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_SupportedProtocols },
+ { &hf_h225_almostOutOfResources, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_capacity , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_CallCapacity },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ResourcesAvailableIndicate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ResourcesAvailableIndicate, ResourcesAvailableIndicate_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ResourcesAvailableConfirm_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_protocolIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ProtocolIdentifier },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_genericData , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ResourcesAvailableConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ResourcesAvailableConfirm, ResourcesAvailableConfirm_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t InfoRequestAck_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequestAck(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequestAck, InfoRequestAck_sequence);
+
+ return offset;
+}
+
+
+const value_string InfoRequestNakReason_vals[] = {
+ { 0, "notRegistered" },
+ { 1, "securityDenial" },
+ { 2, "undefinedReason" },
+ { 3, "securityError" },
+ { 0, NULL }
+};
+
+static const per_choice_t InfoRequestNakReason_choice[] = {
+ { 0, &hf_h225_notRegistered , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_securityDenial , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_undefinedReason, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_securityError , ASN1_NOT_EXTENSION_ROOT, dissect_h225_SecurityErrors2 },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequestNakReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 value;
+ h225_packet_info* h225_pi;
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequestNakReason, InfoRequestNakReason_choice,
+ &value);
+
+ if (h225_pi != NULL) {
+ h225_pi->reason = value;
+ }
+
+ return offset;
+}
+
+
+static const per_sequence_t InfoRequestNak_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_nakReason , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_InfoRequestNakReason },
+ { &hf_h225_altGKInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_AltGKInfo },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_InfoRequestNak(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_InfoRequestNak, InfoRequestNak_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t T_callSpecific_sequence[] = {
+ { &hf_h225_callIdentifier , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
+ { &hf_h225_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
+ { &hf_h225_answeredCall , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_BOOLEAN },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_T_callSpecific(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_callSpecific, T_callSpecific_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t ServiceControlIndication_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_serviceControl , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_SEQUENCE_OF_ServiceControlSession },
+ { &hf_h225_endpointIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_EndpointIdentifier },
+ { &hf_h225_callSpecific , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_callSpecific },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ServiceControlIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ServiceControlIndication, ServiceControlIndication_sequence);
+
+ return offset;
+}
+
+
+static const value_string h225_T_result_vals[] = {
+ { 0, "started" },
+ { 1, "failed" },
+ { 2, "stopped" },
+ { 3, "notAvailable" },
+ { 4, "neededFeatureNotSupported" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_result_choice[] = {
+ { 0, &hf_h225_started , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 1, &hf_h225_failed , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 2, &hf_h225_stopped , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 3, &hf_h225_notAvailable , ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 4, &hf_h225_neededFeatureNotSupported, ASN1_EXTENSION_ROOT , dissect_h225_NULL },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h225_T_result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_T_result, T_result_choice,
+ NULL);
+
+ return offset;
+}
+
+
+static const per_sequence_t ServiceControlResponse_sequence[] = {
+ { &hf_h225_requestSeqNum , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_RequestSeqNum },
+ { &hf_h225_result , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_T_result },
+ { &hf_h225_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
+ { &hf_h225_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_ClearToken },
+ { &hf_h225_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_CryptoH323Token },
+ { &hf_h225_integrityCheckValue, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_ICV },
+ { &hf_h225_featureSet , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_FeatureSet },
+ { &hf_h225_genericData , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_SEQUENCE_OF_GenericData },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h225_ServiceControlResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
+ ett_h225_ServiceControlResponse, ServiceControlResponse_sequence);
+
+ return offset;
+}
+
+
+static const per_sequence_t SEQUENCE_OF_AdmissionConfirm_sequence_of[1] = {
+ { &hf_h225_admissionConfirmSequence_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_AdmissionConfirm },
+};
+
+static int
+dissect_h225_SEQUENCE_OF_AdmissionConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
+ ett_h225_SEQUENCE_OF_AdmissionConfirm, SEQUENCE_OF_AdmissionConfirm_sequence_of);
+
+ return offset;
+}
+
+
+const value_string h225_RasMessage_vals[] = {
+ { 0, "gatekeeperRequest" },
+ { 1, "gatekeeperConfirm" },
+ { 2, "gatekeeperReject" },
+ { 3, "registrationRequest" },
+ { 4, "registrationConfirm" },
+ { 5, "registrationReject" },
+ { 6, "unregistrationRequest" },
+ { 7, "unregistrationConfirm" },
+ { 8, "unregistrationReject" },
+ { 9, "admissionRequest" },
+ { 10, "admissionConfirm" },
+ { 11, "admissionReject" },
+ { 12, "bandwidthRequest" },
+ { 13, "bandwidthConfirm" },
+ { 14, "bandwidthReject" },
+ { 15, "disengageRequest" },
+ { 16, "disengageConfirm" },
+ { 17, "disengageReject" },
+ { 18, "locationRequest" },
+ { 19, "locationConfirm" },
+ { 20, "locationReject" },
+ { 21, "infoRequest" },
+ { 22, "infoRequestResponse" },
+ { 23, "nonStandardMessage" },
+ { 24, "unknownMessageResponse" },
+ { 25, "requestInProgress" },
+ { 26, "resourcesAvailableIndicate" },
+ { 27, "resourcesAvailableConfirm" },
+ { 28, "infoRequestAck" },
+ { 29, "infoRequestNak" },
+ { 30, "serviceControlIndication" },
+ { 31, "serviceControlResponse" },
+ { 32, "admissionConfirmSequence" },
+ { 0, NULL }
+};
+
+static const per_choice_t RasMessage_choice[] = {
+ { 0, &hf_h225_gatekeeperRequest, ASN1_EXTENSION_ROOT , dissect_h225_GatekeeperRequest },
+ { 1, &hf_h225_gatekeeperConfirm, ASN1_EXTENSION_ROOT , dissect_h225_GatekeeperConfirm },
+ { 2, &hf_h225_gatekeeperReject, ASN1_EXTENSION_ROOT , dissect_h225_GatekeeperReject },
+ { 3, &hf_h225_registrationRequest, ASN1_EXTENSION_ROOT , dissect_h225_RegistrationRequest },
+ { 4, &hf_h225_registrationConfirm, ASN1_EXTENSION_ROOT , dissect_h225_RegistrationConfirm },
+ { 5, &hf_h225_registrationReject, ASN1_EXTENSION_ROOT , dissect_h225_RegistrationReject },
+ { 6, &hf_h225_unregistrationRequest, ASN1_EXTENSION_ROOT , dissect_h225_UnregistrationRequest },
+ { 7, &hf_h225_unregistrationConfirm, ASN1_EXTENSION_ROOT , dissect_h225_UnregistrationConfirm },
+ { 8, &hf_h225_unregistrationReject, ASN1_EXTENSION_ROOT , dissect_h225_UnregistrationReject },
+ { 9, &hf_h225_admissionRequest, ASN1_EXTENSION_ROOT , dissect_h225_AdmissionRequest },
+ { 10, &hf_h225_admissionConfirm, ASN1_EXTENSION_ROOT , dissect_h225_AdmissionConfirm },
+ { 11, &hf_h225_admissionReject, ASN1_EXTENSION_ROOT , dissect_h225_AdmissionReject },
+ { 12, &hf_h225_bandwidthRequest, ASN1_EXTENSION_ROOT , dissect_h225_BandwidthRequest },
+ { 13, &hf_h225_bandwidthConfirm, ASN1_EXTENSION_ROOT , dissect_h225_BandwidthConfirm },
+ { 14, &hf_h225_bandwidthReject, ASN1_EXTENSION_ROOT , dissect_h225_BandwidthReject },
+ { 15, &hf_h225_disengageRequest, ASN1_EXTENSION_ROOT , dissect_h225_DisengageRequest },
+ { 16, &hf_h225_disengageConfirm, ASN1_EXTENSION_ROOT , dissect_h225_DisengageConfirm },
+ { 17, &hf_h225_disengageReject, ASN1_EXTENSION_ROOT , dissect_h225_DisengageReject },
+ { 18, &hf_h225_locationRequest, ASN1_EXTENSION_ROOT , dissect_h225_LocationRequest },
+ { 19, &hf_h225_locationConfirm, ASN1_EXTENSION_ROOT , dissect_h225_LocationConfirm },
+ { 20, &hf_h225_locationReject , ASN1_EXTENSION_ROOT , dissect_h225_LocationReject },
+ { 21, &hf_h225_infoRequest , ASN1_EXTENSION_ROOT , dissect_h225_InfoRequest },
+ { 22, &hf_h225_infoRequestResponse, ASN1_EXTENSION_ROOT , dissect_h225_InfoRequestResponse },
+ { 23, &hf_h225_nonStandardMessage, ASN1_EXTENSION_ROOT , dissect_h225_NonStandardMessage },
+ { 24, &hf_h225_unknownMessageResponse, ASN1_EXTENSION_ROOT , dissect_h225_UnknownMessageResponse },
+ { 25, &hf_h225_requestInProgress, ASN1_NOT_EXTENSION_ROOT, dissect_h225_RequestInProgress },
+ { 26, &hf_h225_resourcesAvailableIndicate, ASN1_NOT_EXTENSION_ROOT, dissect_h225_ResourcesAvailableIndicate },
+ { 27, &hf_h225_resourcesAvailableConfirm, ASN1_NOT_EXTENSION_ROOT, dissect_h225_ResourcesAvailableConfirm },
+ { 28, &hf_h225_infoRequestAck , ASN1_NOT_EXTENSION_ROOT, dissect_h225_InfoRequestAck },
+ { 29, &hf_h225_infoRequestNak , ASN1_NOT_EXTENSION_ROOT, dissect_h225_InfoRequestNak },
+ { 30, &hf_h225_serviceControlIndication, ASN1_NOT_EXTENSION_ROOT, dissect_h225_ServiceControlIndication },
+ { 31, &hf_h225_serviceControlResponse, ASN1_NOT_EXTENSION_ROOT, dissect_h225_ServiceControlResponse },
+ { 32, &hf_h225_admissionConfirmSequence, ASN1_NOT_EXTENSION_ROOT, dissect_h225_SEQUENCE_OF_AdmissionConfirm },
+ { 0, NULL, 0, NULL }
+};
+
+int
+dissect_h225_RasMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
+ gint32 rasmessage_value;
+ h225_packet_info* h225_pi;
+
+ call_id_guid = NULL;
+ offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
+ ett_h225_RasMessage, RasMessage_choice,
+ &rasmessage_value);
+
+ col_add_fstr(actx->pinfo->cinfo, COL_INFO, "RAS: %s ",
+ val_to_str(rasmessage_value, h225_RasMessage_vals, "<unknown>"));
+
+ h225_pi = (h225_packet_info*)p_get_proto_data(actx->pinfo->pool, actx->pinfo, proto_h225, 0);
+ if (h225_pi != NULL) {
+ h225_pi->msg_tag = rasmessage_value;
+ if (call_id_guid) {
+ h225_pi->guid = *call_id_guid;
+ }
+ }
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+static int dissect_H323_UserInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h225_H323_UserInformation(tvb, offset, &asn1_ctx, tree, hf_h225_H323_UserInformation_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+int dissect_h225_ExtendedAliasAddress_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h225_ExtendedAliasAddress(tvb, offset, &asn1_ctx, tree, hf_h225_h225_ExtendedAliasAddress_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+static int dissect_RasMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
+ offset = dissect_h225_RasMessage(tvb, offset, &asn1_ctx, tree, hf_h225_RasMessage_PDU);
+ offset += 7; offset >>= 3;
+ return offset;
+}
+
+
+/* Forward declaration we need below */
+void proto_reg_handoff_h225(void);
+
+/*
+ * Functions needed for Ras-Hash-Table
+ */
+
+/* compare 2 keys */
+static gint h225ras_call_equal(gconstpointer k1, gconstpointer k2)
+{
+ const h225ras_call_info_key* key1 = (const h225ras_call_info_key*) k1;
+ const h225ras_call_info_key* key2 = (const h225ras_call_info_key*) k2;
+
+ return (key1->reqSeqNum == key2->reqSeqNum &&
+ key1->conversation == key2->conversation);
+}
+
+/* calculate a hash key */
+static guint h225ras_call_hash(gconstpointer k)
+{
+ const h225ras_call_info_key* key = (const h225ras_call_info_key*) k;
+
+ return key->reqSeqNum + GPOINTER_TO_UINT(key->conversation);
+}
+
+
+h225ras_call_t * find_h225ras_call(h225ras_call_info_key *h225ras_call_key ,int category)
+{
+ h225ras_call_t *h225ras_call = (h225ras_call_t *)wmem_map_lookup(ras_calls[category], h225ras_call_key);
+
+ return h225ras_call;
+}
+
+h225ras_call_t * new_h225ras_call(h225ras_call_info_key *h225ras_call_key, packet_info *pinfo, e_guid_t *guid, int category)
+{
+ h225ras_call_info_key *new_h225ras_call_key;
+ h225ras_call_t *h225ras_call = NULL;
+
+
+ /* Prepare the value data.
+ "req_num" and "rsp_num" are frame numbers;
+ frame numbers are 1-origin, so we use 0
+ to mean "we don't yet know in which frame
+ the reply for this call appears". */
+ new_h225ras_call_key = wmem_new(wmem_file_scope(), h225ras_call_info_key);
+ new_h225ras_call_key->reqSeqNum = h225ras_call_key->reqSeqNum;
+ new_h225ras_call_key->conversation = h225ras_call_key->conversation;
+ h225ras_call = wmem_new(wmem_file_scope(), h225ras_call_t);
+ h225ras_call->req_num = pinfo->num;
+ h225ras_call->rsp_num = 0;
+ h225ras_call->requestSeqNum = h225ras_call_key->reqSeqNum;
+ h225ras_call->responded = FALSE;
+ h225ras_call->next_call = NULL;
+ h225ras_call->req_time=pinfo->abs_ts;
+ h225ras_call->guid=*guid;
+ /* store it */
+ wmem_map_insert(ras_calls[category], new_h225ras_call_key, h225ras_call);
+
+ return h225ras_call;
+}
+
+h225ras_call_t * append_h225ras_call(h225ras_call_t *prev_call, packet_info *pinfo, e_guid_t *guid, int category _U_)
+{
+ h225ras_call_t *h225ras_call = NULL;
+
+ /* Prepare the value data.
+ "req_num" and "rsp_num" are frame numbers;
+ frame numbers are 1-origin, so we use 0
+ to mean "we don't yet know in which frame
+ the reply for this call appears". */
+ h225ras_call = wmem_new(wmem_file_scope(), h225ras_call_t);
+ h225ras_call->req_num = pinfo->num;
+ h225ras_call->rsp_num = 0;
+ h225ras_call->requestSeqNum = prev_call->requestSeqNum;
+ h225ras_call->responded = FALSE;
+ h225ras_call->next_call = NULL;
+ h225ras_call->req_time=pinfo->abs_ts;
+ h225ras_call->guid=*guid;
+
+ prev_call->next_call = h225ras_call;
+ return h225ras_call;
+}
+
+static void
+h225_frame_end(void)
+{
+ /* next_tvb pointers are allocated in packet scope, clear it. */
+ h245_list = NULL;
+ tp_list = NULL;
+}
+
+static int
+dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
+{
+ proto_item *it;
+ proto_tree *tr;
+ int offset = 0;
+ h225_packet_info* h225_pi;
+
+ /* Init struct for collecting h225_packet_info */
+ h225_pi = create_h225_packet_info(pinfo);
+ h225_pi->msg_type = H225_CS;
+ p_add_proto_data(pinfo->pool, pinfo, proto_h225, 0, h225_pi);
+
+ register_frame_end_routine(pinfo, h225_frame_end);
+ h245_list = next_tvb_list_new(pinfo->pool);
+ tp_list = next_tvb_list_new(pinfo->pool);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ it=proto_tree_add_protocol_format(tree, proto_h225, tvb, 0, -1, PSNAME" CS");
+ tr=proto_item_add_subtree(it, ett_h225);
+
+ offset = dissect_H323_UserInformation_PDU(tvb, pinfo, tr, NULL);
+
+ if (h245_list->count){
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "/");
+ col_set_fence(pinfo->cinfo, COL_PROTOCOL);
+ }
+
+ next_tvb_call(h245_list, pinfo, tree, h245dg_handle, data_handle);
+ next_tvb_call(tp_list, pinfo, tree, NULL, data_handle);
+
+ tap_queue_packet(h225_tap, pinfo, h225_pi);
+
+ return offset;
+}
+static int
+dissect_h225_h225_RasMessage(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_){
+ proto_item *it;
+ proto_tree *tr;
+ guint32 offset=0;
+ h225_packet_info* h225_pi;
+
+ /* Init struct for collecting h225_packet_info */
+ h225_pi = create_h225_packet_info(pinfo);
+ h225_pi->msg_type = H225_RAS;
+ p_add_proto_data(pinfo->pool, pinfo, proto_h225, 0, h225_pi);
+
+ register_frame_end_routine(pinfo, h225_frame_end);
+ h245_list = next_tvb_list_new(pinfo->pool);
+ tp_list = next_tvb_list_new(pinfo->pool);
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
+
+ it=proto_tree_add_protocol_format(tree, proto_h225, tvb, offset, -1, PSNAME" RAS");
+ tr=proto_item_add_subtree(it, ett_h225);
+
+ offset = dissect_RasMessage_PDU(tvb, pinfo, tr, NULL);
+
+ ras_call_matching(tvb, pinfo, tr, h225_pi);
+
+ next_tvb_call(h245_list, pinfo, tree, h245dg_handle, data_handle);
+ next_tvb_call(tp_list, pinfo, tree, NULL, data_handle);
+
+ tap_queue_packet(h225_tap, pinfo, h225_pi);
+
+ return offset;
+}
+
+
+/* The following values represent the size of their valuestring arrays */
+
+#define RAS_MSG_TYPES (sizeof(h225_RasMessage_vals) / sizeof(value_string))
+#define CS_MSG_TYPES (sizeof(T_h323_message_body_vals) / sizeof(value_string))
+
+#define GRJ_REASONS (sizeof(GatekeeperRejectReason_vals) / sizeof(value_string))
+#define RRJ_REASONS (sizeof(RegistrationRejectReason_vals) / sizeof(value_string))
+#define URQ_REASONS (sizeof(UnregRequestReason_vals) / sizeof(value_string))
+#define URJ_REASONS (sizeof(UnregRejectReason_vals) / sizeof(value_string))
+#define ARJ_REASONS (sizeof(AdmissionRejectReason_vals) / sizeof(value_string))
+#define BRJ_REASONS (sizeof(BandRejectReason_vals) / sizeof(value_string))
+#define DRQ_REASONS (sizeof(DisengageReason_vals) / sizeof(value_string))
+#define DRJ_REASONS (sizeof(DisengageRejectReason_vals) / sizeof(value_string))
+#define LRJ_REASONS (sizeof(LocationRejectReason_vals) / sizeof(value_string))
+#define IRQNAK_REASONS (sizeof(InfoRequestNakReason_vals) / sizeof(value_string))
+#define REL_CMP_REASONS (sizeof(h225_ReleaseCompleteReason_vals) / sizeof(value_string))
+#define FACILITY_REASONS (sizeof(FacilityReason_vals) / sizeof(value_string))
+
+/* TAP STAT INFO */
+typedef enum
+{
+ MESSAGE_TYPE_COLUMN = 0,
+ COUNT_COLUMN
+} h225_stat_columns;
+
+typedef struct _h225_table_item {
+ guint count; /* Message count */
+ guint table_idx; /* stat_table index */
+} h225_table_item_t;
+
+static stat_tap_table_item h225_stat_fields[] = {{TABLE_ITEM_STRING, TAP_ALIGN_LEFT, "Message Type or Reason", "%-25s"}, {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Count", "%d"}};
+
+static guint ras_msg_idx[RAS_MSG_TYPES];
+static guint cs_msg_idx[CS_MSG_TYPES];
+
+static guint grj_reason_idx[GRJ_REASONS];
+static guint rrj_reason_idx[RRJ_REASONS];
+static guint urq_reason_idx[URQ_REASONS];
+static guint urj_reason_idx[URJ_REASONS];
+static guint arj_reason_idx[ARJ_REASONS];
+static guint brj_reason_idx[BRJ_REASONS];
+static guint drq_reason_idx[DRQ_REASONS];
+static guint drj_reason_idx[DRJ_REASONS];
+static guint lrj_reason_idx[LRJ_REASONS];
+static guint irqnak_reason_idx[IRQNAK_REASONS];
+static guint rel_cmp_reason_idx[REL_CMP_REASONS];
+static guint facility_reason_idx[FACILITY_REASONS];
+
+static guint other_idx;
+
+static void h225_stat_init(stat_tap_table_ui* new_stat)
+{
+ const char *table_name = "H.225 Messages and Message Reasons";
+ int num_fields = sizeof(h225_stat_fields)/sizeof(stat_tap_table_item);
+ stat_tap_table *table;
+ int row_idx = 0, msg_idx;
+ stat_tap_table_item_type items[sizeof(h225_stat_fields)/sizeof(stat_tap_table_item)];
+
+ table = stat_tap_find_table(new_stat, table_name);
+ if (table) {
+ if (new_stat->stat_tap_reset_table_cb) {
+ new_stat->stat_tap_reset_table_cb(table);
+ }
+ return;
+ }
+
+ memset(items, 0x0, sizeof(items));
+ table = stat_tap_init_table(table_name, num_fields, 0, NULL);
+ stat_tap_add_table(new_stat, table);
+
+ items[MESSAGE_TYPE_COLUMN].type = TABLE_ITEM_STRING;
+ items[COUNT_COLUMN].type = TABLE_ITEM_UINT;
+ items[COUNT_COLUMN].value.uint_value = 0;
+
+ /* Add a row for each value type */
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ h225_RasMessage_vals[msg_idx].strptr
+ ? h225_RasMessage_vals[msg_idx].strptr
+ : "Unknown RAS message";
+ ras_msg_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (h225_RasMessage_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ T_h323_message_body_vals[msg_idx].strptr
+ ? T_h323_message_body_vals[msg_idx].strptr
+ : "Unknown CS message";
+ cs_msg_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (T_h323_message_body_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ GatekeeperRejectReason_vals[msg_idx].strptr
+ ? GatekeeperRejectReason_vals[msg_idx].strptr
+ : "Unknown gatekeeper reject reason";
+ grj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (GatekeeperRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ RegistrationRejectReason_vals[msg_idx].strptr
+ ? RegistrationRejectReason_vals[msg_idx].strptr
+ : "Unknown registration reject reason";
+ rrj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (RegistrationRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ UnregRequestReason_vals[msg_idx].strptr
+ ? UnregRequestReason_vals[msg_idx].strptr
+ : "Unknown unregistration request reason";
+ urq_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (UnregRequestReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ UnregRejectReason_vals[msg_idx].strptr
+ ? UnregRejectReason_vals[msg_idx].strptr
+ : "Unknown unregistration reject reason";
+ urj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (UnregRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ AdmissionRejectReason_vals[msg_idx].strptr
+ ? AdmissionRejectReason_vals[msg_idx].strptr
+ : "Unknown admission reject reason";
+ arj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (AdmissionRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ BandRejectReason_vals[msg_idx].strptr
+ ? BandRejectReason_vals[msg_idx].strptr
+ : "Unknown band reject reason";
+ brj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (BandRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ DisengageReason_vals[msg_idx].strptr
+ ? DisengageReason_vals[msg_idx].strptr
+ : "Unknown disengage reason";
+ drq_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (DisengageReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ DisengageRejectReason_vals[msg_idx].strptr
+ ? DisengageRejectReason_vals[msg_idx].strptr
+ : "Unknown disengage reject reason";
+ drj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (DisengageRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ LocationRejectReason_vals[msg_idx].strptr
+ ? LocationRejectReason_vals[msg_idx].strptr
+ : "Unknown location reject reason";
+ lrj_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (LocationRejectReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ InfoRequestNakReason_vals[msg_idx].strptr
+ ? InfoRequestNakReason_vals[msg_idx].strptr
+ : "Unknown info request nak reason";
+ irqnak_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (InfoRequestNakReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ h225_ReleaseCompleteReason_vals[msg_idx].strptr
+ ? h225_ReleaseCompleteReason_vals[msg_idx].strptr
+ : "Unknown release complete reason";
+ rel_cmp_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (h225_ReleaseCompleteReason_vals[msg_idx].strptr);
+
+ msg_idx = 0;
+ do
+ {
+ items[MESSAGE_TYPE_COLUMN].value.string_value =
+ FacilityReason_vals[msg_idx].strptr
+ ? FacilityReason_vals[msg_idx].strptr
+ : "Unknown facility reason";
+ facility_reason_idx[msg_idx] = row_idx;
+
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ row_idx++;
+ msg_idx++;
+ } while (FacilityReason_vals[msg_idx].strptr);
+
+
+ items[MESSAGE_TYPE_COLUMN].value.string_value = "Unknown H.225 message";
+ stat_tap_init_table_row(table, row_idx, num_fields, items);
+ other_idx = row_idx;
+}
+
+static tap_packet_status
+h225_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *hpi_ptr, tap_flags_t flags _U_)
+{
+ stat_data_t* stat_data = (stat_data_t*)tapdata;
+ const h225_packet_info *hpi = (const h225_packet_info *)hpi_ptr;
+ int tag_idx = -1;
+ int reason_idx = -1;
+
+ if(hpi->msg_tag < 0) { /* uninitialized */
+ return TAP_PACKET_DONT_REDRAW;
+ }
+
+ switch (hpi->msg_type) {
+
+ case H225_RAS:
+ tag_idx = ras_msg_idx[MIN(hpi->msg_tag, (int)RAS_MSG_TYPES-1)];
+
+ /* Look for reason tag */
+ if(hpi->reason < 0) { /* uninitialized */
+ break;
+ }
+
+ switch(hpi->msg_tag) {
+
+ case 2: /* GRJ */
+ reason_idx = grj_reason_idx[MIN(hpi->reason, (int)GRJ_REASONS-1)];
+ break;
+ case 5: /* RRJ */
+ reason_idx = rrj_reason_idx[MIN(hpi->reason, (int)RRJ_REASONS-1)];
+ break;
+ case 6: /* URQ */
+ reason_idx = urq_reason_idx[MIN(hpi->reason, (int)URQ_REASONS-1)];
+ break;
+ case 8: /* URJ */
+ reason_idx = urj_reason_idx[MIN(hpi->reason, (int)URJ_REASONS-1)];
+ break;
+ case 11: /* ARJ */
+ reason_idx = arj_reason_idx[MIN(hpi->reason, (int)ARJ_REASONS-1)];
+ break;
+ case 14: /* BRJ */
+ reason_idx = brj_reason_idx[MIN(hpi->reason, (int)BRJ_REASONS-1)];
+ break;
+ case 15: /* DRQ */
+ reason_idx = drq_reason_idx[MIN(hpi->reason, (int)DRQ_REASONS-1)];
+ break;
+ case 17: /* DRJ */
+ reason_idx = drj_reason_idx[MIN(hpi->reason, (int)DRJ_REASONS-1)];
+ break;
+ case 20: /* LRJ */
+ reason_idx = lrj_reason_idx[MIN(hpi->reason, (int)LRJ_REASONS-1)];
+ break;
+ case 29: /* IRQ Nak */
+ reason_idx = irqnak_reason_idx[MIN(hpi->reason, (int)IRQNAK_REASONS-1)];
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+
+ break;
+
+ case H225_CS:
+ tag_idx = cs_msg_idx[MIN(hpi->msg_tag, (int)CS_MSG_TYPES-1)];
+
+ /* Look for reason tag */
+ if(hpi->reason < 0) { /* uninitialized */
+ break;
+ }
+
+ switch(hpi->msg_tag) {
+
+ case 5: /* ReleaseComplete */
+ reason_idx = rel_cmp_reason_idx[MIN(hpi->reason, (int)REL_CMP_REASONS-1)];
+ break;
+ case 6: /* Facility */
+ reason_idx = facility_reason_idx[MIN(hpi->reason, (int)FACILITY_REASONS-1)];
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+
+ break;
+
+ case H225_OTHERS:
+ default:
+ tag_idx = other_idx;
+ }
+
+ if (tag_idx >= 0) {
+ stat_tap_table*table = g_array_index(stat_data->stat_tap_data->tables, stat_tap_table*, 0);
+ stat_tap_table_item_type* msg_data = stat_tap_get_field_data(table, tag_idx, COUNT_COLUMN);;
+ msg_data->value.uint_value++;
+ stat_tap_set_field_data(table, tag_idx, COUNT_COLUMN, msg_data);
+
+ if (reason_idx >= 0) {
+ msg_data = stat_tap_get_field_data(table, reason_idx, COUNT_COLUMN);;
+ msg_data->value.uint_value++;
+ stat_tap_set_field_data(table, reason_idx, COUNT_COLUMN, msg_data);
+ }
+
+ return TAP_PACKET_REDRAW;
+ }
+ return TAP_PACKET_DONT_REDRAW;
+}
+
+static void
+h225_stat_reset(stat_tap_table* table)
+{
+ guint element;
+ stat_tap_table_item_type* item_data;
+
+ for (element = 0; element < table->num_elements; element++)
+ {
+ item_data = stat_tap_get_field_data(table, element, COUNT_COLUMN);
+ item_data->value.uint_value = 0;
+ stat_tap_set_field_data(table, element, COUNT_COLUMN, item_data);
+ }
+}
+
+/*--- proto_register_h225 -------------------------------------------*/
+void proto_register_h225(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+ { &hf_h221Manufacturer,
+ { "H.225 Manufacturer", "h225.Manufacturer", FT_UINT32, BASE_HEX,
+ VALS(H221ManufacturerCode_vals), 0, "h225.H.221 Manufacturer", HFILL }},
+
+ { &hf_h225_ras_req_frame,
+ { "RAS Request Frame", "h225.ras.reqframe", FT_FRAMENUM, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_h225_ras_rsp_frame,
+ { "RAS Response Frame", "h225.ras.rspframe", FT_FRAMENUM, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_h225_ras_dup,
+ { "Duplicate RAS Message", "h225.ras.dup", FT_UINT32, BASE_DEC,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_h225_ras_deltatime,
+ { "RAS Service Response Time", "h225.ras.timedelta", FT_RELATIVE_TIME, BASE_NONE,
+ NULL, 0, "Timedelta between RAS-Request and RAS-Response", HFILL }},
+
+ { &hf_h225_debug_dissector_try_string,
+ { "*** DEBUG dissector_try_string", "h225.debug.dissector_try_string", FT_STRING, BASE_NONE,
+ NULL, 0, NULL, HFILL }},
+
+ { &hf_h225_H323_UserInformation_PDU,
+ { "H323-UserInformation", "h225.H323_UserInformation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h225_ExtendedAliasAddress_PDU,
+ { "ExtendedAliasAddress", "h225.ExtendedAliasAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_RasMessage_PDU,
+ { "RasMessage", "h225.RasMessage",
+ FT_UINT32, BASE_DEC, VALS(h225_RasMessage_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_h323_uu_pdu,
+ { "h323-uu-pdu", "h225.h323_uu_pdu_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_user_data,
+ { "user-data", "h225.user_data_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_protocol_discriminator,
+ { "protocol-discriminator", "h225.protocol_discriminator",
+ FT_UINT32, BASE_DEC|BASE_EXT_STRING, &q931_protocol_discriminator_vals_ext, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_h225_user_information,
+ { "user-information", "h225.user_information",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_131", HFILL }},
+ { &hf_h225_h323_message_body,
+ { "h323-message-body", "h225.h323_message_body",
+ FT_UINT32, BASE_DEC, VALS(T_h323_message_body_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_setup,
+ { "setup", "h225.setup_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Setup_UUIE", HFILL }},
+ { &hf_h225_callProceeding,
+ { "callProceeding", "h225.callProceeding_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CallProceeding_UUIE", HFILL }},
+ { &hf_h225_connect,
+ { "connect", "h225.connect_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Connect_UUIE", HFILL }},
+ { &hf_h225_alerting,
+ { "alerting", "h225.alerting_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Alerting_UUIE", HFILL }},
+ { &hf_h225_information,
+ { "information", "h225.information_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Information_UUIE", HFILL }},
+ { &hf_h225_releaseComplete,
+ { "releaseComplete", "h225.releaseComplete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ReleaseComplete_UUIE", HFILL }},
+ { &hf_h225_facility,
+ { "facility", "h225.facility_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Facility_UUIE", HFILL }},
+ { &hf_h225_progress,
+ { "progress", "h225.progress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Progress_UUIE", HFILL }},
+ { &hf_h225_empty_flg,
+ { "empty", "h225.empty_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_empty_flg", HFILL }},
+ { &hf_h225_status,
+ { "status", "h225.status_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Status_UUIE", HFILL }},
+ { &hf_h225_statusInquiry,
+ { "statusInquiry", "h225.statusInquiry_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "StatusInquiry_UUIE", HFILL }},
+ { &hf_h225_setupAcknowledge,
+ { "setupAcknowledge", "h225.setupAcknowledge_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SetupAcknowledge_UUIE", HFILL }},
+ { &hf_h225_notify,
+ { "notify", "h225.notify_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Notify_UUIE", HFILL }},
+ { &hf_h225_nonStandardData,
+ { "nonStandardData", "h225.nonStandardData_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NonStandardParameter", HFILL }},
+ { &hf_h225_h4501SupplementaryService,
+ { "h4501SupplementaryService", "h225.h4501SupplementaryService",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h4501SupplementaryService_item,
+ { "h4501SupplementaryService item", "h225.h4501SupplementaryService_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245Tunnelling,
+ { "h245Tunnelling", "h225.h245Tunnelling",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_H245Control_item,
+ { "H245Control item", "h225.H245Control_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245Control,
+ { "h245Control", "h225.h245Control",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nonStandardControl,
+ { "nonStandardControl", "h225.nonStandardControl",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_NonStandardParameter", HFILL }},
+ { &hf_h225_nonStandardControl_item,
+ { "NonStandardParameter", "h225.NonStandardParameter_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callLinkage,
+ { "callLinkage", "h225.callLinkage_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tunnelledSignallingMessage,
+ { "tunnelledSignallingMessage", "h225.tunnelledSignallingMessage_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tunnelledProtocolID,
+ { "tunnelledProtocolID", "h225.tunnelledProtocolID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TunnelledProtocol", HFILL }},
+ { &hf_h225_messageContent,
+ { "messageContent", "h225.messageContent",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_messageContent_item,
+ { "messageContent item", "h225.messageContent_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_messageContent_item", HFILL }},
+ { &hf_h225_tunnellingRequired,
+ { "tunnellingRequired", "h225.tunnellingRequired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_provisionalRespToH245Tunnelling,
+ { "provisionalRespToH245Tunnelling", "h225.provisionalRespToH245Tunnelling_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_stimulusControl,
+ { "stimulusControl", "h225.stimulusControl_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_genericData,
+ { "genericData", "h225.genericData",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_GenericData", HFILL }},
+ { &hf_h225_genericData_item,
+ { "GenericData", "h225.GenericData_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nonStandard,
+ { "nonStandard", "h225.nonStandard_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NonStandardParameter", HFILL }},
+ { &hf_h225_isText,
+ { "isText", "h225.isText_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h248Message,
+ { "h248Message", "h225.h248Message",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_h225_protocolIdentifier,
+ { "protocolIdentifier", "h225.protocolIdentifier",
+ FT_OID, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_uUIE_destinationInfo,
+ { "destinationInfo", "h225.destinationInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EndpointType", HFILL }},
+ { &hf_h225_h245Address,
+ { "h245Address", "h225.h245Address",
+ FT_UINT32, BASE_DEC, VALS(h225_H245TransportAddress_vals), 0,
+ "H245TransportAddress", HFILL }},
+ { &hf_h225_callIdentifier,
+ { "callIdentifier", "h225.callIdentifier_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245SecurityMode,
+ { "h245SecurityMode", "h225.h245SecurityMode",
+ FT_UINT32, BASE_DEC, VALS(h225_H245Security_vals), 0,
+ "H245Security", HFILL }},
+ { &hf_h225_tokens,
+ { "tokens", "h225.tokens",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ClearToken", HFILL }},
+ { &hf_h225_tokens_item,
+ { "ClearToken", "h225.ClearToken_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_cryptoTokens,
+ { "cryptoTokens", "h225.cryptoTokens",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CryptoH323Token", HFILL }},
+ { &hf_h225_cryptoTokens_item,
+ { "CryptoH323Token", "h225.CryptoH323Token",
+ FT_UINT32, BASE_DEC, VALS(h225_CryptoH323Token_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_fastStart,
+ { "fastStart", "h225.fastStart",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_multipleCalls,
+ { "multipleCalls", "h225.multipleCalls",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_maintainConnection,
+ { "maintainConnection", "h225.maintainConnection",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_alertingAddress,
+ { "alertingAddress", "h225.alertingAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_alertingAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_presentationIndicator,
+ { "presentationIndicator", "h225.presentationIndicator",
+ FT_UINT32, BASE_DEC, VALS(h225_PresentationIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_screeningIndicator,
+ { "screeningIndicator", "h225.screeningIndicator",
+ FT_UINT32, BASE_DEC, VALS(h225_ScreeningIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_fastConnectRefused,
+ { "fastConnectRefused", "h225.fastConnectRefused_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_serviceControl,
+ { "serviceControl", "h225.serviceControl",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ServiceControlSession", HFILL }},
+ { &hf_h225_serviceControl_item,
+ { "ServiceControlSession", "h225.ServiceControlSession_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_capacity,
+ { "capacity", "h225.capacity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CallCapacity", HFILL }},
+ { &hf_h225_featureSet,
+ { "featureSet", "h225.featureSet_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_displayName,
+ { "displayName", "h225.displayName",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_DisplayName", HFILL }},
+ { &hf_h225_displayName_item,
+ { "DisplayName", "h225.DisplayName_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_conferenceID,
+ { "conferenceID", "h225.conferenceID",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "ConferenceIdentifier", HFILL }},
+ { &hf_h225_language,
+ { "language", "h225.language",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_connectedAddress,
+ { "connectedAddress", "h225.connectedAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_connectedAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_circuitInfo,
+ { "circuitInfo", "h225.circuitInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_releaseCompleteReason,
+ { "reason", "h225.reason",
+ FT_UINT32, BASE_DEC, VALS(h225_ReleaseCompleteReason_vals), 0,
+ "ReleaseCompleteReason", HFILL }},
+ { &hf_h225_busyAddress,
+ { "busyAddress", "h225.busyAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_busyAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_destinationInfo,
+ { "destinationInfo", "h225.destinationInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EndpointType", HFILL }},
+ { &hf_h225_noBandwidth,
+ { "noBandwidth", "h225.noBandwidth_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperResources,
+ { "gatekeeperResources", "h225.gatekeeperResources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unreachableDestination,
+ { "unreachableDestination", "h225.unreachableDestination_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_destinationRejection,
+ { "destinationRejection", "h225.destinationRejection_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidRevision,
+ { "invalidRevision", "h225.invalidRevision_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_noPermission,
+ { "noPermission", "h225.noPermission_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unreachableGatekeeper,
+ { "unreachableGatekeeper", "h225.unreachableGatekeeper_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatewayResources,
+ { "gatewayResources", "h225.gatewayResources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_badFormatAddress,
+ { "badFormatAddress", "h225.badFormatAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_adaptiveBusy,
+ { "adaptiveBusy", "h225.adaptiveBusy_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_inConf,
+ { "inConf", "h225.inConf_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_undefinedReason,
+ { "undefinedReason", "h225.undefinedReason_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_facilityCallDeflection,
+ { "facilityCallDeflection", "h225.facilityCallDeflection_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityDenied,
+ { "securityDenied", "h225.securityDenied_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_calledPartyNotRegistered,
+ { "calledPartyNotRegistered", "h225.calledPartyNotRegistered_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callerNotRegistered,
+ { "callerNotRegistered", "h225.callerNotRegistered_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_newConnectionNeeded,
+ { "newConnectionNeeded", "h225.newConnectionNeeded_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nonStandardReason,
+ { "nonStandardReason", "h225.nonStandardReason_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NonStandardParameter", HFILL }},
+ { &hf_h225_replaceWithConferenceInvite,
+ { "replaceWithConferenceInvite", "h225.replaceWithConferenceInvite",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "ConferenceIdentifier", HFILL }},
+ { &hf_h225_genericDataReason,
+ { "genericDataReason", "h225.genericDataReason_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_neededFeatureNotSupported,
+ { "neededFeatureNotSupported", "h225.neededFeatureNotSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tunnelledSignallingRejected,
+ { "tunnelledSignallingRejected", "h225.tunnelledSignallingRejected_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidCID,
+ { "invalidCID", "h225.invalidCID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_rLC_securityError,
+ { "securityError", "h225.securityError",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityErrors_vals), 0,
+ "SecurityErrors", HFILL }},
+ { &hf_h225_hopCountExceeded,
+ { "hopCountExceeded", "h225.hopCountExceeded_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_sourceAddress,
+ { "sourceAddress", "h225.sourceAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_sourceAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_setup_UUIE_sourceInfo,
+ { "sourceInfo", "h225.sourceInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EndpointType", HFILL }},
+ { &hf_h225_destinationAddress,
+ { "destinationAddress", "h225.destinationAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_destinationAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_destCallSignalAddress,
+ { "destCallSignalAddress", "h225.destCallSignalAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_destExtraCallInfo,
+ { "destExtraCallInfo", "h225.destExtraCallInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_destExtraCallInfo_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_destExtraCRV,
+ { "destExtraCRV", "h225.destExtraCRV",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallReferenceValue", HFILL }},
+ { &hf_h225_destExtraCRV_item,
+ { "CallReferenceValue", "h225.CallReferenceValue",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_activeMC,
+ { "activeMC", "h225.activeMC",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_conferenceGoal,
+ { "conferenceGoal", "h225.conferenceGoal",
+ FT_UINT32, BASE_DEC, VALS(h225_T_conferenceGoal_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_create,
+ { "create", "h225.create_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_join,
+ { "join", "h225.join_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invite,
+ { "invite", "h225.invite_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_capability_negotiation,
+ { "capability-negotiation", "h225.capability_negotiation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callIndependentSupplementaryService,
+ { "callIndependentSupplementaryService", "h225.callIndependentSupplementaryService_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callServices,
+ { "callServices", "h225.callServices_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "QseriesOptions", HFILL }},
+ { &hf_h225_callType,
+ { "callType", "h225.callType",
+ FT_UINT32, BASE_DEC, VALS(h225_CallType_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_sourceCallSignalAddress,
+ { "sourceCallSignalAddress", "h225.sourceCallSignalAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_uUIE_remoteExtensionAddress,
+ { "remoteExtensionAddress", "h225.remoteExtensionAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_h245SecurityCapability,
+ { "h245SecurityCapability", "h225.h245SecurityCapability",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_H245Security", HFILL }},
+ { &hf_h225_h245SecurityCapability_item,
+ { "H245Security", "h225.H245Security",
+ FT_UINT32, BASE_DEC, VALS(h225_H245Security_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_FastStart_item,
+ { "FastStart item", "h225.FastStart_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_mediaWaitForConnect,
+ { "mediaWaitForConnect", "h225.mediaWaitForConnect",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_canOverlapSend,
+ { "canOverlapSend", "h225.canOverlapSend",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_endpointIdentifier,
+ { "endpointIdentifier", "h225.endpointIdentifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_connectionParameters,
+ { "connectionParameters", "h225.connectionParameters_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_connectionType,
+ { "connectionType", "h225.connectionType",
+ FT_UINT32, BASE_DEC, VALS(h225_ScnConnectionType_vals), 0,
+ "ScnConnectionType", HFILL }},
+ { &hf_h225_numberOfScnConnections,
+ { "numberOfScnConnections", "h225.numberOfScnConnections",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_connectionAggregation,
+ { "connectionAggregation", "h225.connectionAggregation",
+ FT_UINT32, BASE_DEC, VALS(h225_ScnConnectionAggregation_vals), 0,
+ "ScnConnectionAggregation", HFILL }},
+ { &hf_h225_Language_item,
+ { "Language item", "h225.Language_item",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_32", HFILL }},
+ { &hf_h225_symmetricOperationRequired,
+ { "symmetricOperationRequired", "h225.symmetricOperationRequired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_desiredProtocols,
+ { "desiredProtocols", "h225.desiredProtocols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_SupportedProtocols", HFILL }},
+ { &hf_h225_desiredProtocols_item,
+ { "SupportedProtocols", "h225.SupportedProtocols",
+ FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_neededFeatures,
+ { "neededFeatures", "h225.neededFeatures",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_FeatureDescriptor", HFILL }},
+ { &hf_h225_neededFeatures_item,
+ { "FeatureDescriptor", "h225.FeatureDescriptor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_desiredFeatures,
+ { "desiredFeatures", "h225.desiredFeatures",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_FeatureDescriptor", HFILL }},
+ { &hf_h225_desiredFeatures_item,
+ { "FeatureDescriptor", "h225.FeatureDescriptor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_supportedFeatures,
+ { "supportedFeatures", "h225.supportedFeatures",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_FeatureDescriptor", HFILL }},
+ { &hf_h225_supportedFeatures_item,
+ { "FeatureDescriptor", "h225.FeatureDescriptor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ParallelH245Control_item,
+ { "ParallelH245Control item", "h225.ParallelH245Control_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_parallelH245Control,
+ { "parallelH245Control", "h225.parallelH245Control",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_additionalSourceAddresses,
+ { "additionalSourceAddresses", "h225.additionalSourceAddresses",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ExtendedAliasAddress", HFILL }},
+ { &hf_h225_additionalSourceAddresses_item,
+ { "ExtendedAliasAddress", "h225.ExtendedAliasAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hopCount_1_31,
+ { "hopCount", "h225.hopCount",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_31", HFILL }},
+ { &hf_h225_unknown,
+ { "unknown", "h225.unknown_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bChannel,
+ { "bChannel", "h225.bChannel_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hybrid2x64,
+ { "hybrid2x64", "h225.hybrid2x64_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hybrid384,
+ { "hybrid384", "h225.hybrid384_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hybrid1536,
+ { "hybrid1536", "h225.hybrid1536_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hybrid1920,
+ { "hybrid1920", "h225.hybrid1920_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_multirate,
+ { "multirate", "h225.multirate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_auto,
+ { "auto", "h225.auto_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_none,
+ { "none", "h225.none_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h221,
+ { "h221", "h225.h221_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bonded_mode1,
+ { "bonded-mode1", "h225.bonded_mode1_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bonded_mode2,
+ { "bonded-mode2", "h225.bonded_mode2_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bonded_mode3,
+ { "bonded-mode3", "h225.bonded_mode3_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_presentationAllowed,
+ { "presentationAllowed", "h225.presentationAllowed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_presentationRestricted,
+ { "presentationRestricted", "h225.presentationRestricted_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_addressNotAvailable,
+ { "addressNotAvailable", "h225.addressNotAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_alternativeAddress,
+ { "alternativeAddress", "h225.alternativeAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_alternativeAliasAddress,
+ { "alternativeAliasAddress", "h225.alternativeAliasAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_alternativeAliasAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_facilityReason,
+ { "reason", "h225.reason",
+ FT_UINT32, BASE_DEC, VALS(FacilityReason_vals), 0,
+ "FacilityReason", HFILL }},
+ { &hf_h225_conferences,
+ { "conferences", "h225.conferences",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ConferenceList", HFILL }},
+ { &hf_h225_conferences_item,
+ { "ConferenceList", "h225.ConferenceList_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_conferenceAlias,
+ { "conferenceAlias", "h225.conferenceAlias",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_routeCallToGatekeeper,
+ { "routeCallToGatekeeper", "h225.routeCallToGatekeeper_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callForwarded,
+ { "callForwarded", "h225.callForwarded_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_routeCallToMC,
+ { "routeCallToMC", "h225.routeCallToMC_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_conferenceListChoice,
+ { "conferenceListChoice", "h225.conferenceListChoice_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_startH245,
+ { "startH245", "h225.startH245_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_noH245,
+ { "noH245", "h225.noH245_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_newTokens,
+ { "newTokens", "h225.newTokens_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_featureSetUpdate,
+ { "featureSetUpdate", "h225.featureSetUpdate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_forwardedElements,
+ { "forwardedElements", "h225.forwardedElements_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_transportedInformation,
+ { "transportedInformation", "h225.transportedInformation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245IpAddress,
+ { "ipAddress", "h225.ipAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_h245IpAddress", HFILL }},
+ { &hf_h225_h245Ip,
+ { "ip", "h225.h245Ip",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "T_h245Ip", HFILL }},
+ { &hf_h225_h245IpPort,
+ { "port", "h225.h245IpPort",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_h245IpPort", HFILL }},
+ { &hf_h225_h245IpSourceRoute,
+ { "ipSourceRoute", "h225.ipSourceRoute_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_h245IpSourceRoute", HFILL }},
+ { &hf_h225_ip,
+ { "ip", "h225.ip",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_h225_port,
+ { "port", "h225.port",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_h245Route,
+ { "route", "h225.route",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_h245Route", HFILL }},
+ { &hf_h225_h245Route_item,
+ { "route item", "h225.route_item",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_h225_h245Routing,
+ { "routing", "h225.routing",
+ FT_UINT32, BASE_DEC, VALS(h225_T_h245Routing_vals), 0,
+ "T_h245Routing", HFILL }},
+ { &hf_h225_strict,
+ { "strict", "h225.strict_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_loose,
+ { "loose", "h225.loose_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245IpxAddress,
+ { "ipxAddress", "h225.ipxAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_h245IpxAddress", HFILL }},
+ { &hf_h225_node,
+ { "node", "h225.node",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_6", HFILL }},
+ { &hf_h225_netnum,
+ { "netnum", "h225.netnum",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_h225_h245IpxPort,
+ { "port", "h225.h245IpxPort",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2", HFILL }},
+ { &hf_h225_h245Ip6Address,
+ { "ip6Address", "h225.ip6Address_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T_h245Ip6Address", HFILL }},
+ { &hf_h225_h245Ip6,
+ { "ip", "h225.h245Ip6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "T_h245Ip6", HFILL }},
+ { &hf_h225_h245Ip6port,
+ { "port", "h225.h245Ip6port",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_h245Ip6port", HFILL }},
+ { &hf_h225_netBios,
+ { "netBios", "h225.netBios",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_16", HFILL }},
+ { &hf_h225_nsap,
+ { "nsap", "h225.nsap",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_20", HFILL }},
+ { &hf_h225_nonStandardAddress,
+ { "nonStandardAddress", "h225.nonStandardAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "NonStandardParameter", HFILL }},
+ { &hf_h225_ipAddress,
+ { "ipAddress", "h225.ipAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ipV4,
+ { "ip", "h225.ipV4",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "IpV4", HFILL }},
+ { &hf_h225_ipV4_port,
+ { "port", "h225.ipV4_port",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_ipSourceRoute,
+ { "ipSourceRoute", "h225.ipSourceRoute_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_src_route_ipV4,
+ { "ip", "h225.src_route_ipV4",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_h225_ipV4_src_port,
+ { "port", "h225.ipV4_src_port",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_route,
+ { "route", "h225.route",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_route_item,
+ { "route item", "h225.route_item",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_h225_routing,
+ { "routing", "h225.routing",
+ FT_UINT32, BASE_DEC, VALS(h225_T_routing_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_ipxAddress,
+ { "ipxAddress", "h225.ipxAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ipx_port,
+ { "port", "h225.ipx_port",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2", HFILL }},
+ { &hf_h225_ip6Address,
+ { "ip6Address", "h225.ip6Address_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ipV6,
+ { "ip", "h225.ipV6",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_16", HFILL }},
+ { &hf_h225_ipV6_port,
+ { "port", "h225.ipV6_port",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_vendor,
+ { "vendor", "h225.vendor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "VendorIdentifier", HFILL }},
+ { &hf_h225_gatekeeper,
+ { "gatekeeper", "h225.gatekeeper_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GatekeeperInfo", HFILL }},
+ { &hf_h225_gateway,
+ { "gateway", "h225.gateway_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GatewayInfo", HFILL }},
+ { &hf_h225_mcu,
+ { "mcu", "h225.mcu_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "McuInfo", HFILL }},
+ { &hf_h225_terminal,
+ { "terminal", "h225.terminal_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TerminalInfo", HFILL }},
+ { &hf_h225_mc,
+ { "mc", "h225.mc",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_undefinedNode,
+ { "undefinedNode", "h225.undefinedNode",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_set,
+ { "set", "h225.set",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING_SIZE_32", HFILL }},
+ { &hf_h225_supportedTunnelledProtocols,
+ { "supportedTunnelledProtocols", "h225.supportedTunnelledProtocols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TunnelledProtocol", HFILL }},
+ { &hf_h225_supportedTunnelledProtocols_item,
+ { "TunnelledProtocol", "h225.TunnelledProtocol_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_protocol,
+ { "protocol", "h225.protocol",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_SupportedProtocols", HFILL }},
+ { &hf_h225_protocol_item,
+ { "SupportedProtocols", "h225.SupportedProtocols",
+ FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_h310,
+ { "h310", "h225.h310_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H310Caps", HFILL }},
+ { &hf_h225_h320,
+ { "h320", "h225.h320_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H320Caps", HFILL }},
+ { &hf_h225_h321,
+ { "h321", "h225.h321_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H321Caps", HFILL }},
+ { &hf_h225_h322,
+ { "h322", "h225.h322_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H322Caps", HFILL }},
+ { &hf_h225_h323,
+ { "h323", "h225.h323_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H323Caps", HFILL }},
+ { &hf_h225_h324,
+ { "h324", "h225.h324_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H324Caps", HFILL }},
+ { &hf_h225_voice,
+ { "voice", "h225.voice_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "VoiceCaps", HFILL }},
+ { &hf_h225_t120_only,
+ { "t120-only", "h225.t120_only_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T120OnlyCaps", HFILL }},
+ { &hf_h225_nonStandardProtocol,
+ { "nonStandardProtocol", "h225.nonStandardProtocol_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_t38FaxAnnexbOnly,
+ { "t38FaxAnnexbOnly", "h225.t38FaxAnnexbOnly_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "T38FaxAnnexbOnlyCaps", HFILL }},
+ { &hf_h225_sip,
+ { "sip", "h225.sip_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SIPCaps", HFILL }},
+ { &hf_h225_dataRatesSupported,
+ { "dataRatesSupported", "h225.dataRatesSupported",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_DataRate", HFILL }},
+ { &hf_h225_dataRatesSupported_item,
+ { "DataRate", "h225.DataRate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_supportedPrefixes,
+ { "supportedPrefixes", "h225.supportedPrefixes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_SupportedPrefix", HFILL }},
+ { &hf_h225_supportedPrefixes_item,
+ { "SupportedPrefix", "h225.SupportedPrefix_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_t38FaxProtocol,
+ { "t38FaxProtocol", "h225.t38FaxProtocol",
+ FT_UINT32, BASE_DEC, VALS(DataProtocolCapability_vals), 0,
+ "DataProtocolCapability", HFILL }},
+ { &hf_h225_t38FaxProfile,
+ { "t38FaxProfile", "h225.t38FaxProfile_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_vendorIdentifier_vendor,
+ { "vendor", "h225.vendor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H221NonStandard", HFILL }},
+ { &hf_h225_productId,
+ { "productId", "h225.productId",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_256", HFILL }},
+ { &hf_h225_versionId,
+ { "versionId", "h225.versionId",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_256", HFILL }},
+ { &hf_h225_enterpriseNumber,
+ { "enterpriseNumber", "h225.enterpriseNumber",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_t35CountryCode,
+ { "t35CountryCode", "h225.t35CountryCode",
+ FT_UINT32, BASE_DEC, VALS(T35CountryCode_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_t35Extension,
+ { "t35Extension", "h225.t35Extension",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_manufacturerCode,
+ { "manufacturerCode", "h225.manufacturerCode",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tunnelledProtocol_id,
+ { "id", "h225.id",
+ FT_UINT32, BASE_DEC, VALS(h225_TunnelledProtocol_id_vals), 0,
+ "TunnelledProtocol_id", HFILL }},
+ { &hf_h225_tunnelledProtocolObjectID,
+ { "tunnelledProtocolObjectID", "h225.tunnelledProtocolObjectID",
+ FT_OID, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tunnelledProtocolAlternateID,
+ { "tunnelledProtocolAlternateID", "h225.tunnelledProtocolAlternateID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TunnelledProtocolAlternateIdentifier", HFILL }},
+ { &hf_h225_subIdentifier,
+ { "subIdentifier", "h225.subIdentifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_64", HFILL }},
+ { &hf_h225_protocolType,
+ { "protocolType", "h225.protocolType",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_64", HFILL }},
+ { &hf_h225_protocolVariant,
+ { "protocolVariant", "h225.protocolVariant",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_64", HFILL }},
+ { &hf_h225_nonStandardIdentifier,
+ { "nonStandardIdentifier", "h225.nonStandardIdentifier",
+ FT_UINT32, BASE_DEC, VALS(h225_NonStandardIdentifier_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_nsp_data,
+ { "data", "h225.data",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_nsp_data", HFILL }},
+ { &hf_h225_nsiOID,
+ { "object", "h225.object",
+ FT_OID, BASE_NONE, NULL, 0,
+ "T_nsiOID", HFILL }},
+ { &hf_h225_h221NonStandard,
+ { "h221NonStandard", "h225.h221NonStandard_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_dialledDigits,
+ { "dialledDigits", "h225.dialledDigits",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "DialedDigits", HFILL }},
+ { &hf_h225_h323_ID,
+ { "h323-ID", "h225.h323_ID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "BMPString_SIZE_1_256", HFILL }},
+ { &hf_h225_url_ID,
+ { "url-ID", "h225.url_ID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_512", HFILL }},
+ { &hf_h225_transportID,
+ { "transportID", "h225.transportID",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_email_ID,
+ { "email-ID", "h225.email_ID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_512", HFILL }},
+ { &hf_h225_partyNumber,
+ { "partyNumber", "h225.partyNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_mobileUIM,
+ { "mobileUIM", "h225.mobileUIM",
+ FT_UINT32, BASE_DEC, VALS(h225_MobileUIM_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_isupNumber,
+ { "isupNumber", "h225.isupNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_IsupNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_wildcard,
+ { "wildcard", "h225.wildcard",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_range,
+ { "range", "h225.range_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_startOfRange,
+ { "startOfRange", "h225.startOfRange",
+ FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
+ "PartyNumber", HFILL }},
+ { &hf_h225_endOfRange,
+ { "endOfRange", "h225.endOfRange",
+ FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
+ "PartyNumber", HFILL }},
+ { &hf_h225_e164Number,
+ { "e164Number", "h225.e164Number_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PublicPartyNumber", HFILL }},
+ { &hf_h225_dataPartyNumber,
+ { "dataPartyNumber", "h225.dataPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "NumberDigits", HFILL }},
+ { &hf_h225_telexPartyNumber,
+ { "telexPartyNumber", "h225.telexPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "NumberDigits", HFILL }},
+ { &hf_h225_privateNumber,
+ { "privateNumber", "h225.privateNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "PrivatePartyNumber", HFILL }},
+ { &hf_h225_nationalStandardPartyNumber,
+ { "nationalStandardPartyNumber", "h225.nationalStandardPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "NumberDigits", HFILL }},
+ { &hf_h225_publicTypeOfNumber,
+ { "publicTypeOfNumber", "h225.publicTypeOfNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_PublicTypeOfNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_publicNumberDigits,
+ { "publicNumberDigits", "h225.publicNumberDigits",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "NumberDigits", HFILL }},
+ { &hf_h225_privateTypeOfNumber,
+ { "privateTypeOfNumber", "h225.privateTypeOfNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_PrivateTypeOfNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_privateNumberDigits,
+ { "privateNumberDigits", "h225.privateNumberDigits",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "NumberDigits", HFILL }},
+ { &hf_h225_displayName_language,
+ { "language", "h225.displayName_language",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String", HFILL }},
+ { &hf_h225_name,
+ { "name", "h225.name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "BMPString_SIZE_1_80", HFILL }},
+ { &hf_h225_internationalNumber,
+ { "internationalNumber", "h225.internationalNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nationalNumber,
+ { "nationalNumber", "h225.nationalNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_networkSpecificNumber,
+ { "networkSpecificNumber", "h225.networkSpecificNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_subscriberNumber,
+ { "subscriberNumber", "h225.subscriberNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_abbreviatedNumber,
+ { "abbreviatedNumber", "h225.abbreviatedNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_level2RegionalNumber,
+ { "level2RegionalNumber", "h225.level2RegionalNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_level1RegionalNumber,
+ { "level1RegionalNumber", "h225.level1RegionalNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_pISNSpecificNumber,
+ { "pISNSpecificNumber", "h225.pISNSpecificNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_localNumber,
+ { "localNumber", "h225.localNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ansi_41_uim,
+ { "ansi-41-uim", "h225.ansi_41_uim_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gsm_uim,
+ { "gsm-uim", "h225.gsm_uim_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_imsi,
+ { "imsi", "h225.imsi",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_min,
+ { "min", "h225.min",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_mdn,
+ { "mdn", "h225.mdn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_msisdn,
+ { "msisdn", "h225.msisdn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_esn,
+ { "esn", "h225.esn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_16", HFILL }},
+ { &hf_h225_mscid,
+ { "mscid", "h225.mscid",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_system_id,
+ { "system-id", "h225.system_id",
+ FT_UINT32, BASE_DEC, VALS(h225_T_system_id_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_sid,
+ { "sid", "h225.sid",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_1_4", HFILL }},
+ { &hf_h225_mid,
+ { "mid", "h225.mid",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_1_4", HFILL }},
+ { &hf_h225_systemMyTypeCode,
+ { "systemMyTypeCode", "h225.systemMyTypeCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1", HFILL }},
+ { &hf_h225_systemAccessType,
+ { "systemAccessType", "h225.systemAccessType",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1", HFILL }},
+ { &hf_h225_qualificationInformationCode,
+ { "qualificationInformationCode", "h225.qualificationInformationCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1", HFILL }},
+ { &hf_h225_sesn,
+ { "sesn", "h225.sesn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_16", HFILL }},
+ { &hf_h225_soc,
+ { "soc", "h225.soc",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_3_16", HFILL }},
+ { &hf_h225_tmsi,
+ { "tmsi", "h225.tmsi",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_1_4", HFILL }},
+ { &hf_h225_imei,
+ { "imei", "h225.imei",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_15_16", HFILL }},
+ { &hf_h225_hplmn,
+ { "hplmn", "h225.hplmn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_1_4", HFILL }},
+ { &hf_h225_vplmn,
+ { "vplmn", "h225.vplmn",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "TBCD_STRING_SIZE_1_4", HFILL }},
+ { &hf_h225_isupE164Number,
+ { "e164Number", "h225.e164Number_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IsupPublicPartyNumber", HFILL }},
+ { &hf_h225_isupDataPartyNumber,
+ { "dataPartyNumber", "h225.dataPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IsupDigits", HFILL }},
+ { &hf_h225_isupTelexPartyNumber,
+ { "telexPartyNumber", "h225.telexPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IsupDigits", HFILL }},
+ { &hf_h225_isupPrivateNumber,
+ { "privateNumber", "h225.privateNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "IsupPrivatePartyNumber", HFILL }},
+ { &hf_h225_isupNationalStandardPartyNumber,
+ { "nationalStandardPartyNumber", "h225.nationalStandardPartyNumber",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IsupDigits", HFILL }},
+ { &hf_h225_natureOfAddress,
+ { "natureOfAddress", "h225.natureOfAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_NatureOfAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_address,
+ { "address", "h225.address",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IsupDigits", HFILL }},
+ { &hf_h225_routingNumberNationalFormat,
+ { "routingNumberNationalFormat", "h225.routingNumberNationalFormat_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_routingNumberNetworkSpecificFormat,
+ { "routingNumberNetworkSpecificFormat", "h225.routingNumberNetworkSpecificFormat_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_routingNumberWithCalledDirectoryNumber,
+ { "routingNumberWithCalledDirectoryNumber", "h225.routingNumberWithCalledDirectoryNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_extAliasAddress,
+ { "address", "h225.extAliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_aliasAddress,
+ { "aliasAddress", "h225.aliasAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_aliasAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_callSignalAddress,
+ { "callSignalAddress", "h225.callSignalAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TransportAddress", HFILL }},
+ { &hf_h225_callSignalAddress_item,
+ { "TransportAddress", "h225.TransportAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TransportAddress", HFILL }},
+ { &hf_h225_rasAddress_item,
+ { "TransportAddress", "h225.TransportAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_endpointType,
+ { "endpointType", "h225.endpointType_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_priority,
+ { "priority", "h225.priority",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_127", HFILL }},
+ { &hf_h225_remoteExtensionAddress,
+ { "remoteExtensionAddress", "h225.remoteExtensionAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_ep_remoteExtensionAddress_item,
+ { "AliasAddress", "h225.remoteExtensionAddress.item",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_alternateTransportAddresses,
+ { "alternateTransportAddresses", "h225.alternateTransportAddresses_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_annexE,
+ { "annexE", "h225.annexE",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TransportAddress", HFILL }},
+ { &hf_h225_annexE_item,
+ { "TransportAddress", "h225.TransportAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_sctp,
+ { "sctp", "h225.sctp",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TransportAddress", HFILL }},
+ { &hf_h225_sctp_item,
+ { "TransportAddress", "h225.TransportAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_tcp,
+ { "tcp", "h225.tcp_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_annexE_flg,
+ { "annexE", "h225.annexE_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_sctp_flg,
+ { "sctp", "h225.sctp_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_alternateGK_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_gatekeeperIdentifier,
+ { "gatekeeperIdentifier", "h225.gatekeeperIdentifier",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_needToRegister,
+ { "needToRegister", "h225.needToRegister",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_alternateGatekeeper,
+ { "alternateGatekeeper", "h225.alternateGatekeeper",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AlternateGK", HFILL }},
+ { &hf_h225_alternateGatekeeper_item,
+ { "AlternateGK", "h225.AlternateGK_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_altGKisPermanent,
+ { "altGKisPermanent", "h225.altGKisPermanent",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_default,
+ { "default", "h225.default_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_encryption,
+ { "encryption", "h225.encryption",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
+ "SecurityServiceMode", HFILL }},
+ { &hf_h225_authenticaton,
+ { "authenticaton", "h225.authenticaton",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
+ "SecurityServiceMode", HFILL }},
+ { &hf_h225_securityCapabilities_integrity,
+ { "integrity", "h225.integrity",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
+ "SecurityServiceMode", HFILL }},
+ { &hf_h225_securityWrongSyncTime,
+ { "securityWrongSyncTime", "h225.securityWrongSyncTime_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityReplay,
+ { "securityReplay", "h225.securityReplay_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityWrongGeneralID,
+ { "securityWrongGeneralID", "h225.securityWrongGeneralID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityWrongSendersID,
+ { "securityWrongSendersID", "h225.securityWrongSendersID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityIntegrityFailed,
+ { "securityIntegrityFailed", "h225.securityIntegrityFailed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityWrongOID,
+ { "securityWrongOID", "h225.securityWrongOID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityDHmismatch,
+ { "securityDHmismatch", "h225.securityDHmismatch_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateExpired,
+ { "securityCertificateExpired", "h225.securityCertificateExpired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateDateInvalid,
+ { "securityCertificateDateInvalid", "h225.securityCertificateDateInvalid_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateRevoked,
+ { "securityCertificateRevoked", "h225.securityCertificateRevoked_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateNotReadable,
+ { "securityCertificateNotReadable", "h225.securityCertificateNotReadable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateSignatureInvalid,
+ { "securityCertificateSignatureInvalid", "h225.securityCertificateSignatureInvalid_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateMissing,
+ { "securityCertificateMissing", "h225.securityCertificateMissing_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityCertificateIncomplete,
+ { "securityCertificateIncomplete", "h225.securityCertificateIncomplete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityUnsupportedCertificateAlgOID,
+ { "securityUnsupportedCertificateAlgOID", "h225.securityUnsupportedCertificateAlgOID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityUnknownCA,
+ { "securityUnknownCA", "h225.securityUnknownCA_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_noSecurity,
+ { "noSecurity", "h225.noSecurity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_tls,
+ { "tls", "h225.tls_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityCapabilities", HFILL }},
+ { &hf_h225_ipsec,
+ { "ipsec", "h225.ipsec_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SecurityCapabilities", HFILL }},
+ { &hf_h225_q932Full,
+ { "q932Full", "h225.q932Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q951Full,
+ { "q951Full", "h225.q951Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q952Full,
+ { "q952Full", "h225.q952Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q953Full,
+ { "q953Full", "h225.q953Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q955Full,
+ { "q955Full", "h225.q955Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q956Full,
+ { "q956Full", "h225.q956Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q957Full,
+ { "q957Full", "h225.q957Full",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_q954Info,
+ { "q954Info", "h225.q954Info_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "Q954Details", HFILL }},
+ { &hf_h225_conferenceCalling,
+ { "conferenceCalling", "h225.conferenceCalling",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_threePartyService,
+ { "threePartyService", "h225.threePartyService",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_guid,
+ { "guid", "h225.guid",
+ FT_GUID, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_isoAlgorithm,
+ { "isoAlgorithm", "h225.isoAlgorithm",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_hMAC_MD5,
+ { "hMAC-MD5", "h225.hMAC_MD5_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_hMAC_iso10118_2_s,
+ { "hMAC-iso10118-2-s", "h225.hMAC_iso10118_2_s",
+ FT_UINT32, BASE_DEC, VALS(h225_EncryptIntAlg_vals), 0,
+ "EncryptIntAlg", HFILL }},
+ { &hf_h225_hMAC_iso10118_2_l,
+ { "hMAC-iso10118-2-l", "h225.hMAC_iso10118_2_l",
+ FT_UINT32, BASE_DEC, VALS(h225_EncryptIntAlg_vals), 0,
+ "EncryptIntAlg", HFILL }},
+ { &hf_h225_hMAC_iso10118_3,
+ { "hMAC-iso10118-3", "h225.hMAC_iso10118_3",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_digSig,
+ { "digSig", "h225.digSig_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_iso9797,
+ { "iso9797", "h225.iso9797",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_nonIsoIM,
+ { "nonIsoIM", "h225.nonIsoIM",
+ FT_UINT32, BASE_DEC, VALS(h225_NonIsoIntegrityMechanism_vals), 0,
+ "NonIsoIntegrityMechanism", HFILL }},
+ { &hf_h225_algorithmOID,
+ { "algorithmOID", "h225.algorithmOID",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_icv,
+ { "icv", "h225.icv",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "BIT_STRING", HFILL }},
+ { &hf_h225_cryptoEPPwdHash,
+ { "cryptoEPPwdHash", "h225.cryptoEPPwdHash_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_alias,
+ { "alias", "h225.alias",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_timeStamp,
+ { "timeStamp", "h225.timeStamp",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_token,
+ { "token", "h225.token_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "HASHED", HFILL }},
+ { &hf_h225_cryptoGKPwdHash,
+ { "cryptoGKPwdHash", "h225.cryptoGKPwdHash_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperId,
+ { "gatekeeperId", "h225.gatekeeperId",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "GatekeeperIdentifier", HFILL }},
+ { &hf_h225_cryptoEPPwdEncr,
+ { "cryptoEPPwdEncr", "h225.cryptoEPPwdEncr_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ENCRYPTED", HFILL }},
+ { &hf_h225_cryptoGKPwdEncr,
+ { "cryptoGKPwdEncr", "h225.cryptoGKPwdEncr_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ENCRYPTED", HFILL }},
+ { &hf_h225_cryptoEPCert,
+ { "cryptoEPCert", "h225.cryptoEPCert_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SIGNED", HFILL }},
+ { &hf_h225_cryptoGKCert,
+ { "cryptoGKCert", "h225.cryptoGKCert_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SIGNED", HFILL }},
+ { &hf_h225_cryptoFastStart,
+ { "cryptoFastStart", "h225.cryptoFastStart_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SIGNED", HFILL }},
+ { &hf_h225_nestedcryptoToken,
+ { "nestedcryptoToken", "h225.nestedcryptoToken",
+ FT_UINT32, BASE_DEC, VALS(h235_CryptoToken_vals), 0,
+ "CryptoToken", HFILL }},
+ { &hf_h225_channelRate,
+ { "channelRate", "h225.channelRate",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "BandWidth", HFILL }},
+ { &hf_h225_channelMultiplier,
+ { "channelMultiplier", "h225.channelMultiplier",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_256", HFILL }},
+ { &hf_h225_globalCallId,
+ { "globalCallId", "h225.globalCallId",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "GloballyUniqueID", HFILL }},
+ { &hf_h225_threadId,
+ { "threadId", "h225.threadId",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "GloballyUniqueID", HFILL }},
+ { &hf_h225_prefix,
+ { "prefix", "h225.prefix",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_canReportCallCapacity,
+ { "canReportCallCapacity", "h225.canReportCallCapacity",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_capacityReportingSpecification_when,
+ { "when", "h225.when_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CapacityReportingSpecification_when", HFILL }},
+ { &hf_h225_callStart,
+ { "callStart", "h225.callStart_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callEnd,
+ { "callEnd", "h225.callEnd_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_maximumCallCapacity,
+ { "maximumCallCapacity", "h225.maximumCallCapacity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CallCapacityInfo", HFILL }},
+ { &hf_h225_currentCallCapacity,
+ { "currentCallCapacity", "h225.currentCallCapacity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CallCapacityInfo", HFILL }},
+ { &hf_h225_voiceGwCallsAvailable,
+ { "voiceGwCallsAvailable", "h225.voiceGwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_voiceGwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h310GwCallsAvailable,
+ { "h310GwCallsAvailable", "h225.h310GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h310GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h320GwCallsAvailable,
+ { "h320GwCallsAvailable", "h225.h320GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h320GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h321GwCallsAvailable,
+ { "h321GwCallsAvailable", "h225.h321GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h321GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h322GwCallsAvailable,
+ { "h322GwCallsAvailable", "h225.h322GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h322GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h323GwCallsAvailable,
+ { "h323GwCallsAvailable", "h225.h323GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h323GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h324GwCallsAvailable,
+ { "h324GwCallsAvailable", "h225.h324GwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_h324GwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_t120OnlyGwCallsAvailable,
+ { "t120OnlyGwCallsAvailable", "h225.t120OnlyGwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_t120OnlyGwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_t38FaxAnnexbOnlyGwCallsAvailable,
+ { "t38FaxAnnexbOnlyGwCallsAvailable", "h225.t38FaxAnnexbOnlyGwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_t38FaxAnnexbOnlyGwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_terminalCallsAvailable,
+ { "terminalCallsAvailable", "h225.terminalCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_terminalCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_mcuCallsAvailable,
+ { "mcuCallsAvailable", "h225.mcuCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_mcuCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_sipGwCallsAvailable,
+ { "sipGwCallsAvailable", "h225.sipGwCallsAvailable",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_CallsAvailable", HFILL }},
+ { &hf_h225_sipGwCallsAvailable_item,
+ { "CallsAvailable", "h225.CallsAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_calls,
+ { "calls", "h225.calls",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4294967295", HFILL }},
+ { &hf_h225_group_IA5String,
+ { "group", "h225.group",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_128", HFILL }},
+ { &hf_h225_carrier,
+ { "carrier", "h225.carrier_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CarrierInfo", HFILL }},
+ { &hf_h225_sourceCircuitID,
+ { "sourceCircuitID", "h225.sourceCircuitID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CircuitIdentifier", HFILL }},
+ { &hf_h225_destinationCircuitID,
+ { "destinationCircuitID", "h225.destinationCircuitID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CircuitIdentifier", HFILL }},
+ { &hf_h225_cic,
+ { "cic", "h225.cic_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CicInfo", HFILL }},
+ { &hf_h225_group,
+ { "group", "h225.group_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "GroupID", HFILL }},
+ { &hf_h225_cic_2_4,
+ { "cic", "h225.cic",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "T_cic_2_4", HFILL }},
+ { &hf_h225_cic_2_4_item,
+ { "cic item", "h225.cic_item",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2_4", HFILL }},
+ { &hf_h225_pointCode,
+ { "pointCode", "h225.pointCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2_5", HFILL }},
+ { &hf_h225_member,
+ { "member", "h225.member",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_member_item,
+ { "member item", "h225.member_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_carrierIdentificationCode,
+ { "carrierIdentificationCode", "h225.carrierIdentificationCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_3_4", HFILL }},
+ { &hf_h225_carrierName,
+ { "carrierName", "h225.carrierName",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_1_128", HFILL }},
+ { &hf_h225_url,
+ { "url", "h225.url",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_0_512", HFILL }},
+ { &hf_h225_signal,
+ { "signal", "h225.signal",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "H248SignalsDescriptor", HFILL }},
+ { &hf_h225_callCreditServiceControl,
+ { "callCreditServiceControl", "h225.callCreditServiceControl_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_sessionId_0_255,
+ { "sessionId", "h225.sessionId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_h225_contents,
+ { "contents", "h225.contents",
+ FT_UINT32, BASE_DEC, VALS(h225_ServiceControlDescriptor_vals), 0,
+ "ServiceControlDescriptor", HFILL }},
+ { &hf_h225_reason,
+ { "reason", "h225.reason",
+ FT_UINT32, BASE_DEC, VALS(h225_ServiceControlSession_reason_vals), 0,
+ "ServiceControlSession_reason", HFILL }},
+ { &hf_h225_open,
+ { "open", "h225.open_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_refresh,
+ { "refresh", "h225.refresh_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_close,
+ { "close", "h225.close_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nonStandardUsageTypes,
+ { "nonStandardUsageTypes", "h225.nonStandardUsageTypes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_NonStandardParameter", HFILL }},
+ { &hf_h225_nonStandardUsageTypes_item,
+ { "NonStandardParameter", "h225.NonStandardParameter_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_startTime,
+ { "startTime", "h225.startTime_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_endTime_flg,
+ { "endTime", "h225.endTime_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_terminationCause_flg,
+ { "terminationCause", "h225.terminationCause_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_when,
+ { "when", "h225.when_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageSpecification_when", HFILL }},
+ { &hf_h225_start,
+ { "start", "h225.start_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_end,
+ { "end", "h225.end_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_inIrr,
+ { "inIrr", "h225.inIrr_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ras_callStartingPoint,
+ { "callStartingPoint", "h225.callStartingPoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageSpecificationcallStartingPoint", HFILL }},
+ { &hf_h225_alerting_flg,
+ { "alerting", "h225.alerting_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_connect_flg,
+ { "connect", "h225.connect_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_required,
+ { "required", "h225.required_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageInfoTypes", HFILL }},
+ { &hf_h225_nonStandardUsageFields,
+ { "nonStandardUsageFields", "h225.nonStandardUsageFields",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_NonStandardParameter", HFILL }},
+ { &hf_h225_nonStandardUsageFields_item,
+ { "NonStandardParameter", "h225.NonStandardParameter_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_alertingTime,
+ { "alertingTime", "h225.alertingTime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_h225_connectTime,
+ { "connectTime", "h225.connectTime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_h225_endTime,
+ { "endTime", "h225.endTime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_h225_releaseCompleteCauseIE,
+ { "releaseCompleteCauseIE", "h225.releaseCompleteCauseIE",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_2_32", HFILL }},
+ { &hf_h225_sender,
+ { "sender", "h225.sender",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_multicast,
+ { "multicast", "h225.multicast",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_bandwidth,
+ { "bandwidth", "h225.bandwidth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_rtcpAddresses,
+ { "rtcpAddresses", "h225.rtcpAddresses_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelInfo", HFILL }},
+ { &hf_h225_canDisplayAmountString,
+ { "canDisplayAmountString", "h225.canDisplayAmountString",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_canEnforceDurationLimit,
+ { "canEnforceDurationLimit", "h225.canEnforceDurationLimit",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_amountString,
+ { "amountString", "h225.amountString",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "BMPString_SIZE_1_512", HFILL }},
+ { &hf_h225_billingMode,
+ { "billingMode", "h225.billingMode",
+ FT_UINT32, BASE_DEC, VALS(h225_T_billingMode_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_credit,
+ { "credit", "h225.credit_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_debit,
+ { "debit", "h225.debit_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callDurationLimit,
+ { "callDurationLimit", "h225.callDurationLimit",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_4294967295", HFILL }},
+ { &hf_h225_enforceCallDurationLimit,
+ { "enforceCallDurationLimit", "h225.enforceCallDurationLimit",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_callStartingPoint,
+ { "callStartingPoint", "h225.callStartingPoint",
+ FT_UINT32, BASE_DEC, VALS(h225_CallCreditServiceControl_callStartingPoint_vals), 0,
+ "CallCreditServiceControl_callStartingPoint", HFILL }},
+ { &hf_h225_id,
+ { "id", "h225.id",
+ FT_UINT32, BASE_DEC, VALS(h225_GenericIdentifier_vals), 0,
+ "GenericIdentifier", HFILL }},
+ { &hf_h225_parameters,
+ { "parameters", "h225.parameters",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_512_OF_EnumeratedParameter", HFILL }},
+ { &hf_h225_parameters_item,
+ { "EnumeratedParameter", "h225.EnumeratedParameter_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_standard,
+ { "standard", "h225.standard",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_oid,
+ { "oid", "h225.oid",
+ FT_OID, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_genericIdentifier_nonStandard,
+ { "nonStandard", "h225.nonStandard",
+ FT_GUID, BASE_NONE, NULL, 0,
+ "GloballyUniqueID", HFILL }},
+ { &hf_h225_content,
+ { "content", "h225.content",
+ FT_UINT32, BASE_DEC, VALS(h225_Content_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_raw,
+ { "raw", "h225.raw",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_text,
+ { "text", "h225.text",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String", HFILL }},
+ { &hf_h225_unicode,
+ { "unicode", "h225.unicode",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "BMPString", HFILL }},
+ { &hf_h225_bool,
+ { "bool", "h225.bool",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_number8,
+ { "number8", "h225.number8",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_255", HFILL }},
+ { &hf_h225_number16,
+ { "number16", "h225.number16",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_number32,
+ { "number32", "h225.number32",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_4294967295", HFILL }},
+ { &hf_h225_transport,
+ { "transport", "h225.transport",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_compound,
+ { "compound", "h225.compound",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_512_OF_EnumeratedParameter", HFILL }},
+ { &hf_h225_compound_item,
+ { "EnumeratedParameter", "h225.EnumeratedParameter_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nested,
+ { "nested", "h225.nested",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_16_OF_GenericData", HFILL }},
+ { &hf_h225_nested_item,
+ { "GenericData", "h225.GenericData_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_replacementFeatureSet,
+ { "replacementFeatureSet", "h225.replacementFeatureSet",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_sendAddress,
+ { "sendAddress", "h225.sendAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_recvAddress,
+ { "recvAddress", "h225.recvAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_rtpAddress,
+ { "rtpAddress", "h225.rtpAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelInfo", HFILL }},
+ { &hf_h225_rtcpAddress,
+ { "rtcpAddress", "h225.rtcpAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelInfo", HFILL }},
+ { &hf_h225_cname,
+ { "cname", "h225.cname",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "PrintableString", HFILL }},
+ { &hf_h225_ssrc,
+ { "ssrc", "h225.ssrc",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_4294967295", HFILL }},
+ { &hf_h225_sessionId,
+ { "sessionId", "h225.sessionId",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_255", HFILL }},
+ { &hf_h225_associatedSessionIds,
+ { "associatedSessionIds", "h225.associatedSessionIds",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_associatedSessionIds_item,
+ { "associatedSessionIds item", "h225.associatedSessionIds_item",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_255", HFILL }},
+ { &hf_h225_multicast_flg,
+ { "multicast", "h225.multicast_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperBased,
+ { "gatekeeperBased", "h225.gatekeeperBased_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_endpointBased,
+ { "endpointBased", "h225.endpointBased_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperRequest,
+ { "gatekeeperRequest", "h225.gatekeeperRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperConfirm,
+ { "gatekeeperConfirm", "h225.gatekeeperConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperReject,
+ { "gatekeeperReject", "h225.gatekeeperReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_registrationRequest,
+ { "registrationRequest", "h225.registrationRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_registrationConfirm,
+ { "registrationConfirm", "h225.registrationConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_registrationReject,
+ { "registrationReject", "h225.registrationReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unregistrationRequest,
+ { "unregistrationRequest", "h225.unregistrationRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unregistrationConfirm,
+ { "unregistrationConfirm", "h225.unregistrationConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unregistrationReject,
+ { "unregistrationReject", "h225.unregistrationReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_admissionRequest,
+ { "admissionRequest", "h225.admissionRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_admissionConfirm,
+ { "admissionConfirm", "h225.admissionConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_admissionReject,
+ { "admissionReject", "h225.admissionReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bandwidthRequest,
+ { "bandwidthRequest", "h225.bandwidthRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bandwidthConfirm,
+ { "bandwidthConfirm", "h225.bandwidthConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bandwidthReject,
+ { "bandwidthReject", "h225.bandwidthReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_disengageRequest,
+ { "disengageRequest", "h225.disengageRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_disengageConfirm,
+ { "disengageConfirm", "h225.disengageConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_disengageReject,
+ { "disengageReject", "h225.disengageReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_locationRequest,
+ { "locationRequest", "h225.locationRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_locationConfirm,
+ { "locationConfirm", "h225.locationConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_locationReject,
+ { "locationReject", "h225.locationReject_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_infoRequest,
+ { "infoRequest", "h225.infoRequest_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_infoRequestResponse,
+ { "infoRequestResponse", "h225.infoRequestResponse_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nonStandardMessage,
+ { "nonStandardMessage", "h225.nonStandardMessage_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unknownMessageResponse,
+ { "unknownMessageResponse", "h225.unknownMessageResponse_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_requestInProgress,
+ { "requestInProgress", "h225.requestInProgress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_resourcesAvailableIndicate,
+ { "resourcesAvailableIndicate", "h225.resourcesAvailableIndicate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_resourcesAvailableConfirm,
+ { "resourcesAvailableConfirm", "h225.resourcesAvailableConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_infoRequestAck,
+ { "infoRequestAck", "h225.infoRequestAck_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_infoRequestNak,
+ { "infoRequestNak", "h225.infoRequestNak_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_serviceControlIndication,
+ { "serviceControlIndication", "h225.serviceControlIndication_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_serviceControlResponse,
+ { "serviceControlResponse", "h225.serviceControlResponse_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_admissionConfirmSequence,
+ { "admissionConfirmSequence", "h225.admissionConfirmSequence",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AdmissionConfirm", HFILL }},
+ { &hf_h225_admissionConfirmSequence_item,
+ { "AdmissionConfirm", "h225.AdmissionConfirm_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_requestSeqNum,
+ { "requestSeqNum", "h225.requestSeqNum",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperRequest_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_endpointAlias,
+ { "endpointAlias", "h225.endpointAlias",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_endpointAlias_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_alternateEndpoints,
+ { "alternateEndpoints", "h225.alternateEndpoints",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_Endpoint", HFILL }},
+ { &hf_h225_alternateEndpoints_item,
+ { "Endpoint", "h225.Endpoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_authenticationCapability,
+ { "authenticationCapability", "h225.authenticationCapability",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AuthenticationMechanism", HFILL }},
+ { &hf_h225_authenticationCapability_item,
+ { "AuthenticationMechanism", "h225.AuthenticationMechanism",
+ FT_UINT32, BASE_DEC, VALS(h235_AuthenticationMechanism_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_algorithmOIDs,
+ { "algorithmOIDs", "h225.algorithmOIDs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_algorithmOIDs_item,
+ { "algorithmOIDs item", "h225.algorithmOIDs_item",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_h225_integrity,
+ { "integrity", "h225.integrity",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_IntegrityMechanism", HFILL }},
+ { &hf_h225_integrity_item,
+ { "IntegrityMechanism", "h225.IntegrityMechanism",
+ FT_UINT32, BASE_DEC, VALS(h225_IntegrityMechanism_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_integrityCheckValue,
+ { "integrityCheckValue", "h225.integrityCheckValue_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ICV", HFILL }},
+ { &hf_h225_supportsAltGK,
+ { "supportsAltGK", "h225.supportsAltGK_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_supportsAssignedGK,
+ { "supportsAssignedGK", "h225.supportsAssignedGK",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_assignedGatekeeper,
+ { "assignedGatekeeper", "h225.assignedGatekeeper_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "AlternateGK", HFILL }},
+ { &hf_h225_gatekeeperConfirm_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_authenticationMode,
+ { "authenticationMode", "h225.authenticationMode",
+ FT_UINT32, BASE_DEC, VALS(h235_AuthenticationMechanism_vals), 0,
+ "AuthenticationMechanism", HFILL }},
+ { &hf_h225_rehomingModel,
+ { "rehomingModel", "h225.rehomingModel",
+ FT_UINT32, BASE_DEC, VALS(h225_RehomingModel_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(GatekeeperRejectReason_vals), 0,
+ "GatekeeperRejectReason", HFILL }},
+ { &hf_h225_altGKInfo,
+ { "altGKInfo", "h225.altGKInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_resourceUnavailable,
+ { "resourceUnavailable", "h225.resourceUnavailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_terminalExcluded,
+ { "terminalExcluded", "h225.terminalExcluded_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityDenial,
+ { "securityDenial", "h225.securityDenial_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gkRej_securityError,
+ { "securityError", "h225.securityError",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityErrors_vals), 0,
+ "SecurityErrors", HFILL }},
+ { &hf_h225_discoveryComplete,
+ { "discoveryComplete", "h225.discoveryComplete",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_terminalType,
+ { "terminalType", "h225.terminalType_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EndpointType", HFILL }},
+ { &hf_h225_terminalAlias,
+ { "terminalAlias", "h225.terminalAlias",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_terminalAlias_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_endpointVendor,
+ { "endpointVendor", "h225.endpointVendor_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "VendorIdentifier", HFILL }},
+ { &hf_h225_timeToLive,
+ { "timeToLive", "h225.timeToLive",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_keepAlive,
+ { "keepAlive", "h225.keepAlive",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_willSupplyUUIEs,
+ { "willSupplyUUIEs", "h225.willSupplyUUIEs",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_additiveRegistration,
+ { "additiveRegistration", "h225.additiveRegistration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_terminalAliasPattern,
+ { "terminalAliasPattern", "h225.terminalAliasPattern",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AddressPattern", HFILL }},
+ { &hf_h225_terminalAliasPattern_item,
+ { "AddressPattern", "h225.AddressPattern",
+ FT_UINT32, BASE_DEC, VALS(h225_AddressPattern_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_usageReportingCapability,
+ { "usageReportingCapability", "h225.usageReportingCapability_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageInfoTypes", HFILL }},
+ { &hf_h225_supportedH248Packages,
+ { "supportedH248Packages", "h225.supportedH248Packages",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_H248PackagesDescriptor", HFILL }},
+ { &hf_h225_supportedH248Packages_item,
+ { "H248PackagesDescriptor", "h225.H248PackagesDescriptor",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callCreditCapability,
+ { "callCreditCapability", "h225.callCreditCapability_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_capacityReportingCapability,
+ { "capacityReportingCapability", "h225.capacityReportingCapability_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_restart,
+ { "restart", "h225.restart_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_supportsACFSequences,
+ { "supportsACFSequences", "h225.supportsACFSequences_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_transportQOS,
+ { "transportQOS", "h225.transportQOS",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportQOS_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_willRespondToIRR,
+ { "willRespondToIRR", "h225.willRespondToIRR",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_preGrantedARQ,
+ { "preGrantedARQ", "h225.preGrantedARQ_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_makeCall,
+ { "makeCall", "h225.makeCall",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_useGKCallSignalAddressToMakeCall,
+ { "useGKCallSignalAddressToMakeCall", "h225.useGKCallSignalAddressToMakeCall",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_answerCall,
+ { "answerCall", "h225.answerCall",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_useGKCallSignalAddressToAnswer,
+ { "useGKCallSignalAddressToAnswer", "h225.useGKCallSignalAddressToAnswer",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_irrFrequencyInCall,
+ { "irrFrequencyInCall", "h225.irrFrequencyInCall",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_65535", HFILL }},
+ { &hf_h225_totalBandwidthRestriction,
+ { "totalBandwidthRestriction", "h225.totalBandwidthRestriction",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "BandWidth", HFILL }},
+ { &hf_h225_useSpecifiedTransport,
+ { "useSpecifiedTransport", "h225.useSpecifiedTransport",
+ FT_UINT32, BASE_DEC, VALS(h225_UseSpecifiedTransport_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_supportsAdditiveRegistration,
+ { "supportsAdditiveRegistration", "h225.supportsAdditiveRegistration_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_usageSpec,
+ { "usageSpec", "h225.usageSpec",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_RasUsageSpecification", HFILL }},
+ { &hf_h225_usageSpec_item,
+ { "RasUsageSpecification", "h225.RasUsageSpecification_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_featureServerAlias,
+ { "featureServerAlias", "h225.featureServerAlias",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ "AliasAddress", HFILL }},
+ { &hf_h225_capacityReportingSpec,
+ { "capacityReportingSpec", "h225.capacityReportingSpec_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "CapacityReportingSpecification", HFILL }},
+ { &hf_h225_registrationRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(RegistrationRejectReason_vals), 0,
+ "RegistrationRejectReason", HFILL }},
+ { &hf_h225_discoveryRequired,
+ { "discoveryRequired", "h225.discoveryRequired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidCallSignalAddress,
+ { "invalidCallSignalAddress", "h225.invalidCallSignalAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidRASAddress,
+ { "invalidRASAddress", "h225.invalidRASAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_duplicateAlias,
+ { "duplicateAlias", "h225.duplicateAlias",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_duplicateAlias_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidTerminalType,
+ { "invalidTerminalType", "h225.invalidTerminalType_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_transportNotSupported,
+ { "transportNotSupported", "h225.transportNotSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_transportQOSNotSupported,
+ { "transportQOSNotSupported", "h225.transportQOSNotSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidAlias,
+ { "invalidAlias", "h225.invalidAlias_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_fullRegistrationRequired,
+ { "fullRegistrationRequired", "h225.fullRegistrationRequired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_additiveRegistrationNotSupported,
+ { "additiveRegistrationNotSupported", "h225.additiveRegistrationNotSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidTerminalAliases,
+ { "invalidTerminalAliases", "h225.invalidTerminalAliases_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_reg_securityError,
+ { "securityError", "h225.securityError",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityErrors_vals), 0,
+ "SecurityErrors", HFILL }},
+ { &hf_h225_registerWithAssignedGK,
+ { "registerWithAssignedGK", "h225.registerWithAssignedGK_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unregRequestReason,
+ { "reason", "h225.reason",
+ FT_UINT32, BASE_DEC, VALS(UnregRequestReason_vals), 0,
+ "UnregRequestReason", HFILL }},
+ { &hf_h225_endpointAliasPattern,
+ { "endpointAliasPattern", "h225.endpointAliasPattern",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AddressPattern", HFILL }},
+ { &hf_h225_endpointAliasPattern_item,
+ { "AddressPattern", "h225.AddressPattern",
+ FT_UINT32, BASE_DEC, VALS(h225_AddressPattern_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_reregistrationRequired,
+ { "reregistrationRequired", "h225.reregistrationRequired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_ttlExpired,
+ { "ttlExpired", "h225.ttlExpired_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_maintenance,
+ { "maintenance", "h225.maintenance_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_securityError,
+ { "securityError", "h225.securityError",
+ FT_UINT32, BASE_DEC, VALS(h225_SecurityErrors2_vals), 0,
+ "SecurityErrors2", HFILL }},
+ { &hf_h225_unregRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(UnregRejectReason_vals), 0,
+ "UnregRejectReason", HFILL }},
+ { &hf_h225_notCurrentlyRegistered,
+ { "notCurrentlyRegistered", "h225.notCurrentlyRegistered_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callInProgress,
+ { "callInProgress", "h225.callInProgress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_permissionDenied,
+ { "permissionDenied", "h225.permissionDenied_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callModel,
+ { "callModel", "h225.callModel",
+ FT_UINT32, BASE_DEC, VALS(h225_CallModel_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_DestinationInfo_item,
+ { "DestinationInfo item", "h225.DestinationInfo_item",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_destinationInfo_01,
+ { "destinationInfo", "h225.destinationInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_srcInfo,
+ { "srcInfo", "h225.srcInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_srcInfo_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_srcCallSignalAddress,
+ { "srcCallSignalAddress", "h225.srcCallSignalAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_bandWidth,
+ { "bandWidth", "h225.bandWidth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_callReferenceValue,
+ { "callReferenceValue", "h225.callReferenceValue",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_canMapAlias,
+ { "canMapAlias", "h225.canMapAlias",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_srcAlternatives,
+ { "srcAlternatives", "h225.srcAlternatives",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_Endpoint", HFILL }},
+ { &hf_h225_srcAlternatives_item,
+ { "Endpoint", "h225.Endpoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_destAlternatives,
+ { "destAlternatives", "h225.destAlternatives",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_Endpoint", HFILL }},
+ { &hf_h225_destAlternatives_item,
+ { "Endpoint", "h225.Endpoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatewayDataRate,
+ { "gatewayDataRate", "h225.gatewayDataRate_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "DataRate", HFILL }},
+ { &hf_h225_desiredTunnelledProtocol,
+ { "desiredTunnelledProtocol", "h225.desiredTunnelledProtocol_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TunnelledProtocol", HFILL }},
+ { &hf_h225_canMapSrcAlias,
+ { "canMapSrcAlias", "h225.canMapSrcAlias",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_pointToPoint,
+ { "pointToPoint", "h225.pointToPoint_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_oneToN,
+ { "oneToN", "h225.oneToN_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nToOne,
+ { "nToOne", "h225.nToOne_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nToN,
+ { "nToN", "h225.nToN_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_direct,
+ { "direct", "h225.direct_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperRouted,
+ { "gatekeeperRouted", "h225.gatekeeperRouted_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_endpointControlled,
+ { "endpointControlled", "h225.endpointControlled_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_gatekeeperControlled,
+ { "gatekeeperControlled", "h225.gatekeeperControlled_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_noControl,
+ { "noControl", "h225.noControl_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_qOSCapabilities,
+ { "qOSCapabilities", "h225.qOSCapabilities",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_SIZE_1_256_OF_QOSCapability", HFILL }},
+ { &hf_h225_qOSCapabilities_item,
+ { "QOSCapability", "h225.QOSCapability_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_irrFrequency,
+ { "irrFrequency", "h225.irrFrequency",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_65535", HFILL }},
+ { &hf_h225_destinationType,
+ { "destinationType", "h225.destinationType_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "EndpointType", HFILL }},
+ { &hf_h225_ac_remoteExtensionAddress_item,
+ { "AliasAddress", "h225.ac_remoteExtensionAddress_item",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_uuiesRequested,
+ { "uuiesRequested", "h225.uuiesRequested_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_supportedProtocols,
+ { "supportedProtocols", "h225.supportedProtocols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_SupportedProtocols", HFILL }},
+ { &hf_h225_supportedProtocols_item,
+ { "SupportedProtocols", "h225.SupportedProtocols",
+ FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_modifiedSrcInfo,
+ { "modifiedSrcInfo", "h225.modifiedSrcInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_modifiedSrcInfo_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_setup_bool,
+ { "setup", "h225.setup",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_callProceeding_flg,
+ { "callProceeding", "h225.callProceeding",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_connect_bool,
+ { "connect", "h225.connect",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_alerting_bool,
+ { "alerting", "h225.alerting",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_information_bool,
+ { "information", "h225.information",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_releaseComplete_bool,
+ { "releaseComplete", "h225.releaseComplete",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_facility_bool,
+ { "facility", "h225.facility",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_progress_bool,
+ { "progress", "h225.progress",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_empty,
+ { "empty", "h225.empty",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_status_bool,
+ { "status", "h225.status",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_statusInquiry_bool,
+ { "statusInquiry", "h225.statusInquiry",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_setupAcknowledge_bool,
+ { "setupAcknowledge", "h225.setupAcknowledge",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_notify_bool,
+ { "notify", "h225.notify",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_rejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(AdmissionRejectReason_vals), 0,
+ "AdmissionRejectReason", HFILL }},
+ { &hf_h225_invalidPermission,
+ { "invalidPermission", "h225.invalidPermission_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_requestDenied,
+ { "requestDenied", "h225.requestDenied_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidEndpointIdentifier,
+ { "invalidEndpointIdentifier", "h225.invalidEndpointIdentifier_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_qosControlNotSupported,
+ { "qosControlNotSupported", "h225.qosControlNotSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_incompleteAddress,
+ { "incompleteAddress", "h225.incompleteAddress_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_aliasesInconsistent,
+ { "aliasesInconsistent", "h225.aliasesInconsistent_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_routeCallToSCN,
+ { "routeCallToSCN", "h225.routeCallToSCN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_PartyNumber", HFILL }},
+ { &hf_h225_routeCallToSCN_item,
+ { "PartyNumber", "h225.PartyNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_exceedsCallCapacity,
+ { "exceedsCallCapacity", "h225.exceedsCallCapacity_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_collectDestination,
+ { "collectDestination", "h225.collectDestination_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_collectPIN,
+ { "collectPIN", "h225.collectPIN_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_noRouteToDestination,
+ { "noRouteToDestination", "h225.noRouteToDestination_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_unallocatedNumber,
+ { "unallocatedNumber", "h225.unallocatedNumber_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_answeredCall,
+ { "answeredCall", "h225.answeredCall",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_usageInformation,
+ { "usageInformation", "h225.usageInformation_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageInformation", HFILL }},
+ { &hf_h225_bandwidthDetails,
+ { "bandwidthDetails", "h225.bandwidthDetails",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_BandwidthDetails", HFILL }},
+ { &hf_h225_bandwidthDetails_item,
+ { "BandwidthDetails", "h225.BandwidthDetails_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_bandRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(BandRejectReason_vals), 0,
+ "BandRejectReason", HFILL }},
+ { &hf_h225_allowedBandWidth,
+ { "allowedBandWidth", "h225.allowedBandWidth",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "BandWidth", HFILL }},
+ { &hf_h225_notBound,
+ { "notBound", "h225.notBound_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_invalidConferenceID,
+ { "invalidConferenceID", "h225.invalidConferenceID_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_insufficientResources,
+ { "insufficientResources", "h225.insufficientResources_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_replyAddress,
+ { "replyAddress", "h225.replyAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_sourceInfo,
+ { "sourceInfo", "h225.sourceInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_sourceInfo_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_hopCount,
+ { "hopCount", "h225.hopCount",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_255", HFILL }},
+ { &hf_h225_sourceEndpointInfo,
+ { "sourceEndpointInfo", "h225.sourceEndpointInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_AliasAddress", HFILL }},
+ { &hf_h225_sourceEndpointInfo_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_locationConfirm_callSignalAddress,
+ { "callSignalAddress", "h225.callSignalAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_locationConfirm_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_remoteExtensionAddress_item,
+ { "AliasAddress", "h225.AliasAddress",
+ FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_locationRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(LocationRejectReason_vals), 0,
+ "LocationRejectReason", HFILL }},
+ { &hf_h225_notRegistered,
+ { "notRegistered", "h225.notRegistered_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_routeCalltoSCN,
+ { "routeCalltoSCN", "h225.routeCalltoSCN",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_PartyNumber", HFILL }},
+ { &hf_h225_routeCalltoSCN_item,
+ { "PartyNumber", "h225.PartyNumber",
+ FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_disengageReason,
+ { "disengageReason", "h225.disengageReason",
+ FT_UINT32, BASE_DEC, VALS(DisengageReason_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_terminationCause,
+ { "terminationCause", "h225.terminationCause",
+ FT_UINT32, BASE_DEC, VALS(h225_CallTerminationCause_vals), 0,
+ "CallTerminationCause", HFILL }},
+ { &hf_h225_forcedDrop,
+ { "forcedDrop", "h225.forcedDrop_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_normalDrop,
+ { "normalDrop", "h225.normalDrop_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_disengageRejectReason,
+ { "rejectReason", "h225.rejectReason",
+ FT_UINT32, BASE_DEC, VALS(DisengageRejectReason_vals), 0,
+ "DisengageRejectReason", HFILL }},
+ { &hf_h225_requestToDropOther,
+ { "requestToDropOther", "h225.requestToDropOther_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_usageInfoRequested,
+ { "usageInfoRequested", "h225.usageInfoRequested_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "RasUsageInfoTypes", HFILL }},
+ { &hf_h225_segmentedResponseSupported,
+ { "segmentedResponseSupported", "h225.segmentedResponseSupported_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nextSegmentRequested,
+ { "nextSegmentRequested", "h225.nextSegmentRequested",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_capacityInfoRequested,
+ { "capacityInfoRequested", "h225.capacityInfoRequested_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_infoRequestResponse_rasAddress,
+ { "rasAddress", "h225.rasAddress",
+ FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
+ "TransportAddress", HFILL }},
+ { &hf_h225_perCallInfo,
+ { "perCallInfo", "h225.perCallInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_perCallInfo_item,
+ { "perCallInfo item", "h225.perCallInfo_item_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_originator,
+ { "originator", "h225.originator",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_audio,
+ { "audio", "h225.audio",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_RTPSession", HFILL }},
+ { &hf_h225_audio_item,
+ { "RTPSession", "h225.RTPSession_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_video,
+ { "video", "h225.video",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_RTPSession", HFILL }},
+ { &hf_h225_video_item,
+ { "RTPSession", "h225.RTPSession_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_data,
+ { "data", "h225.data",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_TransportChannelInfo", HFILL }},
+ { &hf_h225_data_item,
+ { "TransportChannelInfo", "h225.TransportChannelInfo_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h245,
+ { "h245", "h225.h245_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelInfo", HFILL }},
+ { &hf_h225_callSignalling,
+ { "callSignalling", "h225.callSignalling_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "TransportChannelInfo", HFILL }},
+ { &hf_h225_substituteConfIDs,
+ { "substituteConfIDs", "h225.substituteConfIDs",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ConferenceIdentifier", HFILL }},
+ { &hf_h225_substituteConfIDs_item,
+ { "ConferenceIdentifier", "h225.ConferenceIdentifier",
+ FT_GUID, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_pdu,
+ { "pdu", "h225.pdu",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_pdu_item,
+ { "pdu item", "h225.pdu_item_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_h323pdu,
+ { "h323pdu", "h225.h323pdu_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "H323_UU_PDU", HFILL }},
+ { &hf_h225_sent,
+ { "sent", "h225.sent",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_needResponse,
+ { "needResponse", "h225.needResponse",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_irrStatus,
+ { "irrStatus", "h225.irrStatus",
+ FT_UINT32, BASE_DEC, VALS(h225_InfoRequestResponseStatus_vals), 0,
+ "InfoRequestResponseStatus", HFILL }},
+ { &hf_h225_unsolicited,
+ { "unsolicited", "h225.unsolicited",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_complete,
+ { "complete", "h225.complete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_incomplete,
+ { "incomplete", "h225.incomplete_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_segment,
+ { "segment", "h225.segment",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_0_65535", HFILL }},
+ { &hf_h225_invalidCall,
+ { "invalidCall", "h225.invalidCall_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_nakReason,
+ { "nakReason", "h225.nakReason",
+ FT_UINT32, BASE_DEC, VALS(InfoRequestNakReason_vals), 0,
+ "InfoRequestNakReason", HFILL }},
+ { &hf_h225_messageNotUnderstood,
+ { "messageNotUnderstood", "h225.messageNotUnderstood",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_h225_delay,
+ { "delay", "h225.delay",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "INTEGER_1_65535", HFILL }},
+ { &hf_h225_protocols,
+ { "protocols", "h225.protocols",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_SupportedProtocols", HFILL }},
+ { &hf_h225_protocols_item,
+ { "SupportedProtocols", "h225.SupportedProtocols",
+ FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_almostOutOfResources,
+ { "almostOutOfResources", "h225.almostOutOfResources",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_h225_callSpecific,
+ { "callSpecific", "h225.callSpecific_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_result,
+ { "result", "h225.result",
+ FT_UINT32, BASE_DEC, VALS(h225_T_result_vals), 0,
+ NULL, HFILL }},
+ { &hf_h225_started,
+ { "started", "h225.started_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_failed,
+ { "failed", "h225.failed_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_stopped,
+ { "stopped", "h225.stopped_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_h225_notAvailable,
+ { "notAvailable", "h225.notAvailable_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_h225,
+ &ett_h225_H323_UserInformation,
+ &ett_h225_T_user_data,
+ &ett_h225_H323_UU_PDU,
+ &ett_h225_T_h323_message_body,
+ &ett_h225_T_h4501SupplementaryService,
+ &ett_h225_H245Control,
+ &ett_h225_SEQUENCE_OF_NonStandardParameter,
+ &ett_h225_T_tunnelledSignallingMessage,
+ &ett_h225_T_messageContent,
+ &ett_h225_SEQUENCE_OF_GenericData,
+ &ett_h225_StimulusControl,
+ &ett_h225_Alerting_UUIE,
+ &ett_h225_SEQUENCE_OF_ClearToken,
+ &ett_h225_SEQUENCE_OF_CryptoH323Token,
+ &ett_h225_SEQUENCE_OF_AliasAddress,
+ &ett_h225_SEQUENCE_OF_ServiceControlSession,
+ &ett_h225_SEQUENCE_OF_DisplayName,
+ &ett_h225_CallProceeding_UUIE,
+ &ett_h225_Connect_UUIE,
+ &ett_h225_Information_UUIE,
+ &ett_h225_ReleaseComplete_UUIE,
+ &ett_h225_ReleaseCompleteReason,
+ &ett_h225_Setup_UUIE,
+ &ett_h225_SEQUENCE_OF_CallReferenceValue,
+ &ett_h225_T_conferenceGoal,
+ &ett_h225_SEQUENCE_OF_H245Security,
+ &ett_h225_FastStart,
+ &ett_h225_T_connectionParameters,
+ &ett_h225_Language,
+ &ett_h225_SEQUENCE_OF_SupportedProtocols,
+ &ett_h225_SEQUENCE_OF_FeatureDescriptor,
+ &ett_h225_ParallelH245Control,
+ &ett_h225_SEQUENCE_OF_ExtendedAliasAddress,
+ &ett_h225_ScnConnectionType,
+ &ett_h225_ScnConnectionAggregation,
+ &ett_h225_PresentationIndicator,
+ &ett_h225_Facility_UUIE,
+ &ett_h225_SEQUENCE_OF_ConferenceList,
+ &ett_h225_ConferenceList,
+ &ett_h225_FacilityReason,
+ &ett_h225_Progress_UUIE,
+ &ett_h225_TransportAddress,
+ &ett_h225_H245TransportAddress,
+ &ett_h225_T_h245IpAddress,
+ &ett_h225_T_h245IpSourceRoute,
+ &ett_h225_T_h245Route,
+ &ett_h225_T_h245Routing,
+ &ett_h225_T_h245IpxAddress,
+ &ett_h225_T_h245Ip6Address,
+ &ett_h225_T_ipAddress,
+ &ett_h225_T_ipSourceRoute,
+ &ett_h225_T_route,
+ &ett_h225_T_routing,
+ &ett_h225_T_ipxAddress,
+ &ett_h225_T_ip6Address,
+ &ett_h225_Status_UUIE,
+ &ett_h225_StatusInquiry_UUIE,
+ &ett_h225_SetupAcknowledge_UUIE,
+ &ett_h225_Notify_UUIE,
+ &ett_h225_EndpointType,
+ &ett_h225_SEQUENCE_OF_TunnelledProtocol,
+ &ett_h225_GatewayInfo,
+ &ett_h225_SupportedProtocols,
+ &ett_h225_H310Caps,
+ &ett_h225_SEQUENCE_OF_DataRate,
+ &ett_h225_SEQUENCE_OF_SupportedPrefix,
+ &ett_h225_H320Caps,
+ &ett_h225_H321Caps,
+ &ett_h225_H322Caps,
+ &ett_h225_H323Caps,
+ &ett_h225_H324Caps,
+ &ett_h225_VoiceCaps,
+ &ett_h225_T120OnlyCaps,
+ &ett_h225_NonStandardProtocol,
+ &ett_h225_T38FaxAnnexbOnlyCaps,
+ &ett_h225_SIPCaps,
+ &ett_h225_McuInfo,
+ &ett_h225_TerminalInfo,
+ &ett_h225_GatekeeperInfo,
+ &ett_h225_VendorIdentifier,
+ &ett_h225_H221NonStandard,
+ &ett_h225_TunnelledProtocol,
+ &ett_h225_TunnelledProtocol_id,
+ &ett_h225_TunnelledProtocolAlternateIdentifier,
+ &ett_h225_NonStandardParameter,
+ &ett_h225_NonStandardIdentifier,
+ &ett_h225_AliasAddress,
+ &ett_h225_AddressPattern,
+ &ett_h225_T_range,
+ &ett_h225_PartyNumber,
+ &ett_h225_PublicPartyNumber,
+ &ett_h225_PrivatePartyNumber,
+ &ett_h225_DisplayName,
+ &ett_h225_PublicTypeOfNumber,
+ &ett_h225_PrivateTypeOfNumber,
+ &ett_h225_MobileUIM,
+ &ett_h225_ANSI_41_UIM,
+ &ett_h225_T_system_id,
+ &ett_h225_GSM_UIM,
+ &ett_h225_IsupNumber,
+ &ett_h225_IsupPublicPartyNumber,
+ &ett_h225_IsupPrivatePartyNumber,
+ &ett_h225_NatureOfAddress,
+ &ett_h225_ExtendedAliasAddress,
+ &ett_h225_Endpoint,
+ &ett_h225_SEQUENCE_OF_TransportAddress,
+ &ett_h225_AlternateTransportAddresses,
+ &ett_h225_UseSpecifiedTransport,
+ &ett_h225_AlternateGK,
+ &ett_h225_AltGKInfo,
+ &ett_h225_SEQUENCE_OF_AlternateGK,
+ &ett_h225_SecurityServiceMode,
+ &ett_h225_SecurityCapabilities,
+ &ett_h225_SecurityErrors,
+ &ett_h225_SecurityErrors2,
+ &ett_h225_H245Security,
+ &ett_h225_QseriesOptions,
+ &ett_h225_Q954Details,
+ &ett_h225_CallIdentifier,
+ &ett_h225_EncryptIntAlg,
+ &ett_h225_NonIsoIntegrityMechanism,
+ &ett_h225_IntegrityMechanism,
+ &ett_h225_ICV,
+ &ett_h225_CryptoH323Token,
+ &ett_h225_T_cryptoEPPwdHash,
+ &ett_h225_T_cryptoGKPwdHash,
+ &ett_h225_DataRate,
+ &ett_h225_CallLinkage,
+ &ett_h225_SupportedPrefix,
+ &ett_h225_CapacityReportingCapability,
+ &ett_h225_CapacityReportingSpecification,
+ &ett_h225_CapacityReportingSpecification_when,
+ &ett_h225_CallCapacity,
+ &ett_h225_CallCapacityInfo,
+ &ett_h225_SEQUENCE_OF_CallsAvailable,
+ &ett_h225_CallsAvailable,
+ &ett_h225_CircuitInfo,
+ &ett_h225_CircuitIdentifier,
+ &ett_h225_CicInfo,
+ &ett_h225_T_cic_2_4,
+ &ett_h225_GroupID,
+ &ett_h225_T_member,
+ &ett_h225_CarrierInfo,
+ &ett_h225_ServiceControlDescriptor,
+ &ett_h225_ServiceControlSession,
+ &ett_h225_ServiceControlSession_reason,
+ &ett_h225_RasUsageInfoTypes,
+ &ett_h225_RasUsageSpecification,
+ &ett_h225_RasUsageSpecification_when,
+ &ett_h225_RasUsageSpecificationcallStartingPoint,
+ &ett_h225_RasUsageInformation,
+ &ett_h225_CallTerminationCause,
+ &ett_h225_BandwidthDetails,
+ &ett_h225_CallCreditCapability,
+ &ett_h225_CallCreditServiceControl,
+ &ett_h225_T_billingMode,
+ &ett_h225_CallCreditServiceControl_callStartingPoint,
+ &ett_h225_GenericData,
+ &ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter,
+ &ett_h225_GenericIdentifier,
+ &ett_h225_EnumeratedParameter,
+ &ett_h225_Content,
+ &ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData,
+ &ett_h225_FeatureSet,
+ &ett_h225_TransportChannelInfo,
+ &ett_h225_RTPSession,
+ &ett_h225_T_associatedSessionIds,
+ &ett_h225_RehomingModel,
+ &ett_h225_RasMessage,
+ &ett_h225_SEQUENCE_OF_AdmissionConfirm,
+ &ett_h225_GatekeeperRequest,
+ &ett_h225_SEQUENCE_OF_Endpoint,
+ &ett_h225_SEQUENCE_OF_AuthenticationMechanism,
+ &ett_h225_T_algorithmOIDs,
+ &ett_h225_SEQUENCE_OF_IntegrityMechanism,
+ &ett_h225_GatekeeperConfirm,
+ &ett_h225_GatekeeperReject,
+ &ett_h225_GatekeeperRejectReason,
+ &ett_h225_RegistrationRequest,
+ &ett_h225_SEQUENCE_OF_AddressPattern,
+ &ett_h225_SEQUENCE_OF_H248PackagesDescriptor,
+ &ett_h225_RegistrationConfirm,
+ &ett_h225_T_preGrantedARQ,
+ &ett_h225_SEQUENCE_OF_RasUsageSpecification,
+ &ett_h225_RegistrationReject,
+ &ett_h225_RegistrationRejectReason,
+ &ett_h225_T_invalidTerminalAliases,
+ &ett_h225_UnregistrationRequest,
+ &ett_h225_UnregRequestReason,
+ &ett_h225_UnregistrationConfirm,
+ &ett_h225_UnregistrationReject,
+ &ett_h225_UnregRejectReason,
+ &ett_h225_AdmissionRequest,
+ &ett_h225_DestinationInfo,
+ &ett_h225_CallType,
+ &ett_h225_CallModel,
+ &ett_h225_TransportQOS,
+ &ett_h225_SEQUENCE_SIZE_1_256_OF_QOSCapability,
+ &ett_h225_AdmissionConfirm,
+ &ett_h225_UUIEsRequested,
+ &ett_h225_AdmissionReject,
+ &ett_h225_AdmissionRejectReason,
+ &ett_h225_SEQUENCE_OF_PartyNumber,
+ &ett_h225_BandwidthRequest,
+ &ett_h225_SEQUENCE_OF_BandwidthDetails,
+ &ett_h225_BandwidthConfirm,
+ &ett_h225_BandwidthReject,
+ &ett_h225_BandRejectReason,
+ &ett_h225_LocationRequest,
+ &ett_h225_LocationConfirm,
+ &ett_h225_LocationReject,
+ &ett_h225_LocationRejectReason,
+ &ett_h225_DisengageRequest,
+ &ett_h225_DisengageReason,
+ &ett_h225_DisengageConfirm,
+ &ett_h225_DisengageReject,
+ &ett_h225_DisengageRejectReason,
+ &ett_h225_InfoRequest,
+ &ett_h225_InfoRequestResponse,
+ &ett_h225_T_perCallInfo,
+ &ett_h225_T_perCallInfo_item,
+ &ett_h225_SEQUENCE_OF_RTPSession,
+ &ett_h225_SEQUENCE_OF_TransportChannelInfo,
+ &ett_h225_SEQUENCE_OF_ConferenceIdentifier,
+ &ett_h225_T_pdu,
+ &ett_h225_T_pdu_item,
+ &ett_h225_InfoRequestResponseStatus,
+ &ett_h225_InfoRequestAck,
+ &ett_h225_InfoRequestNak,
+ &ett_h225_InfoRequestNakReason,
+ &ett_h225_NonStandardMessage,
+ &ett_h225_UnknownMessageResponse,
+ &ett_h225_RequestInProgress,
+ &ett_h225_ResourcesAvailableIndicate,
+ &ett_h225_ResourcesAvailableConfirm,
+ &ett_h225_ServiceControlIndication,
+ &ett_h225_T_callSpecific,
+ &ett_h225_ServiceControlResponse,
+ &ett_h225_T_result,
+ };
+
+ static tap_param h225_stat_params[] = {
+ { PARAM_FILTER, "filter", "Filter", NULL, TRUE }
+ };
+
+ static stat_tap_table_ui h225_stat_table = {
+ REGISTER_STAT_GROUP_TELEPHONY,
+ "H.225",
+ PFNAME,
+ "h225,counter",
+ h225_stat_init,
+ h225_stat_packet,
+ h225_stat_reset,
+ NULL,
+ NULL,
+ sizeof(h225_stat_fields)/sizeof(stat_tap_table_item), h225_stat_fields,
+ sizeof(h225_stat_params)/sizeof(tap_param), h225_stat_params,
+ NULL,
+ 0
+ };
+
+ module_t *h225_module;
+ int i, proto_h225_ras;
+
+ /* Register protocol */
+ proto_h225 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Create a "fake" protocol to get proper display strings for SRT dialogs */
+ proto_h225_ras = proto_register_protocol("H.225 RAS", "H.225 RAS", "h225_ras");
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_h225, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ h225_module = prefs_register_protocol(proto_h225, proto_reg_handoff_h225);
+ prefs_register_uint_preference(h225_module, "tls.port",
+ "H.225 TLS Port",
+ "H.225 Server TLS Port",
+ 10, &h225_tls_port);
+ prefs_register_bool_preference(h225_module, "reassembly",
+ "Reassemble H.225 messages spanning multiple TCP segments",
+ "Whether the H.225 dissector should reassemble messages spanning multiple TCP segments."
+ " To use this option, you must also enable \"Allow subdissectors to reassemble TCP streams\" in the TCP protocol settings.",
+ &h225_reassembly);
+ prefs_register_bool_preference(h225_module, "h245_in_tree",
+ "Display tunnelled H.245 inside H.225.0 tree",
+ "ON - display tunnelled H.245 inside H.225.0 tree, OFF - display tunnelled H.245 in root tree after H.225.0",
+ &h225_h245_in_tree);
+ prefs_register_bool_preference(h225_module, "tp_in_tree",
+ "Display tunnelled protocols inside H.225.0 tree",
+ "ON - display tunnelled protocols inside H.225.0 tree, OFF - display tunnelled protocols in root tree after H.225.0",
+ &h225_tp_in_tree);
+
+ register_dissector(PFNAME, dissect_h225_H323UserInformation, proto_h225);
+ register_dissector("h323ui",dissect_h225_H323UserInformation, proto_h225);
+ h225ras_handle = register_dissector("h225.ras", dissect_h225_h225_RasMessage, proto_h225);
+
+ nsp_object_dissector_table = register_dissector_table("h225.nsp.object", "H.225 NonStandardParameter Object", proto_h225, FT_STRING, STRING_CASE_SENSITIVE);
+ nsp_h221_dissector_table = register_dissector_table("h225.nsp.h221", "H.225 NonStandardParameter h221", proto_h225, FT_UINT32, BASE_HEX);
+ tp_dissector_table = register_dissector_table("h225.tp", "H.225 Tunnelled Protocol", proto_h225, FT_STRING, STRING_CASE_SENSITIVE);
+ gef_name_dissector_table = register_dissector_table("h225.gef.name", "H.225 Generic Extensible Framework Name", proto_h225, FT_STRING, STRING_CASE_SENSITIVE);
+ gef_content_dissector_table = register_dissector_table("h225.gef.content", "H.225 Generic Extensible Framework Content", proto_h225, FT_STRING, STRING_CASE_SENSITIVE);
+
+ for(i=0;i<7;i++) {
+ ras_calls[i] = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), h225ras_call_hash, h225ras_call_equal);
+ }
+
+ h225_tap = register_tap(PFNAME);
+
+ register_rtd_table(proto_h225_ras, PFNAME, NUM_RAS_STATS, 1, ras_message_category, h225rassrt_packet, NULL);
+
+ register_stat_tap_table_ui(&h225_stat_table);
+
+ oid_add_from_string("Version 1","0.0.8.2250.0.1");
+ oid_add_from_string("Version 2","0.0.8.2250.0.2");
+ oid_add_from_string("Version 3","0.0.8.2250.0.3");
+ oid_add_from_string("Version 4","0.0.8.2250.0.4");
+ oid_add_from_string("Version 5","0.0.8.2250.0.5");
+ oid_add_from_string("Version 6","0.0.8.2250.0.6");
+}
+
+
+/*--- proto_reg_handoff_h225 ---------------------------------------*/
+void
+proto_reg_handoff_h225(void)
+{
+ static gboolean h225_prefs_initialized = FALSE;
+ static dissector_handle_t q931_tpkt_handle;
+ static guint saved_h225_tls_port;
+
+ if (!h225_prefs_initialized) {
+ dissector_add_uint_range_with_preference("udp.port", UDP_PORT_RAS_RANGE, h225ras_handle);
+
+ h245_handle = find_dissector("h245");
+ h245dg_handle = find_dissector("h245dg");
+ h4501_handle = find_dissector_add_dependency("h4501", proto_h225);
+ data_handle = find_dissector("data");
+ h225_prefs_initialized = TRUE;
+ q931_tpkt_handle = find_dissector("q931.tpkt");
+ } else {
+ ssl_dissector_delete(saved_h225_tls_port, q931_tpkt_handle);
+ }
+
+ saved_h225_tls_port = h225_tls_port;
+ ssl_dissector_add(saved_h225_tls_port, q931_tpkt_handle);
+}
+
+static h225_packet_info* create_h225_packet_info(packet_info *pinfo)
+{
+ h225_packet_info* pi = wmem_new0(pinfo->pool, h225_packet_info);
+
+ pi->msg_type = H225_OTHERS;
+ pi->cs_type = H225_OTHER;
+ pi->msg_tag = -1;
+ pi->reason = -1;
+
+ return pi;
+}
+
+/*
+ The following function contains the routines for RAS request/response matching.
+ A RAS response matches with a request, if both messages have the same
+ RequestSequenceNumber, belong to the same IP conversation and belong to the same
+ RAS "category" (e.g. Admission, Registration).
+
+ We use hashtables to access the lists of RAS calls (request/response pairs).
+ We have one hashtable for each RAS category. The hashkeys consist of the
+ non-unique 16-bit RequestSequenceNumber and values representing the conversation.
+
+ In big capture files, we might get different requests with identical keys.
+ These requests aren't necessarily duplicates. They might be valid new requests.
+ At the moment we just use the timedelta between the last valid and the new request
+ to decide if the new request is a duplicate or not. There might be better ways.
+ Two thresholds are defined below.
+
+ However the decision is made, another problem arises. We can't just add those
+ requests to our hashtables. Instead we create lists of RAS calls with identical keys.
+ The hashtables for RAS calls contain now pointers to the first RAS call in a list of
+ RAS calls with identical keys.
+ These lists aren't expected to contain more than 3 items and are usually single item
+ lists. So we don't need an expensive but intelligent way to access these lists
+ (e.g. hashtables). Just walk through such a list.
+*/
+
+#define THRESHOLD_REPEATED_RESPONDED_CALL 300
+#define THRESHOLD_REPEATED_NOT_RESPONDED_CALL 1800
+
+static void ras_call_matching(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, h225_packet_info *pi)
+{
+ proto_item *hidden_item;
+ conversation_t* conversation = NULL;
+ h225ras_call_info_key h225ras_call_key;
+ h225ras_call_t *h225ras_call = NULL;
+ nstime_t delta;
+ guint msg_category;
+
+ if(pi->msg_type == H225_RAS && pi->msg_tag < 21) {
+ /* make RAS request/response matching only for tags from 0 to 20 for now */
+
+ msg_category = pi->msg_tag / 3;
+ if(pi->msg_tag % 3 == 0) { /* Request Message */
+ conversation = find_or_create_conversation(pinfo);
+
+ /* prepare the key data */
+ h225ras_call_key.reqSeqNum = pi->requestSeqNum;
+ h225ras_call_key.conversation = conversation;
+
+ /* look up the request */
+ h225ras_call = find_h225ras_call(&h225ras_call_key ,msg_category);
+
+ if (h225ras_call != NULL) {
+ /* We've seen requests with this reqSeqNum, with the same
+ source and destination, before - do we have
+ *this* request already? */
+ /* Walk through list of ras requests with identical keys */
+ do {
+ if (pinfo->num == h225ras_call->req_num) {
+ /* We have seen this request before -> do nothing */
+ break;
+ }
+
+ /* if end of list is reached, exit loop and decide if request is duplicate or not. */
+ if (h225ras_call->next_call == NULL) {
+ if ( (pinfo->num > h225ras_call->rsp_num && h225ras_call->rsp_num != 0
+ && pinfo->abs_ts.secs > (h225ras_call->req_time.secs + THRESHOLD_REPEATED_RESPONDED_CALL) )
+ ||(pinfo->num > h225ras_call->req_num && h225ras_call->rsp_num == 0
+ && pinfo->abs_ts.secs > (h225ras_call->req_time.secs + THRESHOLD_REPEATED_NOT_RESPONDED_CALL) ) )
+ {
+ /* if last request has been responded
+ and this request appears after last response (has bigger frame number)
+ and last request occurred more than 300 seconds ago,
+ or if last request hasn't been responded
+ and this request appears after last request (has bigger frame number)
+ and last request occurred more than 1800 seconds ago,
+ we decide that we have a new request */
+ /* Append new ras call to list */
+ h225ras_call = append_h225ras_call(h225ras_call, pinfo, &pi->guid, msg_category);
+ } else {
+ /* No, so it's a duplicate request.
+ Mark it as such. */
+ pi->is_duplicate = TRUE;
+ hidden_item = proto_tree_add_uint(tree, hf_h225_ras_dup, tvb, 0,0, pi->requestSeqNum);
+ proto_item_set_hidden(hidden_item);
+ }
+ break;
+ }
+ h225ras_call = h225ras_call->next_call;
+ } while (h225ras_call != NULL );
+ }
+ else {
+ h225ras_call = new_h225ras_call(&h225ras_call_key, pinfo, &pi->guid, msg_category);
+ }
+
+ /* add link to response frame, if available */
+ if(h225ras_call && h225ras_call->rsp_num != 0){
+ proto_item *ti =
+ proto_tree_add_uint_format(tree, hf_h225_ras_rsp_frame, tvb, 0, 0, h225ras_call->rsp_num,
+ "The response to this request is in frame %u",
+ h225ras_call->rsp_num);
+ proto_item_set_generated(ti);
+ }
+
+ /* end of request message handling*/
+ }
+ else { /* Confirm or Reject Message */
+ conversation = find_conversation_pinfo(pinfo, 0);
+ if (conversation != NULL) {
+ /* look only for matching request, if
+ matching conversation is available. */
+ h225ras_call_key.reqSeqNum = pi->requestSeqNum;
+ h225ras_call_key.conversation = conversation;
+ h225ras_call = find_h225ras_call(&h225ras_call_key ,msg_category);
+ if(h225ras_call) {
+ /* find matching ras_call in list of ras calls with identical keys */
+ do {
+ if (pinfo->num == h225ras_call->rsp_num) {
+ /* We have seen this response before -> stop now with matching ras call */
+ break;
+ }
+
+ /* Break when list end is reached */
+ if(h225ras_call->next_call == NULL) {
+ break;
+ }
+ h225ras_call = h225ras_call->next_call;
+ } while (h225ras_call != NULL) ;
+
+ if (!h225ras_call) {
+ return;
+ }
+
+ /* if this is an ACF, ARJ or DCF, DRJ, give guid to tap and make it filterable */
+ if (msg_category == 3 || msg_category == 5) {
+ pi->guid = h225ras_call->guid;
+ hidden_item = proto_tree_add_guid(tree, hf_h225_guid, tvb, 0, GUID_LEN, &pi->guid);
+ proto_item_set_hidden(hidden_item);
+ }
+
+ if (h225ras_call->rsp_num == 0) {
+ /* We have not yet seen a response to that call, so
+ this must be the first response; remember its
+ frame number. */
+ h225ras_call->rsp_num = pinfo->num;
+ }
+ else {
+ /* We have seen a response to this call - but was it
+ *this* response? */
+ if (h225ras_call->rsp_num != pinfo->num) {
+ /* No, so it's a duplicate response.
+ Mark it as such. */
+ pi->is_duplicate = TRUE;
+ hidden_item = proto_tree_add_uint(tree, hf_h225_ras_dup, tvb, 0,0, pi->requestSeqNum);
+ proto_item_set_hidden(hidden_item);
+ }
+ }
+
+ if(h225ras_call->req_num != 0){
+ proto_item *ti;
+ h225ras_call->responded = TRUE;
+ pi->request_available = TRUE;
+
+ /* Indicate the frame to which this is a reply. */
+ ti = proto_tree_add_uint_format(tree, hf_h225_ras_req_frame, tvb, 0, 0, h225ras_call->req_num,
+ "This is a response to a request in frame %u", h225ras_call->req_num);
+ proto_item_set_generated(ti);
+
+ /* Calculate RAS Service Response Time */
+ nstime_delta(&delta, &pinfo->abs_ts, &h225ras_call->req_time);
+ pi->delta_time = delta; /* give it to tap */
+
+ /* display Ras Service Response Time and make it filterable */
+ ti = proto_tree_add_time(tree, hf_h225_ras_deltatime, tvb, 0, 0, &(pi->delta_time));
+ proto_item_set_generated(ti);
+ }
+ }
+ }
+ }
+ }
+}
+
+/*
+ * Editor modelines - https://www.wireshark.org/tools/modelines.html
+ *
+ * Local Variables:
+ * c-basic-offset: 2
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=2 tabstop=8 expandtab:
+ * :indentSize=2:tabSize=8:noTabs=true:
+ */