Logo Search packages:      
Sourcecode: ethereal version File versions

packet-h225.c

/* Do not modify this file.                                                   */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler    */
/* ./packet-h225.c                                                            */
/* ../../tools/asn2eth.py -X -e -p h225 -c h225.cnf -s packet-h225-template h225.asn */

/* Input file: packet-h225-template.c */

/* packet-h225.c
 * Routines for h225 packet dissection
 * Copyright 2005, Anders Broman <anders.broman@ericsson.com>
 *
 * $Id: packet-h225.c 13354 2005-02-08 19:36:20Z lroland $
 *
 * Ethereal - Network traffic analyzer
 * By Gerald Combs <gerald@ethereal.com>
 * Copyright 1998 Gerald Combs
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * 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 Asn2eth compiler.
 *
 */

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include <glib.h>
#include <epan/packet.h>
#include <epan/conversation.h>

#include <stdio.h>
#include <string.h>

#include <epan/prefs.h>
#include "tap.h"
#include "packet-tpkt.h"
#include "packet-per.h"
#include "packet-h225.h"
#include <epan/t35.h>
#include <epan/h225-persistentdata.h>
#include "packet-ber.h"
#include "packet-h235.h"
#include "packet-h245.h"
#include "packet-q931.h"

#define PNAME  "h225"
#define PSNAME "H225"
#define PFNAME "h225"

#define UDP_PORT_RAS1 1718
#define UDP_PORT_RAS2 1719
#define TCP_PORT_CS   1720

static void reset_h225_packet_info(h225_packet_info *pi);
static void ras_call_matching(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, h225_packet_info *pi);
static int dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);

static h225_packet_info pi_arr[5]; /* We assuming a maximum of 5 H225 messaages per packet */
static int pi_current=0;
h225_packet_info *h225_pi=NULL;

static dissector_handle_t h225ras_handle;
static dissector_handle_t H323UserInformation_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_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;

/* Initialize the protocol and registered fields */
static int h225_tap = -1;
static int proto_h225 = -1;

static int hf_h225_H323_UserInformation = -1;
static int hf_h225_RasMessage = -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_fastStart_item_length = -1; 


/*--- Included file: packet-h225-hf.c ---*/

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 */
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_h245Tunneling = -1;            /* T_h245Tunneling */
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_provisionalRespToH245Tunneling = -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_H245Control_item = -1;         /* H245Control_item */
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_conferenceID = -1;             /* ConferenceIdentifier */
static int hf_h225_language = -1;                 /* Language */
static int hf_h225_language_item = -1;            /* IA5String_SIZE_1_32 */
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_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_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_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 = -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_ParallelH245Control_item = -1;  /* OCTET_STRING */
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_FastStart_item = -1;           /* FastStart_item */
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_strict = -1;                   /* NULL */
static int hf_h225_loose = -1;                    /* NULL */
static int hf_h225_ipxAddress = -1;               /* T_ipxAddress */
static int hf_h225_node = -1;                     /* OCTET_STRING_SIZE_6 */
static int hf_h225_netnum = -1;                   /* OCTET_STRING_SIZE_4 */
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_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_h245ipAddress = -1;            /* T_h245ipAddress */
static int hf_h225_h245ipv4 = -1;                 /* T_h245ipv4 */
static int hf_h225_h245ipv4port = -1;             /* T_h245ipv4port */
static int hf_h225_h245ipSourceRoute = -1;        /* T_h245ipSourceRoute */
static int hf_h225_h245routeip = -1;              /* OCTET_STRING_SIZE_4 */
static int hf_h225_h245routeport = -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_h245ipxAddress = -1;           /* T_h245ipxAddress */
static int hf_h225_h245ipxport = -1;              /* OCTET_STRING_SIZE_2 */
static int hf_h225_h245ip6Address = -1;           /* T_h245ip6Address */
static int hf_h225_h245ipv6 = -1;                 /* OCTET_STRING_SIZE_16 */
static int hf_h225_h245ipv6port = -1;             /* INTEGER_0_65535 */
static int hf_h225_h245netBios = -1;              /* OCTET_STRING_SIZE_16 */
static int hf_h225_h245nsap = -1;                 /* OCTET_STRING_SIZE_1_20 */
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_data */
static int hf_h225_nsiOID = -1;                   /* T_object */
static int hf_h225_h221NonStandard = -1;          /* H221NonStandard */
static int hf_h225_dialedDigits = -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_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_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 */
static int hf_h225_min = -1;                      /* TBCD_STRING */
static int hf_h225_mdn = -1;                      /* TBCD_STRING */
static int hf_h225_msisdn = -1;                   /* TBCD_STRING */
static int hf_h225_esn = -1;                      /* TBCD_STRING */
static int hf_h225_mscid = -1;                    /* TBCD_STRING */
static int hf_h225_system_id = -1;                /* T_system_id */
static int hf_h225_sid = -1;                      /* TBCD_STRING */
static int hf_h225_mid = -1;                      /* TBCD_STRING */
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 */
static int hf_h225_soc = -1;                      /* TBCD_STRING */
static int hf_h225_tmsi = -1;                     /* OCTET_STRING_SIZE_1_4 */
static int hf_h225_imei = -1;                     /* TBCD_STRING */
static int hf_h225_hplmn = -1;                    /* TBCD_STRING */
static int hf_h225_vplmn = -1;                    /* TBCD_STRING */
static int hf_h225_address = -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_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;                    /* HASHEDxxx */
static int hf_h225_cryptoGKPwdHash = -1;          /* T_cryptoGKPwdHash */
static int hf_h225_gatekeeperId = -1;             /* GatekeeperIdentifier */
static int hf_h225_cryptoEPPwdEncr = -1;          /* ENCRYPTEDxxx */
static int hf_h225_cryptoGKPwdEncr = -1;          /* ENCRYPTEDxxx */
static int hf_h225_cryptoEPCert = -1;             /* SIGNEDxxx */
static int hf_h225_cryptoGKCert = -1;             /* SIGNEDxxx */
static int hf_h225_cryptoFastStart = -1;          /* SIGNEDxxx */
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 */
static int hf_h225_cic_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;                 /* INTEGER_0_16383_ */
static int hf_h225_oid = -1;                      /* OBJECT_IDENTIFIER */
static int hf_h225_genericIdentifier_nonStandard = -1;  /* GloballyUniqueID */
static int hf_h225_content = -1;                  /* Content */
static int hf_h225_raw = -1;                      /* OCTET_STRING */
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_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_gatekeeperConfirm_rasAddress = -1;  /* TransportAddress */
static int hf_h225_authenticationMode = -1;       /* AuthenticationMechanism */
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_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_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 = -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_transportQOS = -1;             /* TransportQOS */
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_DestinationInfo_item = -1;     /* DestinationInfo_item */
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_irrFrequency = -1;             /* INTEGER_1_65535 */
static int hf_h225_destinationType = -1;          /* EndpointType */
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_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_callSignaling = -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 */

/*--- End of included file: packet-h225-hf.c ---*/


/* Initialize the subtree pointers */
static gint ett_h225 = -1;

/*--- Included file: packet-h225-ett.c ---*/

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_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_H245Control = -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_CallProceeding_UUIE = -1;
static gint ett_h225_Connect_UUIE = -1;
static gint ett_h225_Language = -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_T_connectionParameters = -1;
static gint ett_h225_SEQUENCE_OF_SupportedProtocols = -1;
static gint ett_h225_SEQUENCE_OF_FeatureDescriptor = -1;
static gint ett_h225_SEQUENCE_OF_ExtendedAliasAddress = -1;
static gint ett_h225_ParallelH245Control = -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_FastStart = -1;
static gint ett_h225_TransportAddress = -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_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_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_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_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 = -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_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_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;

/*--- End of included file: packet-h225-ett.c ---*/


/* Global variables */
static guint32  ipv4_address;
static guint32  ipv4_port;
guint32 T38_manufacturer_code;
static gboolean h225_reassembly = TRUE;
guint32 value;
static gboolean contains_faststart = FALSE;

/* NonStandardParameter */
static char nsiOID[256];
static guint32 h221NonStandard;
static guint32 t35CountryCode;
static guint32 t35Extension;
static guint32 manufacturerCode;

/* TunnelledProtocol */
static char tpOID[256];


/*--- Included file: packet-h225-fn.c ---*/

/*--- Cyclic dependencies ---*/

/* EnumeratedParameter -> Content -> Content/compound -> EnumeratedParameter */
static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);

static int dissect_parameters_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EnumeratedParameter(tvb, offset, pinfo, tree, hf_h225_parameters_item);
}
static int dissect_compound_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EnumeratedParameter(tvb, offset, pinfo, tree, hf_h225_compound_item);
}

/* GenericData -> GenericData/parameters -> EnumeratedParameter -> Content -> Content/nested -> GenericData */
static int dissect_h225_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);

static int dissect_genericData_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GenericData(tvb, offset, pinfo, tree, hf_h225_genericData_item);
}
static int dissect_nested_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GenericData(tvb, offset, pinfo, tree, hf_h225_nested_item);
}


/*--- Fields for imported types ---*/

static int dissect_tokens_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_ClearToken(tvb, offset, pinfo, tree, hf_h225_tokens_item);
}
static int dissect_t38FaxProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h245_DataProtocolCapability(tvb, offset, pinfo, tree, hf_h225_t38FaxProtocol);
}
static int dissect_t38FaxProfile(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h245_T38FaxProfile(tvb, offset, pinfo, tree, hf_h225_t38FaxProfile);
}
static int dissect_timeStamp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_timeStamp);
}
static int dissect_token(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_HASHEDxxx(tvb, offset, pinfo, tree, hf_h225_token);
}
static int dissect_cryptoEPPwdEncr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_ENCRYPTEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoEPPwdEncr);
}
static int dissect_cryptoGKPwdEncr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_ENCRYPTEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoGKPwdEncr);
}
static int dissect_cryptoEPCert(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoEPCert);
}
static int dissect_cryptoGKCert(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoGKCert);
}
static int dissect_cryptoFastStart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoFastStart);
}
static int dissect_nestedcryptoToken(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_CryptoToken(tvb, offset, pinfo, tree, hf_h225_nestedcryptoToken);
}
static int dissect_alertingTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_alertingTime);
}
static int dissect_connectTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_connectTime);
}
static int dissect_endTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_endTime);
}
static int dissect_authenticationCapability_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_AuthenticationMechanism(tvb, offset, pinfo, tree, hf_h225_authenticationCapability_item);
}
static int dissect_authenticationMode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h235_AuthenticationMechanism(tvb, offset, pinfo, tree, hf_h225_authenticationMode);
}


static int
dissect_h225_ProtocolIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_index,
                                         NULL);

  return offset;
}
static int dissect_protocolIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ProtocolIdentifier(tvb, offset, pinfo, tree, hf_h225_protocolIdentifier);
}


static int
dissect_h225_T_h245ipv4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {

guint32 value_offset;
guint32 value_len;

  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    4, 4,
                                    &value_offset, &value_len);
      tvb_memcpy(tvb, (char *)&ipv4_address, value_offset, 4);



  return offset;
}
static int dissect_h245ipv4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ipv4(tvb, offset, pinfo, tree, hf_h225_h245ipv4);
}



static int
dissect_h225_T_h245ipv4port(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 65535U, &ipv4_port, NULL, FALSE);


  return offset;
}
static int dissect_h245ipv4port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ipv4port(tvb, offset, pinfo, tree, hf_h225_h245ipv4port);
}

static const per_sequence_t T_h245ipAddress_sequence[] = {
  { "h245ipv4"                    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h245ipv4 },
  { "h245ipv4port"                , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h245ipv4port },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_h245ipAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_h245ipAddress, T_h245ipAddress_sequence);

  return offset;
}
static int dissect_h245ipAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ipAddress(tvb, offset, pinfo, tree, hf_h225_h245ipAddress);
}


static int
dissect_h225_OCTET_STRING_SIZE_4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    4, 4,
                                    NULL, NULL);

  return offset;
}
static int dissect_src_route_ipV4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_4(tvb, offset, pinfo, tree, hf_h225_src_route_ipV4);
}
static int dissect_route_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_4(tvb, offset, pinfo, tree, hf_h225_route_item);
}
static int dissect_netnum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_4(tvb, offset, pinfo, tree, hf_h225_netnum);
}
static int dissect_h245routeip(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_4(tvb, offset, pinfo, tree, hf_h225_h245routeip);
}
static int dissect_h245route_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_4(tvb, offset, pinfo, tree, hf_h225_h245route_item);
}



static int
dissect_h225_INTEGER_0_65535(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 65535U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_numberOfScnConnections(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_numberOfScnConnections);
}
static int dissect_ipV4_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_ipV4_port);
}
static int dissect_ipV4_src_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_ipV4_src_port);
}
static int dissect_ipV6_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_ipV6_port);
}
static int dissect_h245routeport(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_h245routeport);
}
static int dissect_h245ipv6port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_h245ipv6port);
}
static int dissect_member_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_member_item);
}
static int dissect_number16(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_number16);
}
static int dissect_nextSegmentRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_nextSegmentRequested);
}
static int dissect_segment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_65535(tvb, offset, pinfo, tree, hf_h225_segment);
}


static int
dissect_h225_T_h245route(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_h245route, dissect_h245route_item);

  return offset;
}
static int dissect_h245route(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245route(tvb, offset, pinfo, tree, hf_h225_h245route);
}


static int
dissect_h225_NULL(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  { proto_item *ti_tmp;
  ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
  proto_item_append_text(ti_tmp, ": NULL");
  }

  return offset;
}
static int dissect_tunnellingRequired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_tunnellingRequired);
}
static int dissect_provisionalRespToH245Tunneling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_provisionalRespToH245Tunneling);
}
static int dissect_isText(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_isText);
}
static int dissect_fastConnectRefused(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_fastConnectRefused);
}
static int dissect_noBandwidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noBandwidth);
}
static int dissect_gatekeeperResources(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_gatekeeperResources);
}
static int dissect_unreachableDestination(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_unreachableDestination);
}
static int dissect_destinationRejection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_destinationRejection);
}
static int dissect_invalidRevision(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidRevision);
}
static int dissect_noPermission(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noPermission);
}
static int dissect_unreachableGatekeeper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_unreachableGatekeeper);
}
static int dissect_gatewayResources(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_gatewayResources);
}
static int dissect_badFormatAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_badFormatAddress);
}
static int dissect_adaptiveBusy(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_adaptiveBusy);
}
static int dissect_inConf(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_inConf);
}
static int dissect_undefinedReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_undefinedReason);
}
static int dissect_facilityCallDeflection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_facilityCallDeflection);
}
static int dissect_securityDenied(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityDenied);
}
static int dissect_calledPartyNotRegistered(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_calledPartyNotRegistered);
}
static int dissect_callerNotRegistered(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callerNotRegistered);
}
static int dissect_newConnectionNeeded(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_newConnectionNeeded);
}
static int dissect_genericDataReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_genericDataReason);
}
static int dissect_neededFeatureNotSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_neededFeatureNotSupported);
}
static int dissect_tunnelledSignallingRejected(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_tunnelledSignallingRejected);
}
static int dissect_invalidCID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidCID);
}
static int dissect_hopCountExceeded(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hopCountExceeded);
}
static int dissect_create(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_create);
}
static int dissect_join(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_join);
}
static int dissect_invite(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invite);
}
static int dissect_capability_negotiation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_capability_negotiation);
}
static int dissect_callIndependentSupplementaryService(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callIndependentSupplementaryService);
}
static int dissect_symmetricOperationRequired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_symmetricOperationRequired);
}
static int dissect_unknown(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_unknown);
}
static int dissect_bChannel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_bChannel);
}
static int dissect_hybrid2x64(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hybrid2x64);
}
static int dissect_hybrid384(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hybrid384);
}
static int dissect_hybrid1536(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hybrid1536);
}
static int dissect_hybrid1920(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hybrid1920);
}
static int dissect_multirate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_multirate);
}
static int dissect_auto(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_auto);
}
static int dissect_none(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_none);
}
static int dissect_h221(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_h221);
}
static int dissect_bonded_mode1(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_bonded_mode1);
}
static int dissect_bonded_mode2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_bonded_mode2);
}
static int dissect_bonded_mode3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_bonded_mode3);
}
static int dissect_presentationAllowed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_presentationAllowed);
}
static int dissect_presentationRestricted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_presentationRestricted);
}
static int dissect_addressNotAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_addressNotAvailable);
}
static int dissect_routeCallToGatekeeper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_routeCallToGatekeeper);
}
static int dissect_callForwarded(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callForwarded);
}
static int dissect_routeCallToMC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_routeCallToMC);
}
static int dissect_conferenceListChoice(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_conferenceListChoice);
}
static int dissect_startH245(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_startH245);
}
static int dissect_noH245(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noH245);
}
static int dissect_newTokens(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_newTokens);
}
static int dissect_featureSetUpdate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_featureSetUpdate);
}
static int dissect_forwardedElements(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_forwardedElements);
}
static int dissect_transportedInformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_transportedInformation);
}
static int dissect_strict(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_strict);
}
static int dissect_loose(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_loose);
}
static int dissect_internationalNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_internationalNumber);
}
static int dissect_nationalNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_nationalNumber);
}
static int dissect_networkSpecificNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_networkSpecificNumber);
}
static int dissect_subscriberNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_subscriberNumber);
}
static int dissect_abbreviatedNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_abbreviatedNumber);
}
static int dissect_level2RegionalNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_level2RegionalNumber);
}
static int dissect_level1RegionalNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_level1RegionalNumber);
}
static int dissect_pISNSpecificNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_pISNSpecificNumber);
}
static int dissect_localNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_localNumber);
}
static int dissect_tcp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_tcp);
}
static int dissect_annexE_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_annexE_flg);
}
static int dissect_sctp_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_sctp_flg);
}
static int dissect_default(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_default);
}
static int dissect_securityWrongSyncTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityWrongSyncTime);
}
static int dissect_securityReplay(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityReplay);
}
static int dissect_securityWrongGeneralID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityWrongGeneralID);
}
static int dissect_securityWrongSendersID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityWrongSendersID);
}
static int dissect_securityIntegrityFailed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityIntegrityFailed);
}
static int dissect_securityWrongOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityWrongOID);
}
static int dissect_securityDHmismatch(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityDHmismatch);
}
static int dissect_securityCertificateExpired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateExpired);
}
static int dissect_securityCertificateDateInvalid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateDateInvalid);
}
static int dissect_securityCertificateRevoked(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateRevoked);
}
static int dissect_securityCertificateNotReadable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateNotReadable);
}
static int dissect_securityCertificateSignatureInvalid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateSignatureInvalid);
}
static int dissect_securityCertificateMissing(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateMissing);
}
static int dissect_securityCertificateIncomplete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityCertificateIncomplete);
}
static int dissect_securityUnsupportedCertificateAlgOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityUnsupportedCertificateAlgOID);
}
static int dissect_securityUnknownCA(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityUnknownCA);
}
static int dissect_noSecurity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noSecurity);
}
static int dissect_hMAC_MD5(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_hMAC_MD5);
}
static int dissect_digSig(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_digSig);
}
static int dissect_callStart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callStart);
}
static int dissect_callEnd(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callEnd);
}
static int dissect_open(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_open);
}
static int dissect_refresh(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_refresh);
}
static int dissect_close(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_close);
}
static int dissect_startTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_startTime);
}
static int dissect_endTime_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_endTime_flg);
}
static int dissect_terminationCause_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_terminationCause_flg);
}
static int dissect_start(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_start);
}
static int dissect_end(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_end);
}
static int dissect_inIrr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_inIrr);
}
static int dissect_alerting_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_alerting_flg);
}
static int dissect_connect_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_connect_flg);
}
static int dissect_credit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_credit);
}
static int dissect_debit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_debit);
}
static int dissect_multicast_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_multicast_flg);
}
static int dissect_supportsAltGK(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_supportsAltGK);
}
static int dissect_resourceUnavailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_resourceUnavailable);
}
static int dissect_terminalExcluded(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_terminalExcluded);
}
static int dissect_securityDenial(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_securityDenial);
}
static int dissect_additiveRegistration(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_additiveRegistration);
}
static int dissect_restart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_restart);
}
static int dissect_supportsACFSequences(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_supportsACFSequences);
}
static int dissect_supportsAdditiveRegistration(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_supportsAdditiveRegistration);
}
static int dissect_discoveryRequired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_discoveryRequired);
}
static int dissect_invalidCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidCallSignalAddress);
}
static int dissect_invalidRASAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidRASAddress);
}
static int dissect_invalidTerminalType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidTerminalType);
}
static int dissect_transportNotSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_transportNotSupported);
}
static int dissect_transportQOSNotSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_transportQOSNotSupported);
}
static int dissect_invalidAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidAlias);
}
static int dissect_fullRegistrationRequired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_fullRegistrationRequired);
}
static int dissect_additiveRegistrationNotSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_additiveRegistrationNotSupported);
}
static int dissect_reregistrationRequired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_reregistrationRequired);
}
static int dissect_ttlExpired(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_ttlExpired);
}
static int dissect_maintenance(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_maintenance);
}
static int dissect_notCurrentlyRegistered(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_notCurrentlyRegistered);
}
static int dissect_callInProgress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_callInProgress);
}
static int dissect_permissionDenied(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_permissionDenied);
}
static int dissect_pointToPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_pointToPoint);
}
static int dissect_oneToN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_oneToN);
}
static int dissect_nToOne(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_nToOne);
}
static int dissect_nToN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_nToN);
}
static int dissect_direct(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_direct);
}
static int dissect_gatekeeperRouted(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_gatekeeperRouted);
}
static int dissect_endpointControlled(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_endpointControlled);
}
static int dissect_gatekeeperControlled(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_gatekeeperControlled);
}
static int dissect_noControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noControl);
}
static int dissect_invalidPermission(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidPermission);
}
static int dissect_requestDenied(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_requestDenied);
}
static int dissect_invalidEndpointIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidEndpointIdentifier);
}
static int dissect_qosControlNotSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_qosControlNotSupported);
}
static int dissect_incompleteAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_incompleteAddress);
}
static int dissect_aliasesInconsistent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_aliasesInconsistent);
}
static int dissect_exceedsCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_exceedsCallCapacity);
}
static int dissect_collectDestination(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_collectDestination);
}
static int dissect_collectPIN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_collectPIN);
}
static int dissect_noRouteToDestination(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_noRouteToDestination);
}
static int dissect_unallocatedNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_unallocatedNumber);
}
static int dissect_notBound(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_notBound);
}
static int dissect_invalidConferenceID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidConferenceID);
}
static int dissect_insufficientResources(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_insufficientResources);
}
static int dissect_notRegistered(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_notRegistered);
}
static int dissect_forcedDrop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_forcedDrop);
}
static int dissect_normalDrop(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_normalDrop);
}
static int dissect_requestToDropOther(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_requestToDropOther);
}
static int dissect_segmentedResponseSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_segmentedResponseSupported);
}
static int dissect_capacityInfoRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_capacityInfoRequested);
}
static int dissect_complete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_complete);
}
static int dissect_incomplete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_incomplete);
}
static int dissect_invalidCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_invalidCall);
}
static int dissect_started(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_started);
}
static int dissect_failed(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_failed);
}
static int dissect_stopped(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_stopped);
}
static int dissect_notAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NULL(tvb, offset, pinfo, tree, hf_h225_notAvailable);
}


static const value_string h225_T_h245routing_vals[] = {
  {   0, "strict" },
  {   1, "loose" },
  { 0, NULL }
};

static const per_choice_t T_h245routing_choice[] = {
  {   0, "strict"                      , ASN1_EXTENSION_ROOT    , dissect_strict },
  {   1, "loose"                       , ASN1_EXTENSION_ROOT    , dissect_loose },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_h245routing(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_h245routing, T_h245routing_choice, "T_h245routing",
                              NULL);

  return offset;
}
static int dissect_h245routing(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245routing(tvb, offset, pinfo, tree, hf_h225_h245routing);
}

static const per_sequence_t T_h245ipSourceRoute_sequence[] = {
  { "h245routeip"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245routeip },
  { "h245routeport"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245routeport },
  { "h245route"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245route },
  { "h245routing"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245routing },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_h245ipSourceRoute(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_h245ipSourceRoute, T_h245ipSourceRoute_sequence);

  return offset;
}
static int dissect_h245ipSourceRoute(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ipSourceRoute(tvb, offset, pinfo, tree, hf_h225_h245ipSourceRoute);
}


static int
dissect_h225_OCTET_STRING_SIZE_6(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    6, 6,
                                    NULL, NULL);

  return offset;
}
static int dissect_node(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_6(tvb, offset, pinfo, tree, hf_h225_node);
}


static int
dissect_h225_OCTET_STRING_SIZE_2(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    2, 2,
                                    NULL, NULL);

  return offset;
}
static int dissect_ipx_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_2(tvb, offset, pinfo, tree, hf_h225_ipx_port);
}
static int dissect_h245ipxport(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_2(tvb, offset, pinfo, tree, hf_h225_h245ipxport);
}

static const per_sequence_t T_h245ipxAddress_sequence[] = {
  { "node"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_node },
  { "netnum"                      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_netnum },
  { "h245ipxport"                 , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h245ipxport },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_h245ipxAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_h245ipxAddress, T_h245ipxAddress_sequence);

  return offset;
}
static int dissect_h245ipxAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ipxAddress(tvb, offset, pinfo, tree, hf_h225_h245ipxAddress);
}


static int
dissect_h225_OCTET_STRING_SIZE_16(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    16, 16,
                                    NULL, NULL);

  return offset;
}
static int dissect_ipV6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_16(tvb, offset, pinfo, tree, hf_h225_ipV6);
}
static int dissect_netBios(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_16(tvb, offset, pinfo, tree, hf_h225_netBios);
}
static int dissect_h245ipv6(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_16(tvb, offset, pinfo, tree, hf_h225_h245ipv6);
}
static int dissect_h245netBios(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_16(tvb, offset, pinfo, tree, hf_h225_h245netBios);
}

static const per_sequence_t T_h245ip6Address_sequence[] = {
  { "h245ipv6"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245ipv6 },
  { "h245ipv6port"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245ipv6port },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_h245ip6Address(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_h245ip6Address, T_h245ip6Address_sequence);

  return offset;
}
static int dissect_h245ip6Address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245ip6Address(tvb, offset, pinfo, tree, hf_h225_h245ip6Address);
}


static int
dissect_h225_OCTET_STRING_SIZE_1_20(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    1, 20,
                                    NULL, NULL);

  return offset;
}
static int dissect_nsap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_20(tvb, offset, pinfo, tree, hf_h225_nsap);
}
static int dissect_h245nsap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_20(tvb, offset, pinfo, tree, hf_h225_h245nsap);
}


static int
dissect_h225_T_object(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      offset = dissect_per_object_identifier(tvb, offset, pinfo, tree,
                        hf_h225_nsiOID,
                        nsiOID);

  return offset;
}
static int dissect_nsiOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_object(tvb, offset, pinfo, tree, hf_h225_nsiOID);
}



static int
dissect_h225_T_t35CountryCode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 255U, &t35CountryCode, NULL, FALSE);

  return offset;
}
static int dissect_t35CountryCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_t35CountryCode(tvb, offset, pinfo, tree, hf_h225_t35CountryCode);
}



static int
dissect_h225_T_t35Extension(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 255U, &t35Extension, NULL, FALSE);

  return offset;
}
static int dissect_t35Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_t35Extension(tvb, offset, pinfo, tree, hf_h225_t35Extension);
}



static int
dissect_h225_T_manufacturerCode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 65535U, &manufacturerCode, NULL, FALSE);

  return offset;
}
static int dissect_manufacturerCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_manufacturerCode(tvb, offset, pinfo, tree, hf_h225_manufacturerCode);
}

static const per_sequence_t H221NonStandard_sequence[] = {
  { "t35CountryCode"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t35CountryCode },
  { "t35Extension"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t35Extension },
  { "manufacturerCode"            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_manufacturerCode },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H221NonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  t35CountryCode = 0;
  t35Extension = 0;
  manufacturerCode = 0;
  offset = dissect_per_sequence(tvb, offset, pinfo, 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 int dissect_vendorIdentifier_vendor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H221NonStandard(tvb, offset, pinfo, tree, hf_h225_vendorIdentifier_vendor);
}
static int dissect_h221NonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H221NonStandard(tvb, offset, pinfo, tree, hf_h225_h221NonStandard);
}


static const value_string h225_NonStandardIdentifier_vals[] = {
  {   0, "object" },
  {   1, "h221NonStandard" },
  { 0, NULL }
};

static const per_choice_t NonStandardIdentifier_choice[] = {
  {   0, "object"                      , ASN1_EXTENSION_ROOT    , dissect_nsiOID },
  {   1, "h221NonStandard"             , ASN1_EXTENSION_ROOT    , dissect_h221NonStandard },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_NonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 value;

      nsiOID[0] = '\0';
      h221NonStandard = 0;

      offset = dissect_per_choice(tvb, offset, pinfo, tree,
                        hf_h225_nonStandardIdentifier,
                        ett_h225_NonStandardIdentifier, NonStandardIdentifier_choice, "NonStandardIdentifier",
                        &value);

      switch (value) {
            case 0 :  /* object */
                  nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, nsiOID);
                  break;
            case 1 :  /* h221NonStandard */
                  nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
                  break;
            default :
                  nsp_handle = NULL;
    }

  return offset;
}
static int dissect_nonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardIdentifier(tvb, offset, pinfo, tree, hf_h225_nonStandardIdentifier);
}


static int
dissect_h225_T_data(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 value_offset, value_len;
      tvbuff_t *next_tvb;

      offset = dissect_per_octet_string(tvb, offset, pinfo, tree,
                        hf_h225_nsp_data, -1, -1,
                        &value_offset, &value_len);

      if (value_len > 0) {
            next_tvb = tvb_new_subset(tvb, value_offset, value_len, value_len);
            call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, pinfo, tree);
      }

  return offset;
}
static int dissect_nsp_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_data(tvb, offset, pinfo, tree, hf_h225_nsp_data);
}

static const per_sequence_t NonStandardParameter_sequence[] = {
  { "nonStandardIdentifier"       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_nonStandardIdentifier },
  { "data"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_nsp_data },
  { NULL, 0, 0, NULL }
};

int
dissect_h225_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  nsp_handle = NULL;

  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_NonStandardParameter, NonStandardParameter_sequence);

  return offset;
}
static int dissect_nonStandardData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardData);
}
static int dissect_nonStandardControl_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardControl_item);
}
static int dissect_nonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandard);
}
static int dissect_nonStandardReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardReason);
}
static int dissect_nonStandardAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardAddress);
}
static int dissect_nonStandardUsageTypes_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageTypes_item);
}
static int dissect_nonStandardUsageFields_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageFields_item);
}


static const value_string h225_H245TransportAddress_vals[] = {
  {   0, "h245ipAddress" },
  {   1, "h245ipSourceRoute" },
  {   2, "h245ipxAddress" },
  {   3, "h245ip6Address" },
  {   4, "h245netBios" },
  {   5, "h245nsap" },
  {   6, "nonStandardAddress" },
  { 0, NULL }
};

static const per_choice_t H245TransportAddress_choice[] = {
  {   0, "h245ipAddress"               , ASN1_EXTENSION_ROOT    , dissect_h245ipAddress },
  {   1, "h245ipSourceRoute"           , ASN1_EXTENSION_ROOT    , dissect_h245ipSourceRoute },
  {   2, "h245ipxAddress"              , ASN1_EXTENSION_ROOT    , dissect_h245ipxAddress },
  {   3, "h245ip6Address"              , ASN1_EXTENSION_ROOT    , dissect_h245ip6Address },
  {   4, "h245netBios"                 , ASN1_EXTENSION_ROOT    , dissect_h245netBios },
  {   5, "h245nsap"                    , ASN1_EXTENSION_ROOT    , dissect_h245nsap },
  {   6, "nonStandardAddress"          , ASN1_EXTENSION_ROOT    , dissect_nonStandardAddress },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_H245TransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      ipv4_address=0;
      ipv4_port=0;

  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_H245TransportAddress, H245TransportAddress_choice, "H245TransportAddress",
                              NULL);

      /* we need this info for TAPing */
      h225_pi->is_h245 = TRUE;
      h225_pi->h245_address = ipv4_address;     
      h225_pi->h245_port = ipv4_port;     

      if((!pinfo->fd->flags.visited) && ipv4_address!=0 && ipv4_port!=0 && h245_handle){
            address src_addr;
            conversation_t *conv=NULL;

            src_addr.type=AT_IPv4;
            src_addr.len=4;
            src_addr.data=(const guint8 *)&ipv4_address;

            conv=find_conversation(pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR_B|NO_PORT_B);
            if(!conv){
                  conv=conversation_new(pinfo->fd->num, &src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR2|NO_PORT2);
                  conversation_set_dissector(conv, h245_handle);
            }
      }

  return offset;
}
static int dissect_h245Address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H245TransportAddress(tvb, offset, pinfo, tree, hf_h225_h245Address);
}


static int
dissect_h225_DialedDigits(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  if (h225_pi->is_destinationInfo == TRUE) {
    offset = dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_index, 1, 128, "#,*0123456789", 13, (char *)&h225_pi->dialedDigits , 64);  
      h225_pi->is_destinationInfo = FALSE;
  }
  else
      offset = dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_index, 1, 128, "#,*0123456789", 13, NULL, NULL);

  return offset;
}
static int dissect_dialedDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DialedDigits(tvb, offset, pinfo, tree, hf_h225_dialedDigits);
}


static int
dissect_h225_BMPString_SIZE_1_256(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
                                 1, 256);

  return offset;
}
static int dissect_h323_ID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BMPString_SIZE_1_256(tvb, offset, pinfo, tree, hf_h225_h323_ID);
}


static int
dissect_h225_IA5String_SIZE_1_512(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 1, 512);

  return offset;
}
static int dissect_url_ID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_512(tvb, offset, pinfo, tree, hf_h225_url_ID);
}
static int dissect_email_ID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_512(tvb, offset, pinfo, tree, hf_h225_email_ID);
}


static int
dissect_h225_IpV4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    4, 4,
                                    NULL, NULL);

  return offset;
}
static int dissect_ipV4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IpV4(tvb, offset, pinfo, tree, hf_h225_ipV4);
}

static const per_sequence_t T_ipAddress_sequence[] = {
  { "ip"                          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ipV4 },
  { "port"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ipV4_port },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_ipAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_ipAddress, T_ipAddress_sequence);

  return offset;
}
static int dissect_ipAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_ipAddress(tvb, offset, pinfo, tree, hf_h225_ipAddress);
}


static int
dissect_h225_T_route(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_route, dissect_route_item);

  return offset;
}
static int dissect_route(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_route(tvb, offset, pinfo, tree, hf_h225_route);
}


static const value_string h225_T_routing_vals[] = {
  {   0, "strict" },
  {   1, "loose" },
  { 0, NULL }
};

static const per_choice_t T_routing_choice[] = {
  {   0, "strict"                      , ASN1_EXTENSION_ROOT    , dissect_strict },
  {   1, "loose"                       , ASN1_EXTENSION_ROOT    , dissect_loose },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_routing(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_routing, T_routing_choice, "T_routing",
                              NULL);

  return offset;
}
static int dissect_routing(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_routing(tvb, offset, pinfo, tree, hf_h225_routing);
}

static const per_sequence_t T_ipSourceRoute_sequence[] = {
  { "ip"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_src_route_ipV4 },
  { "port"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ipV4_src_port },
  { "route"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_route },
  { "routing"                     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_routing },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_ipSourceRoute(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_ipSourceRoute, T_ipSourceRoute_sequence);

  return offset;
}
static int dissect_ipSourceRoute(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_ipSourceRoute(tvb, offset, pinfo, tree, hf_h225_ipSourceRoute);
}

static const per_sequence_t T_ipxAddress_sequence[] = {
  { "node"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_node },
  { "netnum"                      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_netnum },
  { "port"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_ipx_port },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_ipxAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_ipxAddress, T_ipxAddress_sequence);

  return offset;
}
static int dissect_ipxAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_ipxAddress(tvb, offset, pinfo, tree, hf_h225_ipxAddress);
}

static const per_sequence_t T_ip6Address_sequence[] = {
  { "ip"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ipV6 },
  { "port"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ipV6_port },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_ip6Address(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_ip6Address, T_ip6Address_sequence);

  return offset;
}
static int dissect_ip6Address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_ip6Address(tvb, offset, pinfo, tree, hf_h225_ip6Address);
}


static 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, "ipAddress"                   , ASN1_EXTENSION_ROOT    , dissect_ipAddress },
  {   1, "ipSourceRoute"               , ASN1_EXTENSION_ROOT    , dissect_ipSourceRoute },
  {   2, "ipxAddress"                  , ASN1_EXTENSION_ROOT    , dissect_ipxAddress },
  {   3, "ip6Address"                  , ASN1_EXTENSION_ROOT    , dissect_ip6Address },
  {   4, "netBios"                     , ASN1_EXTENSION_ROOT    , dissect_netBios },
  {   5, "nsap"                        , ASN1_EXTENSION_ROOT    , dissect_nsap },
  {   6, "nonStandardAddress"          , ASN1_EXTENSION_ROOT    , dissect_nonStandardAddress },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_TransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_TransportAddress, TransportAddress_choice, "TransportAddress",
                              NULL);

  return offset;
}
static int dissect_destCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_destCallSignalAddress);
}
static int dissect_sourceCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_sourceCallSignalAddress);
}
static int dissect_alternativeAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_alternativeAddress);
}
static int dissect_transportID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_transportID);
}
static int dissect_callSignalAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_callSignalAddress_item);
}
static int dissect_rasAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_rasAddress_item);
}
static int dissect_annexE_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_annexE_item);
}
static int dissect_sctp_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_sctp_item);
}
static int dissect_alternateGK_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_alternateGK_rasAddress);
}
static int dissect_transport(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_transport);
}
static int dissect_sendAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_sendAddress);
}
static int dissect_recvAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_recvAddress);
}
static int dissect_gatekeeperRequest_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_gatekeeperRequest_rasAddress);
}
static int dissect_gatekeeperConfirm_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_gatekeeperConfirm_rasAddress);
}
static int dissect_srcCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_srcCallSignalAddress);
}
static int dissect_replyAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_replyAddress);
}
static int dissect_locationConfirm_callSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_locationConfirm_callSignalAddress);
}
static int dissect_locationConfirm_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_locationConfirm_rasAddress);
}
static int dissect_infoRequestResponse_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportAddress(tvb, offset, pinfo, tree, hf_h225_infoRequestResponse_rasAddress);
}


static 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, "unknown"                     , ASN1_EXTENSION_ROOT    , dissect_unknown },
  {   1, "internationalNumber"         , ASN1_EXTENSION_ROOT    , dissect_internationalNumber },
  {   2, "nationalNumber"              , ASN1_EXTENSION_ROOT    , dissect_nationalNumber },
  {   3, "networkSpecificNumber"       , ASN1_EXTENSION_ROOT    , dissect_networkSpecificNumber },
  {   4, "subscriberNumber"            , ASN1_EXTENSION_ROOT    , dissect_subscriberNumber },
  {   5, "abbreviatedNumber"           , ASN1_EXTENSION_ROOT    , dissect_abbreviatedNumber },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_PublicTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_PublicTypeOfNumber, PublicTypeOfNumber_choice, "PublicTypeOfNumber",
                              NULL);

  return offset;
}
static int dissect_publicTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PublicTypeOfNumber(tvb, offset, pinfo, tree, hf_h225_publicTypeOfNumber);
}


static int
dissect_h225_NumberDigits(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {

      offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_index, 1, 128, "#,*0123456789", 13, NULL, NULL);

  return offset;
}
static int dissect_dataPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NumberDigits(tvb, offset, pinfo, tree, hf_h225_dataPartyNumber);
}
static int dissect_telexPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NumberDigits(tvb, offset, pinfo, tree, hf_h225_telexPartyNumber);
}
static int dissect_nationalStandardPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NumberDigits(tvb, offset, pinfo, tree, hf_h225_nationalStandardPartyNumber);
}
static int dissect_publicNumberDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NumberDigits(tvb, offset, pinfo, tree, hf_h225_publicNumberDigits);
}
static int dissect_privateNumberDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NumberDigits(tvb, offset, pinfo, tree, hf_h225_privateNumberDigits);
}

static const per_sequence_t PublicPartyNumber_sequence[] = {
  { "publicTypeOfNumber"          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_publicTypeOfNumber },
  { "publicNumberDigits"          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_publicNumberDigits },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_PublicPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_PublicPartyNumber, PublicPartyNumber_sequence);

  return offset;
}
static int dissect_e164Number(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PublicPartyNumber(tvb, offset, pinfo, tree, hf_h225_e164Number);
}


static 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, "unknown"                     , ASN1_EXTENSION_ROOT    , dissect_unknown },
  {   1, "level2RegionalNumber"        , ASN1_EXTENSION_ROOT    , dissect_level2RegionalNumber },
  {   2, "level1RegionalNumber"        , ASN1_EXTENSION_ROOT    , dissect_level1RegionalNumber },
  {   3, "pISNSpecificNumber"          , ASN1_EXTENSION_ROOT    , dissect_pISNSpecificNumber },
  {   4, "localNumber"                 , ASN1_EXTENSION_ROOT    , dissect_localNumber },
  {   5, "abbreviatedNumber"           , ASN1_EXTENSION_ROOT    , dissect_abbreviatedNumber },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_PrivateTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_PrivateTypeOfNumber, PrivateTypeOfNumber_choice, "PrivateTypeOfNumber",
                              NULL);

  return offset;
}
static int dissect_privateTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PrivateTypeOfNumber(tvb, offset, pinfo, tree, hf_h225_privateTypeOfNumber);
}

static const per_sequence_t PrivatePartyNumber_sequence[] = {
  { "privateTypeOfNumber"         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_privateTypeOfNumber },
  { "privateNumberDigits"         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_privateNumberDigits },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_PrivatePartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_PrivatePartyNumber, PrivatePartyNumber_sequence);

  return offset;
}
static int dissect_privateNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PrivatePartyNumber(tvb, offset, pinfo, tree, hf_h225_privateNumber);
}


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, "e164Number"                  , ASN1_EXTENSION_ROOT    , dissect_e164Number },
  {   1, "dataPartyNumber"             , ASN1_EXTENSION_ROOT    , dissect_dataPartyNumber },
  {   2, "telexPartyNumber"            , ASN1_EXTENSION_ROOT    , dissect_telexPartyNumber },
  {   3, "privateNumber"               , ASN1_EXTENSION_ROOT    , dissect_privateNumber },
  {   4, "nationalStandardPartyNumber" , ASN1_EXTENSION_ROOT    , dissect_nationalStandardPartyNumber },
  { 0, NULL, 0, NULL }
};

int
dissect_h225_PartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_PartyNumber, PartyNumber_choice, "PartyNumber",
                              NULL);

  return offset;
}
static int dissect_partyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PartyNumber(tvb, offset, pinfo, tree, hf_h225_partyNumber);
}
static int dissect_startOfRange(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PartyNumber(tvb, offset, pinfo, tree, hf_h225_startOfRange);
}
static int dissect_endOfRange(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PartyNumber(tvb, offset, pinfo, tree, hf_h225_endOfRange);
}
static int dissect_routeCallToSCN_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PartyNumber(tvb, offset, pinfo, tree, hf_h225_routeCallToSCN_item);
}
static int dissect_routeCalltoSCN_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PartyNumber(tvb, offset, pinfo, tree, hf_h225_routeCalltoSCN_item);
}


static int
dissect_h225_TBCD_STRING(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_index,
                                                   -1, -1, "0123456789#*abc", strlen("0123456789#*abc"),
                                                   NULL, NULL);

  return offset;
}
static int dissect_imsi(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_imsi);
}
static int dissect_min(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_min);
}
static int dissect_mdn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_mdn);
}
static int dissect_msisdn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_msisdn);
}
static int dissect_esn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_esn);
}
static int dissect_mscid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_mscid);
}
static int dissect_sid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_sid);
}
static int dissect_mid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_mid);
}
static int dissect_sesn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_sesn);
}
static int dissect_soc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_soc);
}
static int dissect_imei(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_imei);
}
static int dissect_hplmn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_hplmn);
}
static int dissect_vplmn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TBCD_STRING(tvb, offset, pinfo, tree, hf_h225_vplmn);
}


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, "sid"                         , ASN1_EXTENSION_ROOT    , dissect_sid },
  {   1, "mid"                         , ASN1_EXTENSION_ROOT    , dissect_mid },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_system_id(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_system_id, T_system_id_choice, "T_system_id",
                              NULL);

  return offset;
}
static int dissect_system_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_system_id(tvb, offset, pinfo, tree, hf_h225_system_id);
}


static int
dissect_h225_OCTET_STRING_SIZE_1(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    1, 1,
                                    NULL, NULL);

  return offset;
}
static int dissect_systemMyTypeCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1(tvb, offset, pinfo, tree, hf_h225_systemMyTypeCode);
}
static int dissect_systemAccessType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1(tvb, offset, pinfo, tree, hf_h225_systemAccessType);
}
static int dissect_qualificationInformationCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1(tvb, offset, pinfo, tree, hf_h225_qualificationInformationCode);
}

static const per_sequence_t ANSI_41_UIM_sequence[] = {
  { "imsi"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_imsi },
  { "min"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_min },
  { "mdn"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_mdn },
  { "msisdn"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_msisdn },
  { "esn"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_esn },
  { "mscid"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_mscid },
  { "system-id"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_system_id },
  { "systemMyTypeCode"            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_systemMyTypeCode },
  { "systemAccessType"            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_systemAccessType },
  { "qualificationInformationCode", ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_qualificationInformationCode },
  { "sesn"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sesn },
  { "soc"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_soc },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ANSI_41_UIM(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ANSI_41_UIM, ANSI_41_UIM_sequence);

  return offset;
}
static int dissect_ansi_41_uim(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ANSI_41_UIM(tvb, offset, pinfo, tree, hf_h225_ansi_41_uim);
}


static int
dissect_h225_OCTET_STRING_SIZE_1_4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    1, 4,
                                    NULL, NULL);

  return offset;
}
static int dissect_tmsi(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_4(tvb, offset, pinfo, tree, hf_h225_tmsi);
}

static const per_sequence_t GSM_UIM_sequence[] = {
  { "imsi"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_imsi },
  { "tmsi"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tmsi },
  { "msisdn"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_msisdn },
  { "imei"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_imei },
  { "hplmn"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_hplmn },
  { "vplmn"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_vplmn },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GSM_UIM(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GSM_UIM, GSM_UIM_sequence);

  return offset;
}
static int dissect_gsm_uim(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GSM_UIM(tvb, offset, pinfo, tree, hf_h225_gsm_uim);
}


static const value_string h225_MobileUIM_vals[] = {
  {   0, "ansi-41-uim" },
  {   1, "gsm-uim" },
  { 0, NULL }
};

static const per_choice_t MobileUIM_choice[] = {
  {   0, "ansi-41-uim"                 , ASN1_EXTENSION_ROOT    , dissect_ansi_41_uim },
  {   1, "gsm-uim"                     , ASN1_EXTENSION_ROOT    , dissect_gsm_uim },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_MobileUIM(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_MobileUIM, MobileUIM_choice, "MobileUIM",
                              NULL);

  return offset;
}
static int dissect_mobileUIM(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_MobileUIM(tvb, offset, pinfo, tree, hf_h225_mobileUIM);
}


const value_string AliasAddress_vals[] = {
  {   0, "dialedDigits" },
  {   1, "h323-ID" },
  {   2, "url-ID" },
  {   3, "transportID" },
  {   4, "email-ID" },
  {   5, "partyNumber" },
  {   6, "mobileUIM" },
  { 0, NULL }
};

static const per_choice_t AliasAddress_choice[] = {
  {   0, "dialedDigits"                , ASN1_EXTENSION_ROOT    , dissect_dialedDigits },
  {   1, "h323-ID"                     , ASN1_EXTENSION_ROOT    , dissect_h323_ID },
  {   2, "url-ID"                      , ASN1_NOT_EXTENSION_ROOT, dissect_url_ID },
  {   3, "transportID"                 , ASN1_NOT_EXTENSION_ROOT, dissect_transportID },
  {   4, "email-ID"                    , ASN1_NOT_EXTENSION_ROOT, dissect_email_ID },
  {   5, "partyNumber"                 , ASN1_NOT_EXTENSION_ROOT, dissect_partyNumber },
  {   6, "mobileUIM"                   , ASN1_NOT_EXTENSION_ROOT, dissect_mobileUIM },
  { 0, NULL, 0, NULL }
};

int
dissect_h225_AliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_AliasAddress, AliasAddress_choice, "AliasAddress",
                              NULL);

  return offset;
}
static int dissect_alertingAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_alertingAddress_item);
}
static int dissect_connectedAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_connectedAddress_item);
}
static int dissect_busyAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_busyAddress_item);
}
static int dissect_sourceAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceAddress_item);
}
static int dissect_destinationAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_destinationAddress_item);
}
static int dissect_destExtraCallInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_destExtraCallInfo_item);
}
static int dissect_uUIE_remoteExtensionAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_uUIE_remoteExtensionAddress);
}
static int dissect_alternativeAliasAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_alternativeAliasAddress_item);
}
static int dissect_conferenceAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_conferenceAlias);
}
static int dissect_wildcard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_wildcard);
}
static int dissect_address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_address);
}
static int dissect_aliasAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_aliasAddress_item);
}
static int dissect_remoteExtensionAddress_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_remoteExtensionAddress_item);
}
static int dissect_alias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_alias);
}
static int dissect_prefix(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_prefix);
}
static int dissect_endpointAlias_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_endpointAlias_item);
}
static int dissect_terminalAlias_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_terminalAlias_item);
}
static int dissect_featureServerAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_featureServerAlias);
}
static int dissect_duplicateAlias_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_duplicateAlias_item);
}
static int dissect_srcInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_srcInfo_item);
}
static int dissect_modifiedSrcInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_modifiedSrcInfo_item);
}
static int dissect_sourceInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceInfo_item);
}
static int dissect_sourceEndpointInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceEndpointInfo_item);
}


static int
dissect_h225_SEQUENCE_OF_AliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_AliasAddress, dissect_alertingAddress_item);

  return offset;
}
static int dissect_alertingAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_alertingAddress);
}
static int dissect_connectedAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_connectedAddress);
}
static int dissect_busyAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_busyAddress);
}
static int dissect_sourceAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceAddress);
}
static int dissect_destinationAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_destinationAddress);
}
static int dissect_destExtraCallInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_destExtraCallInfo);
}
static int dissect_alternativeAliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_alternativeAliasAddress);
}
static int dissect_aliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_aliasAddress);
}
static int dissect_remoteExtensionAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_remoteExtensionAddress);
}
static int dissect_endpointAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_endpointAlias);
}
static int dissect_terminalAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_terminalAlias);
}
static int dissect_duplicateAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_duplicateAlias);
}
static int dissect_srcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_srcInfo);
}
static int dissect_modifiedSrcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_modifiedSrcInfo);
}
static int dissect_sourceInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceInfo);
}
static int dissect_sourceEndpointInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AliasAddress(tvb, offset, pinfo, tree, hf_h225_sourceEndpointInfo);
}


static int
dissect_h225_OCTET_STRING_SIZE_1_256(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    1, 256,
                                    NULL, NULL);

  return offset;
}
static int dissect_productId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_256(tvb, offset, pinfo, tree, hf_h225_productId);
}
static int dissect_versionId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_256(tvb, offset, pinfo, tree, hf_h225_versionId);
}


static int
dissect_h225_OBJECT_IDENTIFIER(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_index,
                                         NULL);

  return offset;
}
static int dissect_enterpriseNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_enterpriseNumber);
}
static int dissect_isoAlgorithm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_isoAlgorithm);
}
static int dissect_hMAC_iso10118_3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_3);
}
static int dissect_iso9797(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_iso9797);
}
static int dissect_algorithmOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_algorithmOID);
}
static int dissect_oid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_oid);
}
static int dissect_algorithmOIDs_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h225_algorithmOIDs_item);
}

static const per_sequence_t VendorIdentifier_sequence[] = {
  { "vendor"                      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_vendorIdentifier_vendor },
  { "productId"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_productId },
  { "versionId"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_versionId },
  { "enterpriseNumber"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_enterpriseNumber },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_VendorIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_VendorIdentifier, VendorIdentifier_sequence);

  return offset;
}
static int dissect_vendor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_VendorIdentifier(tvb, offset, pinfo, tree, hf_h225_vendor);
}
static int dissect_endpointVendor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_VendorIdentifier(tvb, offset, pinfo, tree, hf_h225_endpointVendor);
}

static const per_sequence_t GatekeeperInfo_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GatekeeperInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GatekeeperInfo, GatekeeperInfo_sequence);

  return offset;
}
static int dissect_gatekeeper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperInfo(tvb, offset, pinfo, tree, hf_h225_gatekeeper);
}



static int
dissect_h225_BandWidth(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 4294967295U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_channelRate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandWidth(tvb, offset, pinfo, tree, hf_h225_channelRate);
}
static int dissect_bandwidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandWidth(tvb, offset, pinfo, tree, hf_h225_bandwidth);
}
static int dissect_totalBandwidthRestriction(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandWidth(tvb, offset, pinfo, tree, hf_h225_totalBandwidthRestriction);
}
static int dissect_bandWidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandWidth(tvb, offset, pinfo, tree, hf_h225_bandWidth);
}
static int dissect_allowedBandWidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandWidth(tvb, offset, pinfo, tree, hf_h225_allowedBandWidth);
}



static int
dissect_h225_INTEGER_1_256(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 256U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_channelMultiplier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_256(tvb, offset, pinfo, tree, hf_h225_channelMultiplier);
}

static const per_sequence_t DataRate_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "channelRate"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_channelRate },
  { "channelMultiplier"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_channelMultiplier },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_DataRate(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_DataRate, DataRate_sequence);

  return offset;
}
static int dissect_dataRatesSupported_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DataRate(tvb, offset, pinfo, tree, hf_h225_dataRatesSupported_item);
}
static int dissect_gatewayDataRate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DataRate(tvb, offset, pinfo, tree, hf_h225_gatewayDataRate);
}


static int
dissect_h225_SEQUENCE_OF_DataRate(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_DataRate, dissect_dataRatesSupported_item);

  return offset;
}
static int dissect_dataRatesSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_DataRate(tvb, offset, pinfo, tree, hf_h225_dataRatesSupported);
}

static const per_sequence_t SupportedPrefix_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "prefix"                      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_prefix },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_SupportedPrefix(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_SupportedPrefix, SupportedPrefix_sequence);

  return offset;
}
static int dissect_supportedPrefixes_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SupportedPrefix(tvb, offset, pinfo, tree, hf_h225_supportedPrefixes_item);
}


static int
dissect_h225_SEQUENCE_OF_SupportedPrefix(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_SupportedPrefix, dissect_supportedPrefixes_item);

  return offset;
}
static int dissect_supportedPrefixes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_SupportedPrefix(tvb, offset, pinfo, tree, hf_h225_supportedPrefixes);
}

static const per_sequence_t H310Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H310Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H310Caps, H310Caps_sequence);

  return offset;
}
static int dissect_h310(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H310Caps(tvb, offset, pinfo, tree, hf_h225_h310);
}

static const per_sequence_t H320Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H320Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H320Caps, H320Caps_sequence);

  return offset;
}
static int dissect_h320(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H320Caps(tvb, offset, pinfo, tree, hf_h225_h320);
}

static const per_sequence_t H321Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H321Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H321Caps, H321Caps_sequence);

  return offset;
}
static int dissect_h321(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H321Caps(tvb, offset, pinfo, tree, hf_h225_h321);
}

static const per_sequence_t H322Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H322Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H322Caps, H322Caps_sequence);

  return offset;
}
static int dissect_h322(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H322Caps(tvb, offset, pinfo, tree, hf_h225_h322);
}

static const per_sequence_t H323Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H323Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H323Caps, H323Caps_sequence);

  return offset;
}
static int dissect_h323(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H323Caps(tvb, offset, pinfo, tree, hf_h225_h323);
}

static const per_sequence_t H324Caps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H324Caps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H324Caps, H324Caps_sequence);

  return offset;
}
static int dissect_h324(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H324Caps(tvb, offset, pinfo, tree, hf_h225_h324);
}

static const per_sequence_t VoiceCaps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_VoiceCaps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_VoiceCaps, VoiceCaps_sequence);

  return offset;
}
static int dissect_voice(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_VoiceCaps(tvb, offset, pinfo, tree, hf_h225_voice);
}

static const per_sequence_t T120OnlyCaps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T120OnlyCaps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T120OnlyCaps, T120OnlyCaps_sequence);

  return offset;
}
static int dissect_t120_only(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T120OnlyCaps(tvb, offset, pinfo, tree, hf_h225_t120_only);
}

static const per_sequence_t NonStandardProtocol_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_NonStandardProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_NonStandardProtocol, NonStandardProtocol_sequence);

  return offset;
}
static int dissect_nonStandardProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardProtocol(tvb, offset, pinfo, tree, hf_h225_nonStandardProtocol);
}

static const per_sequence_t T38FaxAnnexbOnlyCaps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_supportedPrefixes },
  { "t38FaxProtocol"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t38FaxProtocol },
  { "t38FaxProfile"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_t38FaxProfile },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T38FaxAnnexbOnlyCaps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T38FaxAnnexbOnlyCaps, T38FaxAnnexbOnlyCaps_sequence);

  return offset;
}
static int dissect_t38FaxAnnexbOnly(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T38FaxAnnexbOnlyCaps(tvb, offset, pinfo, tree, hf_h225_t38FaxAnnexbOnly);
}

static const per_sequence_t SIPCaps_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "dataRatesSupported"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_dataRatesSupported },
  { "supportedPrefixes"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_SIPCaps(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_SIPCaps, SIPCaps_sequence);

  return offset;
}
static int dissect_sip(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SIPCaps(tvb, offset, pinfo, tree, hf_h225_sip);
}


static 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, "nonStandardData"             , ASN1_EXTENSION_ROOT    , dissect_nonStandardData },
  {   1, "h310"                        , ASN1_EXTENSION_ROOT    , dissect_h310 },
  {   2, "h320"                        , ASN1_EXTENSION_ROOT    , dissect_h320 },
  {   3, "h321"                        , ASN1_EXTENSION_ROOT    , dissect_h321 },
  {   4, "h322"                        , ASN1_EXTENSION_ROOT    , dissect_h322 },
  {   5, "h323"                        , ASN1_EXTENSION_ROOT    , dissect_h323 },
  {   6, "h324"                        , ASN1_EXTENSION_ROOT    , dissect_h324 },
  {   7, "voice"                       , ASN1_EXTENSION_ROOT    , dissect_voice },
  {   8, "t120-only"                   , ASN1_EXTENSION_ROOT    , dissect_t120_only },
  {   9, "nonStandardProtocol"         , ASN1_NOT_EXTENSION_ROOT, dissect_nonStandardProtocol },
  {  10, "t38FaxAnnexbOnly"            , ASN1_NOT_EXTENSION_ROOT, dissect_t38FaxAnnexbOnly },
  {  11, "sip"                         , ASN1_NOT_EXTENSION_ROOT, dissect_sip },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_SupportedProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_SupportedProtocols, SupportedProtocols_choice, "SupportedProtocols",
                              NULL);

  return offset;
}
static int dissect_desiredProtocols_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_desiredProtocols_item);
}
static int dissect_protocol_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_protocol_item);
}
static int dissect_supportedProtocols_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_supportedProtocols_item);
}
static int dissect_protocols_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_protocols_item);
}


static int
dissect_h225_SEQUENCE_OF_SupportedProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_SupportedProtocols, dissect_desiredProtocols_item);

  return offset;
}
static int dissect_desiredProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_desiredProtocols);
}
static int dissect_protocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_protocol);
}
static int dissect_supportedProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_supportedProtocols);
}
static int dissect_protocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_SupportedProtocols(tvb, offset, pinfo, tree, hf_h225_protocols);
}

static const per_sequence_t GatewayInfo_sequence[] = {
  { "protocol"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_protocol },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GatewayInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GatewayInfo, GatewayInfo_sequence);

  return offset;
}
static int dissect_gateway(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatewayInfo(tvb, offset, pinfo, tree, hf_h225_gateway);
}

static const per_sequence_t McuInfo_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "protocol"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_protocol },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_McuInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_McuInfo, McuInfo_sequence);

  return offset;
}
static int dissect_mcu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_McuInfo(tvb, offset, pinfo, tree, hf_h225_mcu);
}

static const per_sequence_t TerminalInfo_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_TerminalInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_TerminalInfo, TerminalInfo_sequence);

  return offset;
}
static int dissect_terminal(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TerminalInfo(tvb, offset, pinfo, tree, hf_h225_terminal);
}


static int
dissect_h225_BOOLEAN(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_boolean(tvb, offset, pinfo, tree, hf_index,
                               NULL, NULL);

  return offset;
}
static int dissect_multipleCalls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_multipleCalls);
}
static int dissect_maintainConnection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_maintainConnection);
}
static int dissect_activeMC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_activeMC);
}
static int dissect_mediaWaitForConnect(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_mediaWaitForConnect);
}
static int dissect_canOverlapSend(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canOverlapSend);
}
static int dissect_mc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_mc);
}
static int dissect_undefinedNode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_undefinedNode);
}
static int dissect_needToRegister(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_needToRegister);
}
static int dissect_altGKisPermanent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_altGKisPermanent);
}
static int dissect_q932Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q932Full);
}
static int dissect_q951Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q951Full);
}
static int dissect_q952Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q952Full);
}
static int dissect_q953Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q953Full);
}
static int dissect_q955Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q955Full);
}
static int dissect_q956Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q956Full);
}
static int dissect_q957Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_q957Full);
}
static int dissect_conferenceCalling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_conferenceCalling);
}
static int dissect_threePartyService(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_threePartyService);
}
static int dissect_canReportCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canReportCallCapacity);
}
static int dissect_sender(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_sender);
}
static int dissect_multicast(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_multicast);
}
static int dissect_canDisplayAmountString(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canDisplayAmountString);
}
static int dissect_canEnforceDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canEnforceDurationLimit);
}
static int dissect_enforceCallDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_enforceCallDurationLimit);
}
static int dissect_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_bool);
}
static int dissect_replacementFeatureSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_replacementFeatureSet);
}
static int dissect_discoveryComplete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_discoveryComplete);
}
static int dissect_keepAlive(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_keepAlive);
}
static int dissect_willSupplyUUIEs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_willSupplyUUIEs);
}
static int dissect_willRespondToIRR(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_willRespondToIRR);
}
static int dissect_makeCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_makeCall);
}
static int dissect_useGKCallSignalAddressToMakeCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_useGKCallSignalAddressToMakeCall);
}
static int dissect_answerCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_answerCall);
}
static int dissect_useGKCallSignalAddressToAnswer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_useGKCallSignalAddressToAnswer);
}
static int dissect_canMapAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canMapAlias);
}
static int dissect_canMapSrcAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_canMapSrcAlias);
}
static int dissect_setup_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_setup_bool);
}
static int dissect_callProceeding_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_callProceeding_flg);
}
static int dissect_connect_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_connect_bool);
}
static int dissect_alerting_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_alerting_bool);
}
static int dissect_information_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_information_bool);
}
static int dissect_releaseComplete_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_releaseComplete_bool);
}
static int dissect_facility_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_facility_bool);
}
static int dissect_progress_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_progress_bool);
}
static int dissect_empty(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_empty);
}
static int dissect_status_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_status_bool);
}
static int dissect_statusInquiry_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_statusInquiry_bool);
}
static int dissect_setupAcknowledge_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_setupAcknowledge_bool);
}
static int dissect_notify_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_notify_bool);
}
static int dissect_answeredCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_answeredCall);
}
static int dissect_originator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_originator);
}
static int dissect_sent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_sent);
}
static int dissect_needResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_needResponse);
}
static int dissect_unsolicited(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_unsolicited);
}
static int dissect_almostOutOfResources(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BOOLEAN(tvb, offset, pinfo, tree, hf_h225_almostOutOfResources);
}


static int
dissect_h225_BIT_STRING_SIZE_32(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_bit_string(tvb, offset, pinfo, tree, hf_index,
                                  32, 32);

  return offset;
}
static int dissect_set(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BIT_STRING_SIZE_32(tvb, offset, pinfo, tree, hf_h225_set);
}


static int
dissect_h225_T_tunnelledProtocolObjectID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocolObjectID, tpOID);

  return offset;
}
static int dissect_tunnelledProtocolObjectID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_tunnelledProtocolObjectID(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocolObjectID);
}


static int
dissect_h225_IA5String_SIZE_1_64(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 1, 64);

  return offset;
}
static int dissect_subIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_64(tvb, offset, pinfo, tree, hf_h225_subIdentifier);
}
static int dissect_protocolType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_64(tvb, offset, pinfo, tree, hf_h225_protocolType);
}
static int dissect_protocolVariant(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_64(tvb, offset, pinfo, tree, hf_h225_protocolVariant);
}

static const per_sequence_t TunnelledProtocolAlternateIdentifier_sequence[] = {
  { "protocolType"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolType },
  { "protocolVariant"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_protocolVariant },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_TunnelledProtocolAlternateIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_TunnelledProtocolAlternateIdentifier, TunnelledProtocolAlternateIdentifier_sequence);

  return offset;
}
static int dissect_tunnelledProtocolAlternateID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TunnelledProtocolAlternateIdentifier(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocolAlternateID);
}


static const value_string h225_TunnelledProtocol_id_vals[] = {
  {   0, "tunnelledProtocolObjectID" },
  {   1, "tunnelledProtocolAlternateID" },
  { 0, NULL }
};

static const per_choice_t TunnelledProtocol_id_choice[] = {
  {   0, "tunnelledProtocolObjectID"   , ASN1_EXTENSION_ROOT    , dissect_tunnelledProtocolObjectID },
  {   1, "tunnelledProtocolAlternateID", ASN1_EXTENSION_ROOT    , dissect_tunnelledProtocolAlternateID },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_TunnelledProtocol_id(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_TunnelledProtocol_id, TunnelledProtocol_id_choice, "TunnelledProtocol_id",
                              NULL);

  return offset;
}
static int dissect_tunnelledProtocol_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TunnelledProtocol_id(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocol_id);
}

static const per_sequence_t TunnelledProtocol_sequence[] = {
  { "id"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_tunnelledProtocol_id },
  { "subIdentifier"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_subIdentifier },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_TunnelledProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  tpOID[0] = '\0';
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_TunnelledProtocol, TunnelledProtocol_sequence);

  tp_handle = dissector_get_string_handle(tp_dissector_table, tpOID);
  return offset;
}
static int dissect_tunnelledProtocolID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TunnelledProtocol(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocolID);
}
static int dissect_supportedTunnelledProtocols_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TunnelledProtocol(tvb, offset, pinfo, tree, hf_h225_supportedTunnelledProtocols_item);
}
static int dissect_desiredTunnelledProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TunnelledProtocol(tvb, offset, pinfo, tree, hf_h225_desiredTunnelledProtocol);
}


static int
dissect_h225_SEQUENCE_OF_TunnelledProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_TunnelledProtocol, dissect_supportedTunnelledProtocols_item);

  return offset;
}
static int dissect_supportedTunnelledProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TunnelledProtocol(tvb, offset, pinfo, tree, hf_h225_supportedTunnelledProtocols);
}

static const per_sequence_t EndpointType_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "vendor"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_vendor },
  { "gatekeeper"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeper },
  { "gateway"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gateway },
  { "mcu"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_mcu },
  { "terminal"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminal },
  { "mc"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_mc },
  { "undefinedNode"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_undefinedNode },
  { "set"                         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_set },
  { "supportedTunnelledProtocols" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedTunnelledProtocols },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_EndpointType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_EndpointType, EndpointType_sequence);

  return offset;
}
static int dissect_uUIE_destinationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointType(tvb, offset, pinfo, tree, hf_h225_uUIE_destinationInfo);
}
static int dissect_Setup_UUIE_sourceInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointType(tvb, offset, pinfo, tree, hf_h225_Setup_UUIE_sourceInfo);
}
static int dissect_endpointType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointType(tvb, offset, pinfo, tree, hf_h225_endpointType);
}
static int dissect_terminalType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointType(tvb, offset, pinfo, tree, hf_h225_terminalType);
}
static int dissect_destinationType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointType(tvb, offset, pinfo, tree, hf_h225_destinationType);
}



static int
dissect_h225_CallReferenceValue(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 65535U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_destExtraCRV_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallReferenceValue(tvb, offset, pinfo, tree, hf_h225_destExtraCRV_item);
}
static int dissect_callReferenceValue(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallReferenceValue(tvb, offset, pinfo, tree, hf_h225_callReferenceValue);
}


static int
dissect_h225_SEQUENCE_OF_CallReferenceValue(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_CallReferenceValue, dissect_destExtraCRV_item);

  return offset;
}
static int dissect_destExtraCRV(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallReferenceValue(tvb, offset, pinfo, tree, hf_h225_destExtraCRV);
}


static int
dissect_h225_GloballyUniqueID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    16, 16,
                                    NULL, NULL);

  return offset;
}
static int dissect_globalCallId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GloballyUniqueID(tvb, offset, pinfo, tree, hf_h225_globalCallId);
}
static int dissect_threadId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GloballyUniqueID(tvb, offset, pinfo, tree, hf_h225_threadId);
}
static int dissect_genericIdentifier_nonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GloballyUniqueID(tvb, offset, pinfo, tree, hf_h225_genericIdentifier_nonStandard);
}


static int
dissect_h225_ConferenceIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_h225_GloballyUniqueID(tvb, offset, pinfo, tree, hf_index);

  return offset;
}
static int dissect_conferenceID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ConferenceIdentifier(tvb, offset, pinfo, tree, hf_h225_conferenceID);
}
static int dissect_replaceWithConferenceInvite(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ConferenceIdentifier(tvb, offset, pinfo, tree, hf_h225_replaceWithConferenceInvite);
}
static int dissect_substituteConfIDs_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ConferenceIdentifier(tvb, offset, pinfo, tree, hf_h225_substituteConfIDs_item);
}


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, "create"                      , ASN1_EXTENSION_ROOT    , dissect_create },
  {   1, "join"                        , ASN1_EXTENSION_ROOT    , dissect_join },
  {   2, "invite"                      , ASN1_EXTENSION_ROOT    , dissect_invite },
  {   3, "capability-negotiation"      , ASN1_NOT_EXTENSION_ROOT, dissect_capability_negotiation },
  {   4, "callIndependentSupplementaryService", ASN1_NOT_EXTENSION_ROOT, dissect_callIndependentSupplementaryService },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_conferenceGoal(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_conferenceGoal, T_conferenceGoal_choice, "T_conferenceGoal",
                              NULL);

  return offset;
}
static int dissect_conferenceGoal(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_conferenceGoal(tvb, offset, pinfo, tree, hf_h225_conferenceGoal);
}

static const per_sequence_t Q954Details_sequence[] = {
  { "conferenceCalling"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceCalling },
  { "threePartyService"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_threePartyService },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Q954Details(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Q954Details, Q954Details_sequence);

  return offset;
}
static int dissect_q954Info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Q954Details(tvb, offset, pinfo, tree, hf_h225_q954Info);
}

static const per_sequence_t QseriesOptions_sequence[] = {
  { "q932Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q932Full },
  { "q951Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q951Full },
  { "q952Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q952Full },
  { "q953Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q953Full },
  { "q955Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q955Full },
  { "q956Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q956Full },
  { "q957Full"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q957Full },
  { "q954Info"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_q954Info },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_QseriesOptions(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_QseriesOptions, QseriesOptions_sequence);

  return offset;
}
static int dissect_callServices(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_QseriesOptions(tvb, offset, pinfo, tree, hf_h225_callServices);
}


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, "pointToPoint"                , ASN1_EXTENSION_ROOT    , dissect_pointToPoint },
  {   1, "oneToN"                      , ASN1_EXTENSION_ROOT    , dissect_oneToN },
  {   2, "nToOne"                      , ASN1_EXTENSION_ROOT    , dissect_nToOne },
  {   3, "nToN"                        , ASN1_EXTENSION_ROOT    , dissect_nToN },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_CallType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_CallType, CallType_choice, "CallType",
                              NULL);

  return offset;
}
static int dissect_callType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallType(tvb, offset, pinfo, tree, hf_h225_callType);
}


static int
dissect_h225_T_guid(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 guid_offset,guid_len;

  offset = dissect_per_octet_string(tvb,offset,pinfo,tree,hf_index,16,16,&guid_offset,&guid_len);
  tvb_memcpy(tvb,h225_pi->guid,guid_offset,guid_len);

  return offset;
}
static int dissect_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_guid(tvb, offset, pinfo, tree, hf_h225_guid);
}

static const per_sequence_t CallIdentifier_sequence[] = {
  { "guid"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_guid },
  { NULL, 0, 0, NULL }
};

int
dissect_h225_CallIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallIdentifier, CallIdentifier_sequence);

  return offset;
}
static int dissect_callIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallIdentifier(tvb, offset, pinfo, tree, hf_h225_callIdentifier);
}


static const value_string h225_SecurityServiceMode_vals[] = {
  {   0, "nonStandard" },
  {   1, "none" },
  {   2, "default" },
  { 0, NULL }
};

static const per_choice_t SecurityServiceMode_choice[] = {
  {   0, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_nonStandard },
  {   1, "none"                        , ASN1_EXTENSION_ROOT    , dissect_none },
  {   2, "default"                     , ASN1_EXTENSION_ROOT    , dissect_default },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_SecurityServiceMode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_SecurityServiceMode, SecurityServiceMode_choice, "SecurityServiceMode",
                              NULL);

  return offset;
}
static int dissect_encryption(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityServiceMode(tvb, offset, pinfo, tree, hf_h225_encryption);
}
static int dissect_authenticaton(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityServiceMode(tvb, offset, pinfo, tree, hf_h225_authenticaton);
}
static int dissect_securityCapabilities_integrity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityServiceMode(tvb, offset, pinfo, tree, hf_h225_securityCapabilities_integrity);
}

static const per_sequence_t SecurityCapabilities_sequence[] = {
  { "nonStandard"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandard },
  { "encryption"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_encryption },
  { "authenticaton"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_authenticaton },
  { "integrity"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_securityCapabilities_integrity },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_SecurityCapabilities(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_SecurityCapabilities, SecurityCapabilities_sequence);

  return offset;
}
static int dissect_tls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityCapabilities(tvb, offset, pinfo, tree, hf_h225_tls);
}
static int dissect_ipsec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityCapabilities(tvb, offset, pinfo, tree, hf_h225_ipsec);
}


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, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_nonStandard },
  {   1, "noSecurity"                  , ASN1_EXTENSION_ROOT    , dissect_noSecurity },
  {   2, "tls"                         , ASN1_EXTENSION_ROOT    , dissect_tls },
  {   3, "ipsec"                       , ASN1_EXTENSION_ROOT    , dissect_ipsec },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_H245Security(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_H245Security, H245Security_choice, "H245Security",
                              NULL);

  return offset;
}
static int dissect_h245SecurityMode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H245Security(tvb, offset, pinfo, tree, hf_h225_h245SecurityMode);
}
static int dissect_h245SecurityCapability_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H245Security(tvb, offset, pinfo, tree, hf_h225_h245SecurityCapability_item);
}


static int
dissect_h225_SEQUENCE_OF_H245Security(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_H245Security, dissect_h245SecurityCapability_item);

  return offset;
}
static int dissect_h245SecurityCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_H245Security(tvb, offset, pinfo, tree, hf_h225_h245SecurityCapability);
}


static int
dissect_h225_SEQUENCE_OF_ClearToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_ClearToken, dissect_tokens_item);

  return offset;
}
static int dissect_tokens(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_ClearToken(tvb, offset, pinfo, tree, hf_h225_tokens);
}

static const per_sequence_t T_cryptoEPPwdHash_sequence[] = {
  { "alias"                       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_alias },
  { "timeStamp"                   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_timeStamp },
  { "token"                       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_token },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_cryptoEPPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_cryptoEPPwdHash, T_cryptoEPPwdHash_sequence);

  return offset;
}
static int dissect_cryptoEPPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_cryptoEPPwdHash(tvb, offset, pinfo, tree, hf_h225_cryptoEPPwdHash);
}


static int
dissect_h225_GatekeeperIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
                                 1, 128);

  return offset;
}
static int dissect_gatekeeperIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperIdentifier(tvb, offset, pinfo, tree, hf_h225_gatekeeperIdentifier);
}
static int dissect_gatekeeperId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperIdentifier(tvb, offset, pinfo, tree, hf_h225_gatekeeperId);
}

static const per_sequence_t T_cryptoGKPwdHash_sequence[] = {
  { "gatekeeperId"                , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_gatekeeperId },
  { "timeStamp"                   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_timeStamp },
  { "token"                       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_token },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_cryptoGKPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_cryptoGKPwdHash, T_cryptoGKPwdHash_sequence);

  return offset;
}
static int dissect_cryptoGKPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_cryptoGKPwdHash(tvb, offset, pinfo, tree, hf_h225_cryptoGKPwdHash);
}


static 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, "cryptoEPPwdHash"             , ASN1_EXTENSION_ROOT    , dissect_cryptoEPPwdHash },
  {   1, "cryptoGKPwdHash"             , ASN1_EXTENSION_ROOT    , dissect_cryptoGKPwdHash },
  {   2, "cryptoEPPwdEncr"             , ASN1_EXTENSION_ROOT    , dissect_cryptoEPPwdEncr },
  {   3, "cryptoGKPwdEncr"             , ASN1_EXTENSION_ROOT    , dissect_cryptoGKPwdEncr },
  {   4, "cryptoEPCert"                , ASN1_EXTENSION_ROOT    , dissect_cryptoEPCert },
  {   5, "cryptoGKCert"                , ASN1_EXTENSION_ROOT    , dissect_cryptoGKCert },
  {   6, "cryptoFastStart"             , ASN1_EXTENSION_ROOT    , dissect_cryptoFastStart },
  {   7, "nestedcryptoToken"           , ASN1_EXTENSION_ROOT    , dissect_nestedcryptoToken },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_CryptoH323Token(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_CryptoH323Token, CryptoH323Token_choice, "CryptoH323Token",
                              NULL);

  return offset;
}
static int dissect_cryptoTokens_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CryptoH323Token(tvb, offset, pinfo, tree, hf_h225_cryptoTokens_item);
}


static int
dissect_h225_SEQUENCE_OF_CryptoH323Token(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_CryptoH323Token, dissect_cryptoTokens_item);

  return offset;
}
static int dissect_cryptoTokens(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CryptoH323Token(tvb, offset, pinfo, tree, hf_h225_cryptoTokens);
}


static int
dissect_h225_FastStart_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 newoffset;
      guint32 length;
      char codec_str[50];

      offset=dissect_per_length_determinant(tvb, offset, pinfo, tree, hf_h225_fastStart_item_length, &length);
      newoffset=offset + (length<<3);     /* please note that offset is in bits in
                                 PER dissectors, but the item length
                                 is in octets */
      offset=dissect_h245_OpenLogicalChannelCodec(tvb,offset, pinfo, tree, hf_index, codec_str);

    /* Add to packet info */
    g_snprintf(h225_pi->frame_label, 50, "%s %s", h225_pi->frame_label, codec_str);

      contains_faststart = TRUE;
      h225_pi->is_faststart = TRUE;

      return newoffset;


  return offset;
}
static int dissect_FastStart_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FastStart_item(tvb, offset, pinfo, tree, hf_h225_FastStart_item);
}


static int
dissect_h225_FastStart(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_FastStart, dissect_FastStart_item);

  return offset;
}
static int dissect_fastStart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FastStart(tvb, offset, pinfo, tree, hf_h225_fastStart);
}


static int
dissect_h225_EndpointIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
                                 1, 128);

  return offset;
}
static int dissect_endpointIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EndpointIdentifier(tvb, offset, pinfo, tree, hf_h225_endpointIdentifier);
}


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, "unknown"                     , ASN1_EXTENSION_ROOT    , dissect_unknown },
  {   1, "bChannel"                    , ASN1_EXTENSION_ROOT    , dissect_bChannel },
  {   2, "hybrid2x64"                  , ASN1_EXTENSION_ROOT    , dissect_hybrid2x64 },
  {   3, "hybrid384"                   , ASN1_EXTENSION_ROOT    , dissect_hybrid384 },
  {   4, "hybrid1536"                  , ASN1_EXTENSION_ROOT    , dissect_hybrid1536 },
  {   5, "hybrid1920"                  , ASN1_EXTENSION_ROOT    , dissect_hybrid1920 },
  {   6, "multirate"                   , ASN1_EXTENSION_ROOT    , dissect_multirate },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_ScnConnectionType(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_ScnConnectionType, ScnConnectionType_choice, "ScnConnectionType",
                              NULL);

  return offset;
}
static int dissect_connectionType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ScnConnectionType(tvb, offset, pinfo, tree, hf_h225_connectionType);
}


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, "auto"                        , ASN1_EXTENSION_ROOT    , dissect_auto },
  {   1, "none"                        , ASN1_EXTENSION_ROOT    , dissect_none },
  {   2, "h221"                        , ASN1_EXTENSION_ROOT    , dissect_h221 },
  {   3, "bonded-mode1"                , ASN1_EXTENSION_ROOT    , dissect_bonded_mode1 },
  {   4, "bonded-mode2"                , ASN1_EXTENSION_ROOT    , dissect_bonded_mode2 },
  {   5, "bonded-mode3"                , ASN1_EXTENSION_ROOT    , dissect_bonded_mode3 },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_ScnConnectionAggregation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_ScnConnectionAggregation, ScnConnectionAggregation_choice, "ScnConnectionAggregation",
                              NULL);

  return offset;
}
static int dissect_connectionAggregation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ScnConnectionAggregation(tvb, offset, pinfo, tree, hf_h225_connectionAggregation);
}

static const per_sequence_t T_connectionParameters_sequence[] = {
  { "connectionType"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_connectionType },
  { "numberOfScnConnections"      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_numberOfScnConnections },
  { "connectionAggregation"       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_connectionAggregation },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_connectionParameters(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_connectionParameters, T_connectionParameters_sequence);

  return offset;
}
static int dissect_connectionParameters(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_connectionParameters(tvb, offset, pinfo, tree, hf_h225_connectionParameters);
}


static int
dissect_h225_IA5String_SIZE_1_32(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 1, 32);

  return offset;
}
static int dissect_language_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_32(tvb, offset, pinfo, tree, hf_h225_language_item);
}


static int
dissect_h225_Language(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_Language, dissect_language_item);

  return offset;
}
static int dissect_language(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Language(tvb, offset, pinfo, tree, hf_h225_language);
}


const value_string h225_PresentationIndicator_vals[] = {
  {   0, "presentationAllowed" },
  {   1, "presentationRestricted" },
  {   2, "addressNotAvailable" },
  { 0, NULL }
};

static const per_choice_t PresentationIndicator_choice[] = {
  {   0, "presentationAllowed"         , ASN1_EXTENSION_ROOT    , dissect_presentationAllowed },
  {   1, "presentationRestricted"      , ASN1_EXTENSION_ROOT    , dissect_presentationRestricted },
  {   2, "addressNotAvailable"         , ASN1_EXTENSION_ROOT    , dissect_addressNotAvailable },
  { 0, NULL, 0, NULL }
};

int
dissect_h225_PresentationIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_PresentationIndicator, PresentationIndicator_choice, "PresentationIndicator",
                              NULL);

  return offset;
}
static int dissect_presentationIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PresentationIndicator(tvb, offset, pinfo, tree, hf_h225_presentationIndicator);
}


const value_string h225_ScreeningIndicator_vals[] = {
  {   0, "userProvidedNotScreened" },
  {   1, "userProvidedVerifiedAndPassed" },
  {   2, "userProvidedVerifiedAndFailed" },
  {   3, "networkProvided" },
  { 0, NULL }
};


int
dissect_h225_ScreeningIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0, 3, NULL, NULL, TRUE);

  return offset;
}
static int dissect_screeningIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ScreeningIndicator(tvb, offset, pinfo, tree, hf_h225_screeningIndicator);
}



static int
dissect_h225_INTEGER_0_255(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 255U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_protocol_discriminator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_255(tvb, offset, pinfo, tree, hf_h225_protocol_discriminator);
}
static int dissect_sessionId_0_255(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_255(tvb, offset, pinfo, tree, hf_h225_sessionId_0_255);
}
static int dissect_number8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_255(tvb, offset, pinfo, tree, hf_h225_number8);
}


static int
dissect_h225_IA5String_SIZE_0_512(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 0, 512);

  return offset;
}
static int dissect_url(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_0_512(tvb, offset, pinfo, tree, hf_h225_url);
}


static int
dissect_h225_H248SignalsDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    -1, -1,
                                    NULL, NULL);

  return offset;
}
static int dissect_signal(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H248SignalsDescriptor(tvb, offset, pinfo, tree, hf_h225_signal);
}


static int
dissect_h225_BMPString_SIZE_1_512(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
                                 1, 512);

  return offset;
}
static int dissect_amountString(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BMPString_SIZE_1_512(tvb, offset, pinfo, tree, hf_h225_amountString);
}


static const value_string h225_T_billingMode_vals[] = {
  {   0, "credit" },
  {   1, "debit" },
  { 0, NULL }
};

static const per_choice_t T_billingMode_choice[] = {
  {   0, "credit"                      , ASN1_EXTENSION_ROOT    , dissect_credit },
  {   1, "debit"                       , ASN1_EXTENSION_ROOT    , dissect_debit },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_billingMode(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_billingMode, T_billingMode_choice, "T_billingMode",
                              NULL);

  return offset;
}
static int dissect_billingMode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_billingMode(tvb, offset, pinfo, tree, hf_h225_billingMode);
}



static int
dissect_h225_INTEGER_1_4294967295(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 4294967295U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_callDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_4294967295(tvb, offset, pinfo, tree, hf_h225_callDurationLimit);
}
static int dissect_ssrc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_4294967295(tvb, offset, pinfo, tree, hf_h225_ssrc);
}


static const value_string h225_CallCreditServiceControl_callStartingPoint_vals[] = {
  {   0, "alerting" },
  {   1, "connect" },
  { 0, NULL }
};

static const per_choice_t CallCreditServiceControl_callStartingPoint_choice[] = {
  {   0, "alerting"                    , ASN1_EXTENSION_ROOT    , dissect_alerting_flg },
  {   1, "connect"                     , ASN1_EXTENSION_ROOT    , dissect_connect_flg },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_CallCreditServiceControl_callStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_CallCreditServiceControl_callStartingPoint, CallCreditServiceControl_callStartingPoint_choice, "CallCreditServiceControl_callStartingPoint",
                              NULL);

  return offset;
}
static int dissect_callStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCreditServiceControl_callStartingPoint(tvb, offset, pinfo, tree, hf_h225_callStartingPoint);
}

static const per_sequence_t CallCreditServiceControl_sequence[] = {
  { "amountString"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_amountString },
  { "billingMode"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_billingMode },
  { "callDurationLimit"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callDurationLimit },
  { "enforceCallDurationLimit"    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_enforceCallDurationLimit },
  { "callStartingPoint"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callStartingPoint },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallCreditServiceControl(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallCreditServiceControl, CallCreditServiceControl_sequence);

  return offset;
}
static int dissect_callCreditServiceControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCreditServiceControl(tvb, offset, pinfo, tree, hf_h225_callCreditServiceControl);
}


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, "url"                         , ASN1_EXTENSION_ROOT    , dissect_url },
  {   1, "signal"                      , ASN1_EXTENSION_ROOT    , dissect_signal },
  {   2, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_nonStandard },
  {   3, "callCreditServiceControl"    , ASN1_EXTENSION_ROOT    , dissect_callCreditServiceControl },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_ServiceControlDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_ServiceControlDescriptor, ServiceControlDescriptor_choice, "ServiceControlDescriptor",
                              NULL);

  return offset;
}
static int dissect_contents(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ServiceControlDescriptor(tvb, offset, pinfo, tree, hf_h225_contents);
}


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, "open"                        , ASN1_EXTENSION_ROOT    , dissect_open },
  {   1, "refresh"                     , ASN1_EXTENSION_ROOT    , dissect_refresh },
  {   2, "close"                       , ASN1_EXTENSION_ROOT    , dissect_close },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_ServiceControlSession_reason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_ServiceControlSession_reason, ServiceControlSession_reason_choice, "ServiceControlSession_reason",
                              NULL);

  return offset;
}
static int dissect_reason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ServiceControlSession_reason(tvb, offset, pinfo, tree, hf_h225_reason);
}

static const per_sequence_t ServiceControlSession_sequence[] = {
  { "sessionId"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sessionId_0_255 },
  { "contents"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_contents },
  { "reason"                      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_reason },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ServiceControlSession(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ServiceControlSession, ServiceControlSession_sequence);

  return offset;
}
static int dissect_serviceControl_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ServiceControlSession(tvb, offset, pinfo, tree, hf_h225_serviceControl_item);
}


static int
dissect_h225_SEQUENCE_OF_ServiceControlSession(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_ServiceControlSession, dissect_serviceControl_item);

  return offset;
}
static int dissect_serviceControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_ServiceControlSession(tvb, offset, pinfo, tree, hf_h225_serviceControl);
}



static int
dissect_h225_INTEGER_0_4294967295(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 4294967295U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_calls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_4294967295(tvb, offset, pinfo, tree, hf_h225_calls);
}
static int dissect_number32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_4294967295(tvb, offset, pinfo, tree, hf_h225_number32);
}


static int
dissect_h225_IA5String_SIZE_1_128(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 1, 128);

  return offset;
}
static int dissect_group_IA5String(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_128(tvb, offset, pinfo, tree, hf_h225_group_IA5String);
}
static int dissect_carrierName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String_SIZE_1_128(tvb, offset, pinfo, tree, hf_h225_carrierName);
}


static int
dissect_h225_OCTET_STRING_SIZE_3_4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    3, 4,
                                    NULL, NULL);

  return offset;
}
static int dissect_carrierIdentificationCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_3_4(tvb, offset, pinfo, tree, hf_h225_carrierIdentificationCode);
}

static const per_sequence_t CarrierInfo_sequence[] = {
  { "carrierIdentificationCode"   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_carrierIdentificationCode },
  { "carrierName"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_carrierName },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CarrierInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CarrierInfo, CarrierInfo_sequence);

  return offset;
}
static int dissect_carrier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CarrierInfo(tvb, offset, pinfo, tree, hf_h225_carrier);
}

static const per_sequence_t CallsAvailable_sequence[] = {
  { "calls"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_calls },
  { "group"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_group_IA5String },
  { "carrier"                     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_carrier },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallsAvailable, CallsAvailable_sequence);

  return offset;
}
static int dissect_voiceGwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_voiceGwCallsAvailable_item);
}
static int dissect_h310GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h310GwCallsAvailable_item);
}
static int dissect_h320GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h320GwCallsAvailable_item);
}
static int dissect_h321GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h321GwCallsAvailable_item);
}
static int dissect_h322GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h322GwCallsAvailable_item);
}
static int dissect_h323GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h323GwCallsAvailable_item);
}
static int dissect_h324GwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h324GwCallsAvailable_item);
}
static int dissect_t120OnlyGwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_t120OnlyGwCallsAvailable_item);
}
static int dissect_t38FaxAnnexbOnlyGwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_t38FaxAnnexbOnlyGwCallsAvailable_item);
}
static int dissect_terminalCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_terminalCallsAvailable_item);
}
static int dissect_mcuCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_mcuCallsAvailable_item);
}
static int dissect_sipGwCallsAvailable_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_sipGwCallsAvailable_item);
}


static int
dissect_h225_SEQUENCE_OF_CallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_CallsAvailable, dissect_voiceGwCallsAvailable_item);

  return offset;
}
static int dissect_voiceGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_voiceGwCallsAvailable);
}
static int dissect_h310GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h310GwCallsAvailable);
}
static int dissect_h320GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h320GwCallsAvailable);
}
static int dissect_h321GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h321GwCallsAvailable);
}
static int dissect_h322GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h322GwCallsAvailable);
}
static int dissect_h323GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h323GwCallsAvailable);
}
static int dissect_h324GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_h324GwCallsAvailable);
}
static int dissect_t120OnlyGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_t120OnlyGwCallsAvailable);
}
static int dissect_t38FaxAnnexbOnlyGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_t38FaxAnnexbOnlyGwCallsAvailable);
}
static int dissect_terminalCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_terminalCallsAvailable);
}
static int dissect_mcuCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_mcuCallsAvailable);
}
static int dissect_sipGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_CallsAvailable(tvb, offset, pinfo, tree, hf_h225_sipGwCallsAvailable);
}

static const per_sequence_t CallCapacityInfo_sequence[] = {
  { "voiceGwCallsAvailable"       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_voiceGwCallsAvailable },
  { "h310GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h310GwCallsAvailable },
  { "h320GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h320GwCallsAvailable },
  { "h321GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h321GwCallsAvailable },
  { "h322GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h322GwCallsAvailable },
  { "h323GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h323GwCallsAvailable },
  { "h324GwCallsAvailable"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h324GwCallsAvailable },
  { "t120OnlyGwCallsAvailable"    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t120OnlyGwCallsAvailable },
  { "t38FaxAnnexbOnlyGwCallsAvailable", ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_t38FaxAnnexbOnlyGwCallsAvailable },
  { "terminalCallsAvailable"      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminalCallsAvailable },
  { "mcuCallsAvailable"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_mcuCallsAvailable },
  { "sipGwCallsAvailable"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_sipGwCallsAvailable },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallCapacityInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallCapacityInfo, CallCapacityInfo_sequence);

  return offset;
}
static int dissect_maximumCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCapacityInfo(tvb, offset, pinfo, tree, hf_h225_maximumCallCapacity);
}
static int dissect_currentCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCapacityInfo(tvb, offset, pinfo, tree, hf_h225_currentCallCapacity);
}

static const per_sequence_t CallCapacity_sequence[] = {
  { "maximumCallCapacity"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_maximumCallCapacity },
  { "currentCallCapacity"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_currentCallCapacity },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallCapacity, CallCapacity_sequence);

  return offset;
}
static int dissect_capacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCapacity(tvb, offset, pinfo, tree, hf_h225_capacity);
}


static int
dissect_h225_OCTET_STRING_SIZE_2_4(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    2, 4,
                                    NULL, NULL);

  return offset;
}
static int dissect_cic_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_2_4(tvb, offset, pinfo, tree, hf_h225_cic_item);
}


static int
dissect_h225_T_cic(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_cic, dissect_cic_item);

  return offset;
}
static int dissect_cic_2_4(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_cic(tvb, offset, pinfo, tree, hf_h225_cic_2_4);
}


static int
dissect_h225_OCTET_STRING_SIZE_2_5(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    2, 5,
                                    NULL, NULL);

  return offset;
}
static int dissect_pointCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_2_5(tvb, offset, pinfo, tree, hf_h225_pointCode);
}

static const per_sequence_t CicInfo_sequence[] = {
  { "cic"                         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_cic_2_4 },
  { "pointCode"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_pointCode },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CicInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CicInfo, CicInfo_sequence);

  return offset;
}
static int dissect_cic(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CicInfo(tvb, offset, pinfo, tree, hf_h225_cic);
}


static int
dissect_h225_T_member(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_member, dissect_member_item);

  return offset;
}
static int dissect_member(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_member(tvb, offset, pinfo, tree, hf_h225_member);
}

static const per_sequence_t GroupID_sequence[] = {
  { "member"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_member },
  { "group"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_group_IA5String },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GroupID(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GroupID, GroupID_sequence);

  return offset;
}
static int dissect_group(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GroupID(tvb, offset, pinfo, tree, hf_h225_group);
}

static const per_sequence_t CircuitIdentifier_sequence[] = {
  { "cic"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cic },
  { "group"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_group },
  { "carrier"                     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_carrier },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CircuitIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CircuitIdentifier, CircuitIdentifier_sequence);

  return offset;
}
static int dissect_sourceCircuitID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CircuitIdentifier(tvb, offset, pinfo, tree, hf_h225_sourceCircuitID);
}
static int dissect_destinationCircuitID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CircuitIdentifier(tvb, offset, pinfo, tree, hf_h225_destinationCircuitID);
}



static int
dissect_h225_INTEGER_0_16383_(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 16383U, NULL, NULL, TRUE);

  return offset;
}
static int dissect_standard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_16383_(tvb, offset, pinfo, tree, hf_h225_standard);
}


static const value_string h225_GenericIdentifier_vals[] = {
  {   0, "standard" },
  {   1, "oid" },
  {   2, "nonStandard" },
  { 0, NULL }
};

static const per_choice_t GenericIdentifier_choice[] = {
  {   0, "standard"                    , ASN1_EXTENSION_ROOT    , dissect_standard },
  {   1, "oid"                         , ASN1_EXTENSION_ROOT    , dissect_oid },
  {   2, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_genericIdentifier_nonStandard },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_GenericIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_GenericIdentifier, GenericIdentifier_choice, "GenericIdentifier",
                              NULL);

  return offset;
}
static int dissect_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GenericIdentifier(tvb, offset, pinfo, tree, hf_h225_id);
}


static int
dissect_h225_OCTET_STRING(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    -1, -1,
                                    NULL, NULL);

  return offset;
}
static int dissect_h248Message(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING(tvb, offset, pinfo, tree, hf_h225_h248Message);
}
static int dissect_ParallelH245Control_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING(tvb, offset, pinfo, tree, hf_h225_ParallelH245Control_item);
}
static int dissect_raw(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING(tvb, offset, pinfo, tree, hf_h225_raw);
}
static int dissect_messageNotUnderstood(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING(tvb, offset, pinfo, tree, hf_h225_messageNotUnderstood);
}


static int
dissect_h225_IA5String(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_IA5String(tvb, offset, pinfo, tree, hf_index,
                                 -1, -1);

  return offset;
}
static int dissect_text(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IA5String(tvb, offset, pinfo, tree, hf_h225_text);
}


static int
dissect_h225_BMPString(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
                                 -1, -1);

  return offset;
}
static int dissect_unicode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BMPString(tvb, offset, pinfo, tree, hf_h225_unicode);
}


static int
dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                               ett_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter, dissect_parameters_item,
                                               1, 512);

  return offset;
}
static int dissect_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter(tvb, offset, pinfo, tree, hf_h225_parameters);
}
static int dissect_compound(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_SIZE_1_512_OF_EnumeratedParameter(tvb, offset, pinfo, tree, hf_h225_compound);
}


static int
dissect_h225_SEQUENCE_SIZE_1_16_OF_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                               ett_h225_SEQUENCE_SIZE_1_16_OF_GenericData, dissect_nested_item,
                                               1, 16);

  return offset;
}
static int dissect_nested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_SIZE_1_16_OF_GenericData(tvb, offset, pinfo, tree, hf_h225_nested);
}


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, "raw"                         , ASN1_EXTENSION_ROOT    , dissect_raw },
  {   1, "text"                        , ASN1_EXTENSION_ROOT    , dissect_text },
  {   2, "unicode"                     , ASN1_EXTENSION_ROOT    , dissect_unicode },
  {   3, "bool"                        , ASN1_EXTENSION_ROOT    , dissect_bool },
  {   4, "number8"                     , ASN1_EXTENSION_ROOT    , dissect_number8 },
  {   5, "number16"                    , ASN1_EXTENSION_ROOT    , dissect_number16 },
  {   6, "number32"                    , ASN1_EXTENSION_ROOT    , dissect_number32 },
  {   7, "id"                          , ASN1_EXTENSION_ROOT    , dissect_id },
  {   8, "alias"                       , ASN1_EXTENSION_ROOT    , dissect_alias },
  {   9, "transport"                   , ASN1_EXTENSION_ROOT    , dissect_transport },
  {  10, "compound"                    , ASN1_EXTENSION_ROOT    , dissect_compound },
  {  11, "nested"                      , ASN1_EXTENSION_ROOT    , dissect_nested },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_Content(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_Content, Content_choice, "Content",
                              NULL);

  return offset;
}
static int dissect_content(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Content(tvb, offset, pinfo, tree, hf_h225_content);
}

static const per_sequence_t EnumeratedParameter_sequence[] = {
  { "id"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_id },
  { "content"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_content },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_EnumeratedParameter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_EnumeratedParameter, EnumeratedParameter_sequence);

  return offset;
}

static const per_sequence_t GenericData_sequence[] = {
  { "id"                          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_id },
  { "parameters"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_parameters },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GenericData, GenericData_sequence);

  return offset;
}


static int
dissect_h225_SEQUENCE_OF_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_GenericData, dissect_genericData_item);

  return offset;
}
static int dissect_genericData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_GenericData(tvb, offset, pinfo, tree, hf_h225_genericData);
}

static const per_sequence_t CircuitInfo_sequence[] = {
  { "sourceCircuitID"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sourceCircuitID },
  { "destinationCircuitID"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destinationCircuitID },
  { "genericData"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CircuitInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CircuitInfo, CircuitInfo_sequence);

  return offset;
}
static int dissect_circuitInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CircuitInfo(tvb, offset, pinfo, tree, hf_h225_circuitInfo);
}


static int
dissect_h225_FeatureDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_h225_GenericData(tvb, offset, pinfo, tree, hf_index);

  return offset;
}
static int dissect_neededFeatures_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_neededFeatures_item);
}
static int dissect_desiredFeatures_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_desiredFeatures_item);
}
static int dissect_supportedFeatures_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_supportedFeatures_item);
}


static int
dissect_h225_SEQUENCE_OF_FeatureDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_FeatureDescriptor, dissect_neededFeatures_item);

  return offset;
}
static int dissect_neededFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_neededFeatures);
}
static int dissect_desiredFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_desiredFeatures);
}
static int dissect_supportedFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_FeatureDescriptor(tvb, offset, pinfo, tree, hf_h225_supportedFeatures);
}


static int
dissect_h225_ParallelH245Control(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_ParallelH245Control, dissect_ParallelH245Control_item);

  return offset;
}
static int dissect_parallelH245Control(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ParallelH245Control(tvb, offset, pinfo, tree, hf_h225_parallelH245Control);
}

static const per_sequence_t ExtendedAliasAddress_sequence[] = {
  { "address"                     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_address },
  { "presentationIndicator"       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_presentationIndicator },
  { "screeningIndicator"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_screeningIndicator },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ExtendedAliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ExtendedAliasAddress, ExtendedAliasAddress_sequence);

  return offset;
}
static int dissect_additionalSourceAddresses_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ExtendedAliasAddress(tvb, offset, pinfo, tree, hf_h225_additionalSourceAddresses_item);
}


static int
dissect_h225_SEQUENCE_OF_ExtendedAliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_ExtendedAliasAddress, dissect_additionalSourceAddresses_item);

  return offset;
}
static int dissect_additionalSourceAddresses(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_ExtendedAliasAddress(tvb, offset, pinfo, tree, hf_h225_additionalSourceAddresses);
}



static int
dissect_h225_INTEGER_1_31(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 31U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_hopCount_1_31(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_31(tvb, offset, pinfo, tree, hf_h225_hopCount_1_31);
}

static const per_sequence_t Setup_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "h245Address"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245Address },
  { "sourceAddress"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sourceAddress },
  { "sourceInfo"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_Setup_UUIE_sourceInfo },
  { "destinationAddress"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destinationAddress },
  { "destCallSignalAddress"       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destCallSignalAddress },
  { "destExtraCallInfo"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "destExtraCRV"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destExtraCRV },
  { "activeMC"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_activeMC },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "conferenceGoal"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceGoal },
  { "callServices"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callServices },
  { "callType"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callType },
  { "sourceCallSignalAddress"     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_sourceCallSignalAddress },
  { "remoteExtensionAddress"      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_uUIE_remoteExtensionAddress },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "h245SecurityCapability"      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245SecurityCapability },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "mediaWaitForConnect"         , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_mediaWaitForConnect },
  { "canOverlapSend"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_canOverlapSend },
  { "endpointIdentifier"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_endpointIdentifier },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "connectionParameters"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_connectionParameters },
  { "language"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_language },
  { "presentationIndicator"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_presentationIndicator },
  { "screeningIndicator"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_screeningIndicator },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "symmetricOperationRequired"  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_symmetricOperationRequired },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "desiredProtocols"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredProtocols },
  { "neededFeatures"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_neededFeatures },
  { "desiredFeatures"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredFeatures },
  { "supportedFeatures"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedFeatures },
  { "parallelH245Control"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_parallelH245Control },
  { "additionalSourceAddresses"   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_additionalSourceAddresses },
  { "hopCount"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_hopCount_1_31 },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Setup_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  contains_faststart = FALSE;
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Setup_UUIE, Setup_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_SETUP;
  if (contains_faststart == TRUE )
      g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
  else
      g_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_setup(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Setup_UUIE(tvb, offset, pinfo, tree, hf_h225_setup);
}

static const per_sequence_t FeatureSet_sequence[] = {
  { "replacementFeatureSet"       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_replacementFeatureSet },
  { "neededFeatures"              , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_neededFeatures },
  { "desiredFeatures"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_desiredFeatures },
  { "supportedFeatures"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_supportedFeatures },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_FeatureSet(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_FeatureSet, FeatureSet_sequence);

  return offset;
}
static int dissect_featureSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FeatureSet(tvb, offset, pinfo, tree, hf_h225_featureSet);
}

static const per_sequence_t CallProceeding_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_uUIE_destinationInfo },
  { "h245Address"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245Address },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "h245SecurityMode"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245SecurityMode },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallProceeding_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallProceeding_UUIE, CallProceeding_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_CALL_PROCEDING;
  if (contains_faststart == TRUE )
        g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
  else
        g_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_callProceeding(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallProceeding_UUIE(tvb, offset, pinfo, tree, hf_h225_callProceeding);
}

static const per_sequence_t Connect_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "h245Address"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245Address },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_uUIE_destinationInfo },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "h245SecurityMode"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245SecurityMode },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "language"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_language },
  { "connectedAddress"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_connectedAddress },
  { "presentationIndicator"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_presentationIndicator },
  { "screeningIndicator"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_screeningIndicator },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Connect_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Connect_UUIE, Connect_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_CONNECT;
  if (contains_faststart == TRUE )
      g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
  else 
      g_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_connect(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Connect_UUIE(tvb, offset, pinfo, tree, hf_h225_connect);
}

static const per_sequence_t Alerting_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_uUIE_destinationInfo },
  { "h245Address"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245Address },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "h245SecurityMode"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245SecurityMode },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "alertingAddress"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alertingAddress },
  { "presentationIndicator"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_presentationIndicator },
  { "screeningIndicator"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_screeningIndicator },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Alerting_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Alerting_UUIE, Alerting_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_ALERTING;
  if (contains_faststart == TRUE )
       g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
  else 
       g_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_alerting(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Alerting_UUIE(tvb, offset, pinfo, tree, hf_h225_alerting);
}

static const per_sequence_t Information_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Information_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Information_UUIE, Information_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_INFORMATION;
  g_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_information(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Information_UUIE(tvb, offset, pinfo, tree, hf_h225_information);
}


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, "securityWrongSyncTime"       , ASN1_EXTENSION_ROOT    , dissect_securityWrongSyncTime },
  {   1, "securityReplay"              , ASN1_EXTENSION_ROOT    , dissect_securityReplay },
  {   2, "securityWrongGeneralID"      , ASN1_EXTENSION_ROOT    , dissect_securityWrongGeneralID },
  {   3, "securityWrongSendersID"      , ASN1_EXTENSION_ROOT    , dissect_securityWrongSendersID },
  {   4, "securityIntegrityFailed"     , ASN1_EXTENSION_ROOT    , dissect_securityIntegrityFailed },
  {   5, "securityWrongOID"            , ASN1_EXTENSION_ROOT    , dissect_securityWrongOID },
  {   6, "securityDHmismatch"          , ASN1_EXTENSION_ROOT    , dissect_securityDHmismatch },
  {   7, "securityCertificateExpired"  , ASN1_EXTENSION_ROOT    , dissect_securityCertificateExpired },
  {   8, "securityCertificateDateInvalid", ASN1_EXTENSION_ROOT    , dissect_securityCertificateDateInvalid },
  {   9, "securityCertificateRevoked"  , ASN1_EXTENSION_ROOT    , dissect_securityCertificateRevoked },
  {  10, "securityCertificateNotReadable", ASN1_EXTENSION_ROOT    , dissect_securityCertificateNotReadable },
  {  11, "securityCertificateSignatureInvalid", ASN1_EXTENSION_ROOT    , dissect_securityCertificateSignatureInvalid },
  {  12, "securityCertificateMissing"  , ASN1_EXTENSION_ROOT    , dissect_securityCertificateMissing },
  {  13, "securityCertificateIncomplete", ASN1_EXTENSION_ROOT    , dissect_securityCertificateIncomplete },
  {  14, "securityUnsupportedCertificateAlgOID", ASN1_EXTENSION_ROOT    , dissect_securityUnsupportedCertificateAlgOID },
  {  15, "securityUnknownCA"           , ASN1_EXTENSION_ROOT    , dissect_securityUnknownCA },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_SecurityErrors(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_SecurityErrors, SecurityErrors_choice, "SecurityErrors",
                              NULL);

  return offset;
}
static int dissect_rLC_securityError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityErrors(tvb, offset, pinfo, tree, hf_h225_rLC_securityError);
}
static int dissect_gkRej_securityError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityErrors(tvb, offset, pinfo, tree, hf_h225_gkRej_securityError);
}
static int dissect_reg_securityError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityErrors(tvb, offset, pinfo, tree, hf_h225_reg_securityError);
}


const value_string 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, "noBandwidth"                 , ASN1_EXTENSION_ROOT    , dissect_noBandwidth },
  {   1, "gatekeeperResources"         , ASN1_EXTENSION_ROOT    , dissect_gatekeeperResources },
  {   2, "unreachableDestination"      , ASN1_EXTENSION_ROOT    , dissect_unreachableDestination },
  {   3, "destinationRejection"        , ASN1_EXTENSION_ROOT    , dissect_destinationRejection },
  {   4, "invalidRevision"             , ASN1_EXTENSION_ROOT    , dissect_invalidRevision },
  {   5, "noPermission"                , ASN1_EXTENSION_ROOT    , dissect_noPermission },
  {   6, "unreachableGatekeeper"       , ASN1_EXTENSION_ROOT    , dissect_unreachableGatekeeper },
  {   7, "gatewayResources"            , ASN1_EXTENSION_ROOT    , dissect_gatewayResources },
  {   8, "badFormatAddress"            , ASN1_EXTENSION_ROOT    , dissect_badFormatAddress },
  {   9, "adaptiveBusy"                , ASN1_EXTENSION_ROOT    , dissect_adaptiveBusy },
  {  10, "inConf"                      , ASN1_EXTENSION_ROOT    , dissect_inConf },
  {  11, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {  12, "facilityCallDeflection"      , ASN1_NOT_EXTENSION_ROOT, dissect_facilityCallDeflection },
  {  13, "securityDenied"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenied },
  {  14, "calledPartyNotRegistered"    , ASN1_NOT_EXTENSION_ROOT, dissect_calledPartyNotRegistered },
  {  15, "callerNotRegistered"         , ASN1_NOT_EXTENSION_ROOT, dissect_callerNotRegistered },
  {  16, "newConnectionNeeded"         , ASN1_NOT_EXTENSION_ROOT, dissect_newConnectionNeeded },
  {  17, "nonStandardReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_nonStandardReason },
  {  18, "replaceWithConferenceInvite" , ASN1_NOT_EXTENSION_ROOT, dissect_replaceWithConferenceInvite },
  {  19, "genericDataReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_genericDataReason },
  {  20, "neededFeatureNotSupported"   , ASN1_NOT_EXTENSION_ROOT, dissect_neededFeatureNotSupported },
  {  21, "tunnelledSignallingRejected" , ASN1_NOT_EXTENSION_ROOT, dissect_tunnelledSignallingRejected },
  {  22, "invalidCID"                  , ASN1_NOT_EXTENSION_ROOT, dissect_invalidCID },
  {  23, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_rLC_securityError },
  {  24, "hopCountExceeded"            , ASN1_NOT_EXTENSION_ROOT, dissect_hopCountExceeded },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_ReleaseCompleteReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_ReleaseCompleteReason, ReleaseCompleteReason_choice, "ReleaseCompleteReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_releaseCompleteReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ReleaseCompleteReason(tvb, offset, pinfo, tree, hf_h225_releaseCompleteReason);
}

static const per_sequence_t ReleaseComplete_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "reason"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_releaseCompleteReason },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "busyAddress"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_busyAddress },
  { "presentationIndicator"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_presentationIndicator },
  { "screeningIndicator"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_screeningIndicator },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ReleaseComplete_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ReleaseComplete_UUIE, ReleaseComplete_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_RELEASE_COMPLET;
  g_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_releaseComplete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ReleaseComplete_UUIE(tvb, offset, pinfo, tree, hf_h225_releaseComplete);
}


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, "routeCallToGatekeeper"       , ASN1_EXTENSION_ROOT    , dissect_routeCallToGatekeeper },
  {   1, "callForwarded"               , ASN1_EXTENSION_ROOT    , dissect_callForwarded },
  {   2, "routeCallToMC"               , ASN1_EXTENSION_ROOT    , dissect_routeCallToMC },
  {   3, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   4, "conferenceListChoice"        , ASN1_NOT_EXTENSION_ROOT, dissect_conferenceListChoice },
  {   5, "startH245"                   , ASN1_NOT_EXTENSION_ROOT, dissect_startH245 },
  {   6, "noH245"                      , ASN1_NOT_EXTENSION_ROOT, dissect_noH245 },
  {   7, "newTokens"                   , ASN1_NOT_EXTENSION_ROOT, dissect_newTokens },
  {   8, "featureSetUpdate"            , ASN1_NOT_EXTENSION_ROOT, dissect_featureSetUpdate },
  {   9, "forwardedElements"           , ASN1_NOT_EXTENSION_ROOT, dissect_forwardedElements },
  {  10, "transportedInformation"      , ASN1_NOT_EXTENSION_ROOT, dissect_transportedInformation },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_FacilityReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_FacilityReason, FacilityReason_choice, "FacilityReason",
                              &value);
      h225_pi->reason = value;


  return offset;
}
static int dissect_facilityReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_FacilityReason(tvb, offset, pinfo, tree, hf_h225_facilityReason);
}

static const per_sequence_t ConferenceList_sequence[] = {
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_conferenceID },
  { "conferenceAlias"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_conferenceAlias },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ConferenceList(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ConferenceList, ConferenceList_sequence);

  return offset;
}
static int dissect_conferences_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ConferenceList(tvb, offset, pinfo, tree, hf_h225_conferences_item);
}


static int
dissect_h225_SEQUENCE_OF_ConferenceList(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_ConferenceList, dissect_conferences_item);

  return offset;
}
static int dissect_conferences(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_ConferenceList(tvb, offset, pinfo, tree, hf_h225_conferences);
}

static const per_sequence_t Facility_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "alternativeAddress"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_alternativeAddress },
  { "alternativeAliasAddress"     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_alternativeAliasAddress },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_conferenceID },
  { "reason"                      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_facilityReason },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "destExtraCallInfo"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "remoteExtensionAddress"      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_uUIE_remoteExtensionAddress },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "conferences"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_conferences },
  { "h245Address"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245Address },
  { "fastStart"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastStart },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "destinationInfo"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_uUIE_destinationInfo },
  { "h245SecurityMode"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245SecurityMode },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Facility_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Facility_UUIE, Facility_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_FACILITY;
  g_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_facility(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Facility_UUIE(tvb, offset, pinfo, tree, hf_h225_facility);
}

static const per_sequence_t Progress_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_uUIE_destinationInfo },
  { "h245Address"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245Address },
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "h245SecurityMode"            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245SecurityMode },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "fastStart"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_fastStart },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_multipleCalls },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "fastConnectRefused"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_fastConnectRefused },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Progress_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Progress_UUIE, Progress_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_PROGRESS;
  if (contains_faststart == TRUE )
        g_snprintf(h225_pi->frame_label, 50, "%s OLC (%s)", val_to_str(h225_pi->cs_type, T_h323_message_body_vals, "<unknown>"), h225_pi->frame_label);
  else 
        g_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_progress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Progress_UUIE(tvb, offset, pinfo, tree, hf_h225_progress);
}


static int
dissect_h225_T_empty(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  { proto_item *ti_tmp;
  ti_tmp = proto_tree_add_item(tree, hf_index, tvb, offset>>8, 0, FALSE);
  proto_item_append_text(ti_tmp, ": NULL");
  }

  h225_pi->cs_type = H225_EMPTY;
  return offset;
}
static int dissect_empty_flg(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_empty(tvb, offset, pinfo, tree, hf_h225_empty_flg);
}

static const per_sequence_t Status_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Status_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Status_UUIE, Status_UUIE_sequence);

  /* Add to packet info */
  h225_pi->cs_type = H225_STATUS;
  g_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_status(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Status_UUIE(tvb, offset, pinfo, tree, hf_h225_status);
}

static const per_sequence_t StatusInquiry_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_StatusInquiry_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_StatusInquiry_UUIE, StatusInquiry_UUIE_sequence);

  return offset;
}
static int dissect_statusInquiry(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_StatusInquiry_UUIE(tvb, offset, pinfo, tree, hf_h225_statusInquiry);
}

static const per_sequence_t SetupAcknowledge_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_SetupAcknowledge_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_SetupAcknowledge_UUIE, SetupAcknowledge_UUIE_sequence);

  return offset;
}
static int dissect_setupAcknowledge(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SetupAcknowledge_UUIE(tvb, offset, pinfo, tree, hf_h225_setupAcknowledge);
}

static const per_sequence_t Notify_UUIE_sequence[] = {
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Notify_UUIE(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Notify_UUIE, Notify_UUIE_sequence);

  return offset;
}
static int dissect_notify(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Notify_UUIE(tvb, offset, pinfo, tree, hf_h225_notify);
}


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, "setup"                       , ASN1_EXTENSION_ROOT    , dissect_setup },
  {   1, "callProceeding"              , ASN1_EXTENSION_ROOT    , dissect_callProceeding },
  {   2, "connect"                     , ASN1_EXTENSION_ROOT    , dissect_connect },
  {   3, "alerting"                    , ASN1_EXTENSION_ROOT    , dissect_alerting },
  {   4, "information"                 , ASN1_EXTENSION_ROOT    , dissect_information },
  {   5, "releaseComplete"             , ASN1_EXTENSION_ROOT    , dissect_releaseComplete },
  {   6, "facility"                    , ASN1_EXTENSION_ROOT    , dissect_facility },
  {   7, "progress"                    , ASN1_NOT_EXTENSION_ROOT, dissect_progress },
  {   8, "empty"                       , ASN1_NOT_EXTENSION_ROOT, dissect_empty_flg },
  {   9, "status"                      , ASN1_NOT_EXTENSION_ROOT, dissect_status },
  {  10, "statusInquiry"               , ASN1_NOT_EXTENSION_ROOT, dissect_statusInquiry },
  {  11, "setupAcknowledge"            , ASN1_NOT_EXTENSION_ROOT, dissect_setupAcknowledge },
  {  12, "notify"                      , ASN1_NOT_EXTENSION_ROOT, dissect_notify },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_h323_message_body(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 message_body_val;

      contains_faststart = FALSE;
      offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_h323_message_body, T_h323_message_body_choice, "T_h323_message_body",
                              &message_body_val);

      if (check_col(pinfo->cinfo, COL_INFO)){
            col_append_fstr(pinfo->cinfo, COL_INFO, "CS: %s ",
                  val_to_str(message_body_val, T_h323_message_body_vals, "<unknown>"));
        }

      if (h225_pi->msg_type == H225_CS) {
            /* Don't override msg_tag value from IRR */
            h225_pi->msg_tag = message_body_val;
      }

      if (contains_faststart == TRUE )
      {
            if (check_col(pinfo->cinfo, COL_INFO))
            {
                  col_append_str(pinfo->cinfo, COL_INFO, "OpenLogicalChannel " );
            }
      }

      col_set_fence(pinfo->cinfo,COL_INFO);


  return offset;
}
static int dissect_h323_message_body(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h323_message_body(tvb, offset, pinfo, tree, hf_h225_h323_message_body);
}


static int
dissect_h225_T_h4501SupplementaryService_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {

      tvbuff_t *h4501_tvb;
      guint32 h4501_offset=0;
      guint32 h4501_len=0;

      offset=dissect_per_octet_string(tvb, offset, pinfo, tree, -1, -1, -1, &h4501_offset, &h4501_len);

      if(h4501_len){
            h4501_tvb = tvb_new_subset(tvb, h4501_offset, h4501_len, h4501_len);
            call_dissector(h4501_handle, h4501_tvb, pinfo, tree);
      }

  return offset;
}
static int dissect_h4501SupplementaryService_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h4501SupplementaryService_item(tvb, offset, pinfo, tree, hf_h225_h4501SupplementaryService_item);
}


static int
dissect_h225_T_h4501SupplementaryService(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_h4501SupplementaryService, dissect_h4501SupplementaryService_item);

  return offset;
}
static int dissect_h4501SupplementaryService(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h4501SupplementaryService(tvb, offset, pinfo, tree, hf_h225_h4501SupplementaryService);
}


static int
dissect_h225_T_h245Tunneling(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_h245Tunneling, &(h225_pi->is_h245Tunneling), NULL);

  return offset;
}
static int dissect_h245Tunneling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_h245Tunneling(tvb, offset, pinfo, tree, hf_h225_h245Tunneling);
}


static int
dissect_h225_H245Control_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {

      tvbuff_t *h245_tvb;
      guint32 h245_offset=0;
      guint32 h245_len=0;

      offset=dissect_per_octet_string(tvb, offset, pinfo, tree, -1, -1, -1, &h245_offset, &h245_len);

      if(h245_len){
            h245_tvb = tvb_new_subset(tvb, h245_offset, h245_len, h245_len);
            call_dissector(h245dg_handle, h245_tvb, pinfo, tree);
      }


  return offset;
}
static int dissect_H245Control_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H245Control_item(tvb, offset, pinfo, tree, hf_h225_H245Control_item);
}


static int
dissect_h225_H245Control(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_H245Control, dissect_H245Control_item);

  return offset;
}
static int dissect_h245Control(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H245Control(tvb, offset, pinfo, tree, hf_h225_h245Control);
}


static int
dissect_h225_SEQUENCE_OF_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_NonStandardParameter, dissect_nonStandardControl_item);

  return offset;
}
static int dissect_nonStandardControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardControl);
}
static int dissect_nonStandardUsageTypes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageTypes);
}
static int dissect_nonStandardUsageFields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_NonStandardParameter(tvb, offset, pinfo, tree, hf_h225_nonStandardUsageFields);
}

static const per_sequence_t CallLinkage_sequence[] = {
  { "globalCallId"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_globalCallId },
  { "threadId"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_threadId },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallLinkage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallLinkage, CallLinkage_sequence);

  return offset;
}
static int dissect_callLinkage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallLinkage(tvb, offset, pinfo, tree, hf_h225_callLinkage);
}


static int
dissect_h225_T_messageContent_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 value_offset, value_len;
      tvbuff_t *next_tvb;

      offset = dissect_per_octet_string(tvb, offset, pinfo, tree,
                        hf_h225_messageContent_item, -1, -1,
                        &value_offset, &value_len);

      if (value_len > 0) {
            next_tvb = tvb_new_subset(tvb, value_offset, value_len, value_len);
            call_dissector((tp_handle)?tp_handle:data_handle, next_tvb, pinfo, tree);
      }

  return offset;
}
static int dissect_messageContent_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_messageContent_item(tvb, offset, pinfo, tree, hf_h225_messageContent_item);
}


static int
dissect_h225_T_messageContent(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_messageContent, dissect_messageContent_item);

  return offset;
}
static int dissect_messageContent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_messageContent(tvb, offset, pinfo, tree, hf_h225_messageContent);
}

static const per_sequence_t T_tunnelledSignallingMessage_sequence[] = {
  { "tunnelledProtocolID"         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_tunnelledProtocolID },
  { "messageContent"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_messageContent },
  { "tunnellingRequired"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tunnellingRequired },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_tunnelledSignallingMessage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  tp_handle = NULL;
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_tunnelledSignallingMessage, T_tunnelledSignallingMessage_sequence);

  return offset;
}
static int dissect_tunnelledSignallingMessage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_tunnelledSignallingMessage(tvb, offset, pinfo, tree, hf_h225_tunnelledSignallingMessage);
}

static const per_sequence_t StimulusControl_sequence[] = {
  { "nonStandard"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandard },
  { "isText"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_isText },
  { "h248Message"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h248Message },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_StimulusControl(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_StimulusControl, StimulusControl_sequence);

  return offset;
}
static int dissect_stimulusControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_StimulusControl(tvb, offset, pinfo, tree, hf_h225_stimulusControl);
}

static const per_sequence_t H323_UU_PDU_sequence[] = {
  { "h323-message-body"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h323_message_body },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "h4501SupplementaryService"   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h4501SupplementaryService },
  { "h245Tunneling"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_h245Tunneling },
  { "h245Control"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_h245Control },
  { "nonStandardControl"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_nonStandardControl },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "tunnelledSignallingMessage"  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tunnelledSignallingMessage },
  { "provisionalRespToH245Tunneling", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_provisionalRespToH245Tunneling },
  { "stimulusControl"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_stimulusControl },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H323_UU_PDU(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H323_UU_PDU, H323_UU_PDU_sequence);

  return offset;
}
static int dissect_h323_uu_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H323_UU_PDU(tvb, offset, pinfo, tree, hf_h225_h323_uu_pdu);
}
static int dissect_h323pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H323_UU_PDU(tvb, offset, pinfo, tree, hf_h225_h323pdu);
}


static int
dissect_h225_OCTET_STRING_SIZE_1_131(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    1, 131,
                                    NULL, NULL);

  return offset;
}
static int dissect_user_information(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_1_131(tvb, offset, pinfo, tree, hf_h225_user_information);
}

static const per_sequence_t T_user_data_sequence[] = {
  { "protocol-discriminator"      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocol_discriminator },
  { "user-information"            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_user_information },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_user_data(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_user_data, T_user_data_sequence);

  return offset;
}
static int dissect_user_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_user_data(tvb, offset, pinfo, tree, hf_h225_user_data);
}

static const per_sequence_t H323_UserInformation_sequence[] = {
  { "h323-uu-pdu"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h323_uu_pdu },
  { "user-data"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_user_data },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_H323_UserInformation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_H323_UserInformation, H323_UserInformation_sequence);

  return offset;
}

static const per_sequence_t T_range_sequence[] = {
  { "startOfRange"                , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_startOfRange },
  { "endOfRange"                  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_endOfRange },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_range(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_range, T_range_sequence);

  return offset;
}
static int dissect_range(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_range(tvb, offset, pinfo, tree, hf_h225_range);
}


static const value_string h225_AddressPattern_vals[] = {
  {   0, "wildcard" },
  {   1, "range" },
  { 0, NULL }
};

static const per_choice_t AddressPattern_choice[] = {
  {   0, "wildcard"                    , ASN1_EXTENSION_ROOT    , dissect_wildcard },
  {   1, "range"                       , ASN1_EXTENSION_ROOT    , dissect_range },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_AddressPattern(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_AddressPattern, AddressPattern_choice, "AddressPattern",
                              NULL);

  return offset;
}
static int dissect_terminalAliasPattern_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AddressPattern(tvb, offset, pinfo, tree, hf_h225_terminalAliasPattern_item);
}
static int dissect_endpointAliasPattern_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AddressPattern(tvb, offset, pinfo, tree, hf_h225_endpointAliasPattern_item);
}


static int
dissect_h225_SEQUENCE_OF_TransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_TransportAddress, dissect_callSignalAddress_item);

  return offset;
}
static int dissect_callSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TransportAddress(tvb, offset, pinfo, tree, hf_h225_callSignalAddress);
}
static int dissect_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TransportAddress(tvb, offset, pinfo, tree, hf_h225_rasAddress);
}
static int dissect_annexE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TransportAddress(tvb, offset, pinfo, tree, hf_h225_annexE);
}
static int dissect_sctp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TransportAddress(tvb, offset, pinfo, tree, hf_h225_sctp);
}



static int
dissect_h225_INTEGER_0_127(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           0U, 127U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_priority(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_0_127(tvb, offset, pinfo, tree, hf_h225_priority);
}

static const per_sequence_t AlternateTransportAddresses_sequence[] = {
  { "annexE"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_annexE },
  { "sctp"                        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_sctp },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AlternateTransportAddresses(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AlternateTransportAddresses, AlternateTransportAddresses_sequence);

  return offset;
}
static int dissect_alternateTransportAddresses(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AlternateTransportAddresses(tvb, offset, pinfo, tree, hf_h225_alternateTransportAddresses);
}

static const per_sequence_t Endpoint_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "aliasAddress"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_aliasAddress },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callSignalAddress },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rasAddress },
  { "endpointType"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointType },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "priority"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_priority },
  { "remoteExtensionAddress"      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_remoteExtensionAddress },
  { "destExtraCallInfo"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "alternateTransportAddresses" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateTransportAddresses },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_Endpoint(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_Endpoint, Endpoint_sequence);

  return offset;
}
static int dissect_alternateEndpoints_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Endpoint(tvb, offset, pinfo, tree, hf_h225_alternateEndpoints_item);
}
static int dissect_srcAlternatives_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Endpoint(tvb, offset, pinfo, tree, hf_h225_srcAlternatives_item);
}
static int dissect_destAlternatives_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_Endpoint(tvb, offset, pinfo, tree, hf_h225_destAlternatives_item);
}


static const value_string h225_UseSpecifiedTransport_vals[] = {
  {   0, "tcp" },
  {   1, "annexE" },
  {   2, "sctp" },
  { 0, NULL }
};

static const per_choice_t UseSpecifiedTransport_choice[] = {
  {   0, "tcp"                         , ASN1_EXTENSION_ROOT    , dissect_tcp },
  {   1, "annexE"                      , ASN1_EXTENSION_ROOT    , dissect_annexE_flg },
  {   2, "sctp"                        , ASN1_NOT_EXTENSION_ROOT, dissect_sctp_flg },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_UseSpecifiedTransport(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_UseSpecifiedTransport, UseSpecifiedTransport_choice, "UseSpecifiedTransport",
                              NULL);

  return offset;
}
static int dissect_useSpecifiedTransport(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UseSpecifiedTransport(tvb, offset, pinfo, tree, hf_h225_useSpecifiedTransport);
}

static const per_sequence_t AlternateGK_sequence[] = {
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_alternateGK_rasAddress },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "needToRegister"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_needToRegister },
  { "priority"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_priority },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AlternateGK(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AlternateGK, AlternateGK_sequence);

  return offset;
}
static int dissect_alternateGatekeeper_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AlternateGK(tvb, offset, pinfo, tree, hf_h225_alternateGatekeeper_item);
}


static int
dissect_h225_SEQUENCE_OF_AlternateGK(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_AlternateGK, dissect_alternateGatekeeper_item);

  return offset;
}
static int dissect_alternateGatekeeper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AlternateGK(tvb, offset, pinfo, tree, hf_h225_alternateGatekeeper);
}

static const per_sequence_t AltGKInfo_sequence[] = {
  { "alternateGatekeeper"         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_alternateGatekeeper },
  { "altGKisPermanent"            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_altGKisPermanent },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AltGKInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AltGKInfo, AltGKInfo_sequence);

  return offset;
}
static int dissect_altGKInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AltGKInfo(tvb, offset, pinfo, tree, hf_h225_altGKInfo);
}


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, "securityWrongSyncTime"       , ASN1_EXTENSION_ROOT    , dissect_securityWrongSyncTime },
  {   1, "securityReplay"              , ASN1_EXTENSION_ROOT    , dissect_securityReplay },
  {   2, "securityWrongGeneralID"      , ASN1_EXTENSION_ROOT    , dissect_securityWrongGeneralID },
  {   3, "securityWrongSendersID"      , ASN1_EXTENSION_ROOT    , dissect_securityWrongSendersID },
  {   4, "securityIntegrityFailed"     , ASN1_EXTENSION_ROOT    , dissect_securityIntegrityFailed },
  {   5, "securityWrongOID"            , ASN1_EXTENSION_ROOT    , dissect_securityWrongOID },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_SecurityErrors2(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_SecurityErrors2, SecurityErrors2_choice, "SecurityErrors2",
                              NULL);

  return offset;
}
static int dissect_securityError(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SecurityErrors2(tvb, offset, pinfo, tree, hf_h225_securityError);
}



static int
dissect_h225_RequestSeqNum(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 65535U, &(h225_pi->requestSeqNum), NULL, FALSE);


  return offset;
}
static int dissect_requestSeqNum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RequestSeqNum(tvb, offset, pinfo, tree, hf_h225_requestSeqNum);
}



static int
dissect_h225_TimeToLive(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 4294967295U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_timeToLive(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TimeToLive(tvb, offset, pinfo, tree, hf_h225_timeToLive);
}


static int
dissect_h225_H248PackagesDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    -1, -1,
                                    NULL, NULL);

  return offset;
}
static int dissect_supportedH248Packages_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_H248PackagesDescriptor(tvb, offset, pinfo, tree, hf_h225_supportedH248Packages_item);
}


static const value_string h225_EncryptIntAlg_vals[] = {
  {   0, "nonStandard" },
  {   1, "isoAlgorithm" },
  { 0, NULL }
};

static const per_choice_t EncryptIntAlg_choice[] = {
  {   0, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_nonStandard },
  {   1, "isoAlgorithm"                , ASN1_EXTENSION_ROOT    , dissect_isoAlgorithm },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_EncryptIntAlg(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_EncryptIntAlg, EncryptIntAlg_choice, "EncryptIntAlg",
                              NULL);

  return offset;
}
static int dissect_hMAC_iso10118_2_s(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EncryptIntAlg(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_2_s);
}
static int dissect_hMAC_iso10118_2_l(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_EncryptIntAlg(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_2_l);
}


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, "hMAC-MD5"                    , ASN1_EXTENSION_ROOT    , dissect_hMAC_MD5 },
  {   1, "hMAC-iso10118-2-s"           , ASN1_EXTENSION_ROOT    , dissect_hMAC_iso10118_2_s },
  {   2, "hMAC-iso10118-2-l"           , ASN1_EXTENSION_ROOT    , dissect_hMAC_iso10118_2_l },
  {   3, "hMAC-iso10118-3"             , ASN1_EXTENSION_ROOT    , dissect_hMAC_iso10118_3 },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_NonIsoIntegrityMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_NonIsoIntegrityMechanism, NonIsoIntegrityMechanism_choice, "NonIsoIntegrityMechanism",
                              NULL);

  return offset;
}
static int dissect_nonIsoIM(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonIsoIntegrityMechanism(tvb, offset, pinfo, tree, hf_h225_nonIsoIM);
}


static const value_string h225_IntegrityMechanism_vals[] = {
  {   0, "nonStandard" },
  {   1, "digSig" },
  {   2, "iso9797" },
  {   3, "nonIsoIM" },
  { 0, NULL }
};

static const per_choice_t IntegrityMechanism_choice[] = {
  {   0, "nonStandard"                 , ASN1_EXTENSION_ROOT    , dissect_nonStandard },
  {   1, "digSig"                      , ASN1_EXTENSION_ROOT    , dissect_digSig },
  {   2, "iso9797"                     , ASN1_EXTENSION_ROOT    , dissect_iso9797 },
  {   3, "nonIsoIM"                    , ASN1_EXTENSION_ROOT    , dissect_nonIsoIM },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_IntegrityMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_IntegrityMechanism, IntegrityMechanism_choice, "IntegrityMechanism",
                              NULL);

  return offset;
}
static int dissect_integrity_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_IntegrityMechanism(tvb, offset, pinfo, tree, hf_h225_integrity_item);
}


static int
dissect_h225_BIT_STRING(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_bit_string(tvb, offset, pinfo, tree, hf_index,
                                  -1, -1);

  return offset;
}
static int dissect_icv(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BIT_STRING(tvb, offset, pinfo, tree, hf_h225_icv);
}

static const per_sequence_t ICV_sequence[] = {
  { "algorithmOID"                , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_algorithmOID },
  { "icv"                         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_icv },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ICV(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ICV, ICV_sequence);

  return offset;
}
static int dissect_integrityCheckValue(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ICV(tvb, offset, pinfo, tree, hf_h225_integrityCheckValue);
}


static int
dissect_h225_FastStartToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_h235_ClearToken(tvb, offset, pinfo, tree, hf_index);

  return offset;
}

static const per_sequence_t CapacityReportingCapability_sequence[] = {
  { "canReportCallCapacity"       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_canReportCallCapacity },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CapacityReportingCapability(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CapacityReportingCapability, CapacityReportingCapability_sequence);

  return offset;
}
static int dissect_capacityReportingCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CapacityReportingCapability(tvb, offset, pinfo, tree, hf_h225_capacityReportingCapability);
}

static const per_sequence_t CapacityReportingSpecification_when_sequence[] = {
  { "callStart"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callStart },
  { "callEnd"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callEnd },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CapacityReportingSpecification_when(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CapacityReportingSpecification_when, CapacityReportingSpecification_when_sequence);

  return offset;
}
static int dissect_capacityReportingSpecification_when(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CapacityReportingSpecification_when(tvb, offset, pinfo, tree, hf_h225_capacityReportingSpecification_when);
}

static const per_sequence_t CapacityReportingSpecification_sequence[] = {
  { "when"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_capacityReportingSpecification_when },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CapacityReportingSpecification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CapacityReportingSpecification, CapacityReportingSpecification_sequence);

  return offset;
}
static int dissect_capacityReportingSpec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CapacityReportingSpecification(tvb, offset, pinfo, tree, hf_h225_capacityReportingSpec);
}

static const per_sequence_t RasUsageInfoTypes_sequence[] = {
  { "nonStandardUsageTypes"       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_nonStandardUsageTypes },
  { "startTime"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_startTime },
  { "endTime"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endTime_flg },
  { "terminationCause"            , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminationCause_flg },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RasUsageInfoTypes(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RasUsageInfoTypes, RasUsageInfoTypes_sequence);

  return offset;
}
static int dissect_required(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageInfoTypes(tvb, offset, pinfo, tree, hf_h225_required);
}
static int dissect_usageReportingCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageInfoTypes(tvb, offset, pinfo, tree, hf_h225_usageReportingCapability);
}
static int dissect_usageInfoRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageInfoTypes(tvb, offset, pinfo, tree, hf_h225_usageInfoRequested);
}

static const per_sequence_t RasUsageSpecification_when_sequence[] = {
  { "start"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_start },
  { "end"                         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_end },
  { "inIrr"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_inIrr },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RasUsageSpecification_when(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RasUsageSpecification_when, RasUsageSpecification_when_sequence);

  return offset;
}
static int dissect_when(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageSpecification_when(tvb, offset, pinfo, tree, hf_h225_when);
}

static const per_sequence_t RasUsageSpecificationcallStartingPoint_sequence[] = {
  { "alerting"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_alerting_flg },
  { "connect"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_connect_flg },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RasUsageSpecificationcallStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RasUsageSpecificationcallStartingPoint, RasUsageSpecificationcallStartingPoint_sequence);

  return offset;
}
static int dissect_ras_callStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageSpecificationcallStartingPoint(tvb, offset, pinfo, tree, hf_h225_ras_callStartingPoint);
}

static const per_sequence_t RasUsageSpecification_sequence[] = {
  { "when"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_when },
  { "callStartingPoint"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_ras_callStartingPoint },
  { "required"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_required },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RasUsageSpecification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RasUsageSpecification, RasUsageSpecification_sequence);

  return offset;
}
static int dissect_usageSpec_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageSpecification(tvb, offset, pinfo, tree, hf_h225_usageSpec_item);
}

static const per_sequence_t RasUsageInformation_sequence[] = {
  { "nonStandardUsageFields"      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_nonStandardUsageFields },
  { "alertingTime"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_alertingTime },
  { "connectTime"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_connectTime },
  { "endTime"                     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endTime },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RasUsageInformation(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RasUsageInformation, RasUsageInformation_sequence);

  return offset;
}
static int dissect_usageInformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RasUsageInformation(tvb, offset, pinfo, tree, hf_h225_usageInformation);
}


static int
dissect_h225_OCTET_STRING_SIZE_2_32(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_octet_string(tvb, offset, pinfo, tree, hf_index,
                                    2, 32,
                                    NULL, NULL);

  return offset;
}
static int dissect_releaseCompleteCauseIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_OCTET_STRING_SIZE_2_32(tvb, offset, pinfo, tree, hf_h225_releaseCompleteCauseIE);
}


static const value_string h225_CallTerminationCause_vals[] = {
  {   0, "releaseCompleteReason" },
  {   1, "releaseCompleteCauseIE" },
  { 0, NULL }
};

static const per_choice_t CallTerminationCause_choice[] = {
  {   0, "releaseCompleteReason"       , ASN1_EXTENSION_ROOT    , dissect_releaseCompleteReason },
  {   1, "releaseCompleteCauseIE"      , ASN1_EXTENSION_ROOT    , dissect_releaseCompleteCauseIE },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_CallTerminationCause(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_CallTerminationCause, CallTerminationCause_choice, "CallTerminationCause",
                              NULL);

  return offset;
}
static int dissect_terminationCause(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallTerminationCause(tvb, offset, pinfo, tree, hf_h225_terminationCause);
}

static const per_sequence_t TransportChannelInfo_sequence[] = {
  { "sendAddress"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sendAddress },
  { "recvAddress"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_recvAddress },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_TransportChannelInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);

  return offset;
}
static int dissect_rtcpAddresses(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_rtcpAddresses);
}
static int dissect_rtpAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_rtpAddress);
}
static int dissect_rtcpAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_rtcpAddress);
}
static int dissect_data_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_data_item);
}
static int dissect_h245(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_h245);
}
static int dissect_callSignaling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_callSignaling);
}

static const per_sequence_t BandwidthDetails_sequence[] = {
  { "sender"                      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sender },
  { "multicast"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_multicast },
  { "bandwidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandwidth },
  { "rtcpAddresses"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rtcpAddresses },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_BandwidthDetails(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_BandwidthDetails, BandwidthDetails_sequence);

  return offset;
}
static int dissect_bandwidthDetails_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandwidthDetails(tvb, offset, pinfo, tree, hf_h225_bandwidthDetails_item);
}

static const per_sequence_t CallCreditCapability_sequence[] = {
  { "canDisplayAmountString"      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_canDisplayAmountString },
  { "canEnforceDurationLimit"     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_canEnforceDurationLimit },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_CallCreditCapability(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_CallCreditCapability, CallCreditCapability_sequence);

  return offset;
}
static int dissect_callCreditCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallCreditCapability(tvb, offset, pinfo, tree, hf_h225_callCreditCapability);
}


static int
dissect_h225_PrintableString(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_PrintableString(tvb, offset, pinfo, tree, hf_index,
                                       -1, -1);

  return offset;
}
static int dissect_cname(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_PrintableString(tvb, offset, pinfo, tree, hf_h225_cname);
}



static int
dissect_h225_INTEGER_1_255(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 255U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_sessionId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_255(tvb, offset, pinfo, tree, hf_h225_sessionId);
}
static int dissect_associatedSessionIds_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_255(tvb, offset, pinfo, tree, hf_h225_associatedSessionIds_item);
}
static int dissect_hopCount(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_255(tvb, offset, pinfo, tree, hf_h225_hopCount);
}


static int
dissect_h225_T_associatedSessionIds(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_associatedSessionIds, dissect_associatedSessionIds_item);

  return offset;
}
static int dissect_associatedSessionIds(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_associatedSessionIds(tvb, offset, pinfo, tree, hf_h225_associatedSessionIds);
}

static const per_sequence_t RTPSession_sequence[] = {
  { "rtpAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rtpAddress },
  { "rtcpAddress"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rtcpAddress },
  { "cname"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_cname },
  { "ssrc"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_ssrc },
  { "sessionId"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sessionId },
  { "associatedSessionIds"        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_associatedSessionIds },
  { "multicast"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_multicast_flg },
  { "bandwidth"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_bandwidth },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RTPSession(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RTPSession, RTPSession_sequence);

  return offset;
}
static int dissect_audio_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RTPSession(tvb, offset, pinfo, tree, hf_h225_audio_item);
}
static int dissect_video_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RTPSession(tvb, offset, pinfo, tree, hf_h225_video_item);
}


static int
dissect_h225_SEQUENCE_OF_Endpoint(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_Endpoint, dissect_alternateEndpoints_item);

  return offset;
}
static int dissect_alternateEndpoints(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_Endpoint(tvb, offset, pinfo, tree, hf_h225_alternateEndpoints);
}
static int dissect_srcAlternatives(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_Endpoint(tvb, offset, pinfo, tree, hf_h225_srcAlternatives);
}
static int dissect_destAlternatives(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_Endpoint(tvb, offset, pinfo, tree, hf_h225_destAlternatives);
}


static int
dissect_h225_SEQUENCE_OF_AuthenticationMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_AuthenticationMechanism, dissect_authenticationCapability_item);

  return offset;
}
static int dissect_authenticationCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AuthenticationMechanism(tvb, offset, pinfo, tree, hf_h225_authenticationCapability);
}


static int
dissect_h225_T_algorithmOIDs(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_algorithmOIDs, dissect_algorithmOIDs_item);

  return offset;
}
static int dissect_algorithmOIDs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_algorithmOIDs(tvb, offset, pinfo, tree, hf_h225_algorithmOIDs);
}


static int
dissect_h225_SEQUENCE_OF_IntegrityMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_IntegrityMechanism, dissect_integrity_item);

  return offset;
}
static int dissect_integrity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_IntegrityMechanism(tvb, offset, pinfo, tree, hf_h225_integrity);
}

static const per_sequence_t GatekeeperRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_gatekeeperRequest_rasAddress },
  { "endpointType"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointType },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "callServices"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callServices },
  { "endpointAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointAlias },
  { "alternateEndpoints"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateEndpoints },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "authenticationCapability"    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_authenticationCapability },
  { "algorithmOIDs"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_algorithmOIDs },
  { "integrity"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrity },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "supportsAltGK"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportsAltGK },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GatekeeperRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GatekeeperRequest, GatekeeperRequest_sequence);

  return offset;
}
static int dissect_gatekeeperRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperRequest(tvb, offset, pinfo, tree, hf_h225_gatekeeperRequest);
}

static const per_sequence_t GatekeeperConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_gatekeeperConfirm_rasAddress },
  { "alternateGatekeeper"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateGatekeeper },
  { "authenticationMode"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_authenticationMode },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "algorithmOID"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_algorithmOID },
  { "integrity"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrity },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GatekeeperConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GatekeeperConfirm, GatekeeperConfirm_sequence);

  return offset;
}
static int dissect_gatekeeperConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperConfirm(tvb, offset, pinfo, tree, hf_h225_gatekeeperConfirm);
}


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, "resourceUnavailable"         , ASN1_EXTENSION_ROOT    , dissect_resourceUnavailable },
  {   1, "terminalExcluded"            , ASN1_EXTENSION_ROOT    , dissect_terminalExcluded },
  {   2, "invalidRevision"             , ASN1_EXTENSION_ROOT    , dissect_invalidRevision },
  {   3, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   4, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   5, "genericDataReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_genericDataReason },
  {   6, "neededFeatureNotSupported"   , ASN1_NOT_EXTENSION_ROOT, dissect_neededFeatureNotSupported },
  {   7, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_gkRej_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_GatekeeperRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_GatekeeperRejectReason, GatekeeperRejectReason_choice, "GatekeeperRejectReason",
                              &value);
  h225_pi->reason = value;


  return offset;
}
static int dissect_gatekeeperRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperRejectReason(tvb, offset, pinfo, tree, hf_h225_gatekeeperRejectReason);
}

static const per_sequence_t GatekeeperReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_gatekeeperRejectReason },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_GatekeeperReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_GatekeeperReject, GatekeeperReject_sequence);

  return offset;
}
static int dissect_gatekeeperReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_GatekeeperReject(tvb, offset, pinfo, tree, hf_h225_gatekeeperReject);
}


static int
dissect_h225_SEQUENCE_OF_AddressPattern(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_AddressPattern, dissect_terminalAliasPattern_item);

  return offset;
}
static int dissect_terminalAliasPattern(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AddressPattern(tvb, offset, pinfo, tree, hf_h225_terminalAliasPattern);
}
static int dissect_endpointAliasPattern(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AddressPattern(tvb, offset, pinfo, tree, hf_h225_endpointAliasPattern);
}


static int
dissect_h225_SEQUENCE_OF_H248PackagesDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_H248PackagesDescriptor, dissect_supportedH248Packages_item);

  return offset;
}
static int dissect_supportedH248Packages(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_H248PackagesDescriptor(tvb, offset, pinfo, tree, hf_h225_supportedH248Packages);
}

static const per_sequence_t RegistrationRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "discoveryComplete"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_discoveryComplete },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callSignalAddress },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rasAddress },
  { "terminalType"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_terminalType },
  { "terminalAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminalAlias },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "endpointVendor"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointVendor },
  { "alternateEndpoints"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateEndpoints },
  { "timeToLive"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_timeToLive },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "keepAlive"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_keepAlive },
  { "endpointIdentifier"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_endpointIdentifier },
  { "willSupplyUUIEs"             , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_willSupplyUUIEs },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "alternateTransportAddresses" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateTransportAddresses },
  { "additiveRegistration"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_additiveRegistration },
  { "terminalAliasPattern"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_terminalAliasPattern },
  { "supportsAltGK"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportsAltGK },
  { "usageReportingCapability"    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageReportingCapability },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_multipleCalls },
  { "supportedH248Packages"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedH248Packages },
  { "callCreditCapability"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callCreditCapability },
  { "capacityReportingCapability" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacityReportingCapability },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "restart"                     , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_restart },
  { "supportsACFSequences"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportsACFSequences },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RegistrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RegistrationRequest, RegistrationRequest_sequence);

  return offset;
}
static int dissect_registrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RegistrationRequest(tvb, offset, pinfo, tree, hf_h225_registrationRequest);
}



static int
dissect_h225_INTEGER_1_65535(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
                                           1U, 65535U, NULL, NULL, FALSE);

  return offset;
}
static int dissect_irrFrequencyInCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_65535(tvb, offset, pinfo, tree, hf_h225_irrFrequencyInCall);
}
static int dissect_irrFrequency(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_65535(tvb, offset, pinfo, tree, hf_h225_irrFrequency);
}
static int dissect_delay(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_INTEGER_1_65535(tvb, offset, pinfo, tree, hf_h225_delay);
}

static const per_sequence_t T_preGrantedARQ_sequence[] = {
  { "makeCall"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_makeCall },
  { "useGKCallSignalAddressToMakeCall", ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_useGKCallSignalAddressToMakeCall },
  { "answerCall"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_answerCall },
  { "useGKCallSignalAddressToAnswer", ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_useGKCallSignalAddressToAnswer },
  { "irrFrequencyInCall"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_irrFrequencyInCall },
  { "totalBandwidthRestriction"   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_totalBandwidthRestriction },
  { "alternateTransportAddresses" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateTransportAddresses },
  { "useSpecifiedTransport"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_useSpecifiedTransport },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_preGrantedARQ(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_preGrantedARQ, T_preGrantedARQ_sequence);

  return offset;
}
static int dissect_preGrantedARQ(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_preGrantedARQ(tvb, offset, pinfo, tree, hf_h225_preGrantedARQ);
}


static int
dissect_h225_SEQUENCE_OF_RasUsageSpecification(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_RasUsageSpecification, dissect_usageSpec_item);

  return offset;
}
static int dissect_usageSpec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_RasUsageSpecification(tvb, offset, pinfo, tree, hf_h225_usageSpec);
}

static const per_sequence_t RegistrationConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callSignalAddress },
  { "terminalAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminalAlias },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "alternateGatekeeper"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateGatekeeper },
  { "timeToLive"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_timeToLive },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "willRespondToIRR"            , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_willRespondToIRR },
  { "preGrantedARQ"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_preGrantedARQ },
  { "maintainConnection"          , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_maintainConnection },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "supportsAdditiveRegistration", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportsAdditiveRegistration },
  { "terminalAliasPattern"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_terminalAliasPattern },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedPrefixes },
  { "usageSpec"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageSpec },
  { "featureServerAlias"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureServerAlias },
  { "capacityReportingSpec"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacityReportingSpec },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RegistrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RegistrationConfirm, RegistrationConfirm_sequence);

  return offset;
}
static int dissect_registrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RegistrationConfirm(tvb, offset, pinfo, tree, hf_h225_registrationConfirm);
}

static const per_sequence_t T_invalidTerminalAliases_sequence[] = {
  { "terminalAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminalAlias },
  { "terminalAliasPattern"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_terminalAliasPattern },
  { "supportedPrefixes"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_supportedPrefixes },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_invalidTerminalAliases(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_invalidTerminalAliases, T_invalidTerminalAliases_sequence);

  return offset;
}
static int dissect_invalidTerminalAliases(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_invalidTerminalAliases(tvb, offset, pinfo, tree, hf_h225_invalidTerminalAliases);
}


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" },
  { 0, NULL }
};

static const per_choice_t RegistrationRejectReason_choice[] = {
  {   0, "discoveryRequired"           , ASN1_EXTENSION_ROOT    , dissect_discoveryRequired },
  {   1, "invalidRevision"             , ASN1_EXTENSION_ROOT    , dissect_invalidRevision },
  {   2, "invalidCallSignalAddress"    , ASN1_EXTENSION_ROOT    , dissect_invalidCallSignalAddress },
  {   3, "invalidRASAddress"           , ASN1_EXTENSION_ROOT    , dissect_invalidRASAddress },
  {   4, "duplicateAlias"              , ASN1_EXTENSION_ROOT    , dissect_duplicateAlias },
  {   5, "invalidTerminalType"         , ASN1_EXTENSION_ROOT    , dissect_invalidTerminalType },
  {   6, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   7, "transportNotSupported"       , ASN1_EXTENSION_ROOT    , dissect_transportNotSupported },
  {   8, "transportQOSNotSupported"    , ASN1_NOT_EXTENSION_ROOT, dissect_transportQOSNotSupported },
  {   9, "resourceUnavailable"         , ASN1_NOT_EXTENSION_ROOT, dissect_resourceUnavailable },
  {  10, "invalidAlias"                , ASN1_NOT_EXTENSION_ROOT, dissect_invalidAlias },
  {  11, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {  12, "fullRegistrationRequired"    , ASN1_NOT_EXTENSION_ROOT, dissect_fullRegistrationRequired },
  {  13, "additiveRegistrationNotSupported", ASN1_NOT_EXTENSION_ROOT, dissect_additiveRegistrationNotSupported },
  {  14, "invalidTerminalAliases"      , ASN1_NOT_EXTENSION_ROOT, dissect_invalidTerminalAliases },
  {  15, "genericDataReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_genericDataReason },
  {  16, "neededFeatureNotSupported"   , ASN1_NOT_EXTENSION_ROOT, dissect_neededFeatureNotSupported },
  {  17, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_reg_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_RegistrationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;

  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_RegistrationRejectReason, RegistrationRejectReason_choice, "RegistrationRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_registrationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RegistrationRejectReason(tvb, offset, pinfo, tree, hf_h225_registrationRejectReason);
}

static const per_sequence_t RegistrationReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_registrationRejectReason },
  { "gatekeeperIdentifier"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RegistrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RegistrationReject, RegistrationReject_sequence);

  return offset;
}
static int dissect_registrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RegistrationReject(tvb, offset, pinfo, tree, hf_h225_registrationReject);
}


const value_string UnregRequestReason_vals[] = {
  {   0, "reregistrationRequired" },
  {   1, "ttlExpired" },
  {   2, "securityDenial" },
  {   3, "undefinedReason" },
  {   4, "maintenance" },
  {   5, "securityError" },
  { 0, NULL }
};

static const per_choice_t UnregRequestReason_choice[] = {
  {   0, "reregistrationRequired"      , ASN1_EXTENSION_ROOT    , dissect_reregistrationRequired },
  {   1, "ttlExpired"                  , ASN1_EXTENSION_ROOT    , dissect_ttlExpired },
  {   2, "securityDenial"              , ASN1_EXTENSION_ROOT    , dissect_securityDenial },
  {   3, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   4, "maintenance"                 , ASN1_NOT_EXTENSION_ROOT, dissect_maintenance },
  {   5, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_UnregRequestReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_UnregRequestReason, UnregRequestReason_choice, "UnregRequestReason",
                              &value);
  h225_pi->reason = value;


  return offset;
}
static int dissect_unregRequestReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnregRequestReason(tvb, offset, pinfo, tree, hf_h225_unregRequestReason);
}

static const per_sequence_t UnregistrationRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callSignalAddress },
  { "endpointAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointAlias },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointIdentifier },
  { "alternateEndpoints"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateEndpoints },
  { "gatekeeperIdentifier"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "reason"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_unregRequestReason },
  { "endpointAliasPattern"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_endpointAliasPattern },
  { "supportedPrefixes"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedPrefixes },
  { "alternateGatekeeper"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateGatekeeper },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_UnregistrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_UnregistrationRequest, UnregistrationRequest_sequence);

  return offset;
}
static int dissect_unregistrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnregistrationRequest(tvb, offset, pinfo, tree, hf_h225_unregistrationRequest);
}

static const per_sequence_t UnregistrationConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_UnregistrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_UnregistrationConfirm, UnregistrationConfirm_sequence);

  return offset;
}
static int dissect_unregistrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnregistrationConfirm(tvb, offset, pinfo, tree, hf_h225_unregistrationConfirm);
}


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, "notCurrentlyRegistered"      , ASN1_EXTENSION_ROOT    , dissect_notCurrentlyRegistered },
  {   1, "callInProgress"              , ASN1_EXTENSION_ROOT    , dissect_callInProgress },
  {   2, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   3, "permissionDenied"            , ASN1_NOT_EXTENSION_ROOT, dissect_permissionDenied },
  {   4, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   5, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_UnregRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;

  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_UnregRejectReason, UnregRejectReason_choice, "UnregRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_unregRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnregRejectReason(tvb, offset, pinfo, tree, hf_h225_unregRejectReason);
}

static const per_sequence_t UnregistrationReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_unregRejectReason },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_UnregistrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_UnregistrationReject, UnregistrationReject_sequence);

  return offset;
}
static int dissect_unregistrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnregistrationReject(tvb, offset, pinfo, tree, hf_h225_unregistrationReject);
}


static const value_string h225_CallModel_vals[] = {
  {   0, "direct" },
  {   1, "gatekeeperRouted" },
  { 0, NULL }
};

static const per_choice_t CallModel_choice[] = {
  {   0, "direct"                      , ASN1_EXTENSION_ROOT    , dissect_direct },
  {   1, "gatekeeperRouted"            , ASN1_EXTENSION_ROOT    , dissect_gatekeeperRouted },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_CallModel(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_CallModel, CallModel_choice, "CallModel",
                              NULL);

  return offset;
}
static int dissect_callModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_CallModel(tvb, offset, pinfo, tree, hf_h225_callModel);
}


static int
dissect_h225_DestinationInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {

  h225_pi->is_destinationInfo = TRUE;
  offset = dissect_h225_AliasAddress(tvb, offset, pinfo, tree, hf_index);

  return offset;
}
static int dissect_DestinationInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DestinationInfo_item(tvb, offset, pinfo, tree, hf_h225_DestinationInfo_item);
}


static int
dissect_h225_DestinationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_DestinationInfo, dissect_DestinationInfo_item);

  return offset;
}
static int dissect_destinationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DestinationInfo(tvb, offset, pinfo, tree, hf_h225_destinationInfo);
}


static const value_string h225_TransportQOS_vals[] = {
  {   0, "endpointControlled" },
  {   1, "gatekeeperControlled" },
  {   2, "noControl" },
  { 0, NULL }
};

static const per_choice_t TransportQOS_choice[] = {
  {   0, "endpointControlled"          , ASN1_EXTENSION_ROOT    , dissect_endpointControlled },
  {   1, "gatekeeperControlled"        , ASN1_EXTENSION_ROOT    , dissect_gatekeeperControlled },
  {   2, "noControl"                   , ASN1_EXTENSION_ROOT    , dissect_noControl },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_TransportQOS(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_TransportQOS, TransportQOS_choice, "TransportQOS",
                              NULL);

  return offset;
}
static int dissect_transportQOS(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_TransportQOS(tvb, offset, pinfo, tree, hf_h225_transportQOS);
}

static const per_sequence_t AdmissionRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "callType"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callType },
  { "callModel"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callModel },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destinationInfo },
  { "destCallSignalAddress"       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destCallSignalAddress },
  { "destExtraCallInfo"           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "srcInfo"                     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_srcInfo },
  { "srcCallSignalAddress"        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_srcCallSignalAddress },
  { "bandWidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandWidth },
  { "callReferenceValue"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callReferenceValue },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "callServices"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callServices },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "activeMC"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_activeMC },
  { "answerCall"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_answerCall },
  { "canMapAlias"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_canMapAlias },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "srcAlternatives"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_srcAlternatives },
  { "destAlternatives"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destAlternatives },
  { "gatekeeperIdentifier"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "transportQOS"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_transportQOS },
  { "willSupplyUUIEs"             , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_willSupplyUUIEs },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "gatewayDataRate"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatewayDataRate },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "desiredProtocols"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredProtocols },
  { "desiredTunnelledProtocol"    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredTunnelledProtocol },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "canMapSrcAlias"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_canMapSrcAlias },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AdmissionRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AdmissionRequest, AdmissionRequest_sequence);

  return offset;
}
static int dissect_admissionRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AdmissionRequest(tvb, offset, pinfo, tree, hf_h225_admissionRequest);
}

static const per_sequence_t UUIEsRequested_sequence[] = {
  { "setup"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_setup_bool },
  { "callProceeding"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callProceeding_flg },
  { "connect"                     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_connect_bool },
  { "alerting"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_alerting_bool },
  { "information"                 , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_information_bool },
  { "releaseComplete"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_releaseComplete_bool },
  { "facility"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_facility_bool },
  { "progress"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_progress_bool },
  { "empty"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_empty },
  { "status"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_status_bool },
  { "statusInquiry"               , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_statusInquiry_bool },
  { "setupAcknowledge"            , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_setupAcknowledge_bool },
  { "notify"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_notify_bool },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_UUIEsRequested(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_UUIEsRequested, UUIEsRequested_sequence);

  return offset;
}
static int dissect_uuiesRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UUIEsRequested(tvb, offset, pinfo, tree, hf_h225_uuiesRequested);
}

static const per_sequence_t AdmissionConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "bandWidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandWidth },
  { "callModel"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callModel },
  { "destCallSignalAddress"       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_destCallSignalAddress },
  { "irrFrequency"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_irrFrequency },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "destinationInfo"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destinationInfo },
  { "destExtraCallInfo"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "destinationType"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destinationType },
  { "remoteExtensionAddress"      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_remoteExtensionAddress },
  { "alternateEndpoints"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateEndpoints },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "transportQOS"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_transportQOS },
  { "willRespondToIRR"            , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_willRespondToIRR },
  { "uuiesRequested"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_uuiesRequested },
  { "language"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_language },
  { "alternateTransportAddresses" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateTransportAddresses },
  { "useSpecifiedTransport"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_useSpecifiedTransport },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "usageSpec"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageSpec },
  { "supportedProtocols"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedProtocols },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_multipleCalls },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "modifiedSrcInfo"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_modifiedSrcInfo },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AdmissionConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AdmissionConfirm, AdmissionConfirm_sequence);

  return offset;
}
static int dissect_admissionConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AdmissionConfirm(tvb, offset, pinfo, tree, hf_h225_admissionConfirm);
}
static int dissect_admissionConfirmSequence_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AdmissionConfirm(tvb, offset, pinfo, tree, hf_h225_admissionConfirmSequence_item);
}


static int
dissect_h225_SEQUENCE_OF_PartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_PartyNumber, dissect_routeCallToSCN_item);

  return offset;
}
static int dissect_routeCallToSCN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_PartyNumber(tvb, offset, pinfo, tree, hf_h225_routeCallToSCN);
}
static int dissect_routeCalltoSCN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_PartyNumber(tvb, offset, pinfo, tree, hf_h225_routeCalltoSCN);
}


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" },
  { 0, NULL }
};

static const per_choice_t AdmissionRejectReason_choice[] = {
  {   0, "calledPartyNotRegistered"    , ASN1_EXTENSION_ROOT    , dissect_calledPartyNotRegistered },
  {   1, "invalidPermission"           , ASN1_EXTENSION_ROOT    , dissect_invalidPermission },
  {   2, "requestDenied"               , ASN1_EXTENSION_ROOT    , dissect_requestDenied },
  {   3, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   4, "callerNotRegistered"         , ASN1_EXTENSION_ROOT    , dissect_callerNotRegistered },
  {   5, "routeCallToGatekeeper"       , ASN1_EXTENSION_ROOT    , dissect_routeCallToGatekeeper },
  {   6, "invalidEndpointIdentifier"   , ASN1_EXTENSION_ROOT    , dissect_invalidEndpointIdentifier },
  {   7, "resourceUnavailable"         , ASN1_EXTENSION_ROOT    , dissect_resourceUnavailable },
  {   8, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   9, "qosControlNotSupported"      , ASN1_NOT_EXTENSION_ROOT, dissect_qosControlNotSupported },
  {  10, "incompleteAddress"           , ASN1_NOT_EXTENSION_ROOT, dissect_incompleteAddress },
  {  11, "aliasesInconsistent"         , ASN1_NOT_EXTENSION_ROOT, dissect_aliasesInconsistent },
  {  12, "routeCallToSCN"              , ASN1_NOT_EXTENSION_ROOT, dissect_routeCallToSCN },
  {  13, "exceedsCallCapacity"         , ASN1_NOT_EXTENSION_ROOT, dissect_exceedsCallCapacity },
  {  14, "collectDestination"          , ASN1_NOT_EXTENSION_ROOT, dissect_collectDestination },
  {  15, "collectPIN"                  , ASN1_NOT_EXTENSION_ROOT, dissect_collectPIN },
  {  16, "genericDataReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_genericDataReason },
  {  17, "neededFeatureNotSupported"   , ASN1_NOT_EXTENSION_ROOT, dissect_neededFeatureNotSupported },
  {  18, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  {  19, "securityDHmismatch"          , ASN1_NOT_EXTENSION_ROOT, dissect_securityDHmismatch },
  {  20, "noRouteToDestination"        , ASN1_NOT_EXTENSION_ROOT, dissect_noRouteToDestination },
  {  21, "unallocatedNumber"           , ASN1_NOT_EXTENSION_ROOT, dissect_unallocatedNumber },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_AdmissionRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;

  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_AdmissionRejectReason, AdmissionRejectReason_choice, "AdmissionRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_rejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AdmissionRejectReason(tvb, offset, pinfo, tree, hf_h225_rejectReason);
}

static const per_sequence_t AdmissionReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rejectReason },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "callSignalAddress"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callSignalAddress },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_AdmissionReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_AdmissionReject, AdmissionReject_sequence);

  return offset;
}
static int dissect_admissionReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_AdmissionReject(tvb, offset, pinfo, tree, hf_h225_admissionReject);
}


static int
dissect_h225_SEQUENCE_OF_BandwidthDetails(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_BandwidthDetails, dissect_bandwidthDetails_item);

  return offset;
}
static int dissect_bandwidthDetails(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_BandwidthDetails(tvb, offset, pinfo, tree, hf_h225_bandwidthDetails);
}

static const per_sequence_t BandwidthRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "callReferenceValue"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callReferenceValue },
  { "callType"                    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callType },
  { "bandWidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandWidth },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "gatekeeperIdentifier"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "answeredCall"                , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_answeredCall },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "usageInformation"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageInformation },
  { "bandwidthDetails"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_bandwidthDetails },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_BandwidthRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_BandwidthRequest, BandwidthRequest_sequence);

  return offset;
}
static int dissect_bandwidthRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandwidthRequest(tvb, offset, pinfo, tree, hf_h225_bandwidthRequest);
}

static const per_sequence_t BandwidthConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "bandWidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandWidth },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_BandwidthConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_BandwidthConfirm, BandwidthConfirm_sequence);

  return offset;
}
static int dissect_bandwidthConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandwidthConfirm(tvb, offset, pinfo, tree, hf_h225_bandwidthConfirm);
}


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, "notBound"                    , ASN1_EXTENSION_ROOT    , dissect_notBound },
  {   1, "invalidConferenceID"         , ASN1_EXTENSION_ROOT    , dissect_invalidConferenceID },
  {   2, "invalidPermission"           , ASN1_EXTENSION_ROOT    , dissect_invalidPermission },
  {   3, "insufficientResources"       , ASN1_EXTENSION_ROOT    , dissect_insufficientResources },
  {   4, "invalidRevision"             , ASN1_EXTENSION_ROOT    , dissect_invalidRevision },
  {   5, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   6, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   7, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_BandRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_BandRejectReason, BandRejectReason_choice, "BandRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_bandRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandRejectReason(tvb, offset, pinfo, tree, hf_h225_bandRejectReason);
}

static const per_sequence_t BandwidthReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandRejectReason },
  { "allowedBandWidth"            , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_allowedBandWidth },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_BandwidthReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_BandwidthReject, BandwidthReject_sequence);

  return offset;
}
static int dissect_bandwidthReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_BandwidthReject(tvb, offset, pinfo, tree, hf_h225_bandwidthReject);
}


const value_string DisengageReason_vals[] = {
  {   0, "forcedDrop" },
  {   1, "normalDrop" },
  {   2, "undefinedReason" },
  { 0, NULL }
};

static const per_choice_t DisengageReason_choice[] = {
  {   0, "forcedDrop"                  , ASN1_EXTENSION_ROOT    , dissect_forcedDrop },
  {   1, "normalDrop"                  , ASN1_EXTENSION_ROOT    , dissect_normalDrop },
  {   2, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_DisengageReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_DisengageReason, DisengageReason_choice, "DisengageReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_disengageReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DisengageReason(tvb, offset, pinfo, tree, hf_h225_disengageReason);
}

static const per_sequence_t DisengageRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "callReferenceValue"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callReferenceValue },
  { "disengageReason"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_disengageReason },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "gatekeeperIdentifier"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "answeredCall"                , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_answeredCall },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "usageInformation"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageInformation },
  { "terminationCause"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_terminationCause },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_DisengageRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_DisengageRequest, DisengageRequest_sequence);

  return offset;
}
static int dissect_disengageRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DisengageRequest(tvb, offset, pinfo, tree, hf_h225_disengageRequest);
}

static const per_sequence_t DisengageConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "usageInformation"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageInformation },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_DisengageConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_DisengageConfirm, DisengageConfirm_sequence);

  return offset;
}
static int dissect_disengageConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DisengageConfirm(tvb, offset, pinfo, tree, hf_h225_disengageConfirm);
}


const value_string DisengageRejectReason_vals[] = {
  {   0, "notRegistered" },
  {   1, "requestToDropOther" },
  {   2, "securityDenial" },
  {   3, "securityError" },
  { 0, NULL }
};

static const per_choice_t DisengageRejectReason_choice[] = {
  {   0, "notRegistered"               , ASN1_EXTENSION_ROOT    , dissect_notRegistered },
  {   1, "requestToDropOther"          , ASN1_EXTENSION_ROOT    , dissect_requestToDropOther },
  {   2, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   3, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_DisengageRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_DisengageRejectReason, DisengageRejectReason_choice, "DisengageRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_disengageRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DisengageRejectReason(tvb, offset, pinfo, tree, hf_h225_disengageRejectReason);
}

static const per_sequence_t DisengageReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_disengageRejectReason },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_DisengageReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_DisengageReject, DisengageReject_sequence);

  return offset;
}
static int dissect_disengageReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_DisengageReject(tvb, offset, pinfo, tree, hf_h225_disengageReject);
}

static const per_sequence_t LocationRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointIdentifier },
  { "destinationInfo"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_destinationInfo },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "replyAddress"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_replyAddress },
  { "sourceInfo"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_sourceInfo },
  { "canMapAlias"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_canMapAlias },
  { "gatekeeperIdentifier"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_gatekeeperIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "desiredProtocols"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredProtocols },
  { "desiredTunnelledProtocol"    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_desiredTunnelledProtocol },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "hopCount"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_hopCount },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callIdentifier },
  { "bandWidth"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_bandWidth },
  { "sourceEndpointInfo"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_sourceEndpointInfo },
  { "canMapSrcAlias"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_canMapSrcAlias },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_LocationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_LocationRequest, LocationRequest_sequence);

  return offset;
}
static int dissect_locationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_LocationRequest(tvb, offset, pinfo, tree, hf_h225_locationRequest);
}

static const per_sequence_t LocationConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_locationConfirm_callSignalAddress },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_locationConfirm_rasAddress },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "destinationInfo"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destinationInfo },
  { "destExtraCallInfo"           , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destExtraCallInfo },
  { "destinationType"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_destinationType },
  { "remoteExtensionAddress"      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_remoteExtensionAddress },
  { "alternateEndpoints"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateEndpoints },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "alternateTransportAddresses" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_alternateTransportAddresses },
  { "supportedProtocols"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_supportedProtocols },
  { "multipleCalls"               , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_multipleCalls },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { "modifiedSrcInfo"             , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_modifiedSrcInfo },
  { "bandWidth"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_bandWidth },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_LocationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_LocationConfirm, LocationConfirm_sequence);

  return offset;
}
static int dissect_locationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_LocationConfirm(tvb, offset, pinfo, tree, hf_h225_locationConfirm);
}


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, "notRegistered"               , ASN1_EXTENSION_ROOT    , dissect_notRegistered },
  {   1, "invalidPermission"           , ASN1_EXTENSION_ROOT    , dissect_invalidPermission },
  {   2, "requestDenied"               , ASN1_EXTENSION_ROOT    , dissect_requestDenied },
  {   3, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   4, "securityDenial"              , ASN1_NOT_EXTENSION_ROOT, dissect_securityDenial },
  {   5, "aliasesInconsistent"         , ASN1_NOT_EXTENSION_ROOT, dissect_aliasesInconsistent },
  {   6, "routeCalltoSCN"              , ASN1_NOT_EXTENSION_ROOT, dissect_routeCalltoSCN },
  {   7, "resourceUnavailable"         , ASN1_NOT_EXTENSION_ROOT, dissect_resourceUnavailable },
  {   8, "genericDataReason"           , ASN1_NOT_EXTENSION_ROOT, dissect_genericDataReason },
  {   9, "neededFeatureNotSupported"   , ASN1_NOT_EXTENSION_ROOT, dissect_neededFeatureNotSupported },
  {  10, "hopCountExceeded"            , ASN1_NOT_EXTENSION_ROOT, dissect_hopCountExceeded },
  {  11, "incompleteAddress"           , ASN1_NOT_EXTENSION_ROOT, dissect_incompleteAddress },
  {  12, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  {  13, "securityDHmismatch"          , ASN1_NOT_EXTENSION_ROOT, dissect_securityDHmismatch },
  {  14, "noRouteToDestination"        , ASN1_NOT_EXTENSION_ROOT, dissect_noRouteToDestination },
  {  15, "unallocatedNumber"           , ASN1_NOT_EXTENSION_ROOT, dissect_unallocatedNumber },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_LocationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;

  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_LocationRejectReason, LocationRejectReason_choice, "LocationRejectReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_locationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_LocationRejectReason(tvb, offset, pinfo, tree, hf_h225_locationRejectReason);
}

static const per_sequence_t LocationReject_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "rejectReason"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_locationRejectReason },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "altGKInfo"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { "serviceControl"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_serviceControl },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_LocationReject(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_LocationReject, LocationReject_sequence);

  return offset;
}
static int dissect_locationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_LocationReject(tvb, offset, pinfo, tree, hf_h225_locationReject);
}

static const per_sequence_t InfoRequest_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "callReferenceValue"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callReferenceValue },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "replyAddress"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_replyAddress },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "uuiesRequested"              , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_uuiesRequested },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "usageInfoRequested"          , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageInfoRequested },
  { "segmentedResponseSupported"  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_segmentedResponseSupported },
  { "nextSegmentRequested"        , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_nextSegmentRequested },
  { "capacityInfoRequested"       , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacityInfoRequested },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_InfoRequest(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_InfoRequest, InfoRequest_sequence);

  return offset;
}
static int dissect_infoRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequest(tvb, offset, pinfo, tree, hf_h225_infoRequest);
}


static int
dissect_h225_SEQUENCE_OF_RTPSession(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_RTPSession, dissect_audio_item);

  return offset;
}
static int dissect_audio(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_RTPSession(tvb, offset, pinfo, tree, hf_h225_audio);
}
static int dissect_video(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_RTPSession(tvb, offset, pinfo, tree, hf_h225_video);
}


static int
dissect_h225_SEQUENCE_OF_TransportChannelInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_TransportChannelInfo, dissect_data_item);

  return offset;
}
static int dissect_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_TransportChannelInfo(tvb, offset, pinfo, tree, hf_h225_data);
}


static int
dissect_h225_SEQUENCE_OF_ConferenceIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_ConferenceIdentifier, dissect_substituteConfIDs_item);

  return offset;
}
static int dissect_substituteConfIDs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_ConferenceIdentifier(tvb, offset, pinfo, tree, hf_h225_substituteConfIDs);
}

static const per_sequence_t T_pdu_item_sequence[] = {
  { "h323pdu"                     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h323pdu },
  { "sent"                        , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sent },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_pdu_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_pdu_item, T_pdu_item_sequence);

  return offset;
}
static int dissect_pdu_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_pdu_item(tvb, offset, pinfo, tree, hf_h225_pdu_item);
}


static int
dissect_h225_T_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_pdu, dissect_pdu_item);

  return offset;
}
static int dissect_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_pdu(tvb, offset, pinfo, tree, hf_h225_pdu);
}

static const per_sequence_t T_perCallInfo_item_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "callReferenceValue"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callReferenceValue },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "originator"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_originator },
  { "audio"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_audio },
  { "video"                       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_video },
  { "data"                        , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_data },
  { "h245"                        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245 },
  { "callSignaling"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callSignaling },
  { "callType"                    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callType },
  { "bandWidth"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_bandWidth },
  { "callModel"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callModel },
  { "callIdentifier"              , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "substituteConfIDs"           , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_substituteConfIDs },
  { "pdu"                         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_pdu },
  { "callLinkage"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_callLinkage },
  { "usageInformation"            , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_usageInformation },
  { "circuitInfo"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_circuitInfo },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_perCallInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_perCallInfo_item, T_perCallInfo_item_sequence);

  return offset;
}
static int dissect_perCallInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_perCallInfo_item(tvb, offset, pinfo, tree, hf_h225_perCallInfo_item);
}


static int
dissect_h225_T_perCallInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_T_perCallInfo, dissect_perCallInfo_item);

  return offset;
}
static int dissect_perCallInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_perCallInfo(tvb, offset, pinfo, tree, hf_h225_perCallInfo);
}


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, "complete"                    , ASN1_EXTENSION_ROOT    , dissect_complete },
  {   1, "incomplete"                  , ASN1_EXTENSION_ROOT    , dissect_incomplete },
  {   2, "segment"                     , ASN1_EXTENSION_ROOT    , dissect_segment },
  {   3, "invalidCall"                 , ASN1_EXTENSION_ROOT    , dissect_invalidCall },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_InfoRequestResponseStatus(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_InfoRequestResponseStatus, InfoRequestResponseStatus_choice, "InfoRequestResponseStatus",
                              NULL);

  return offset;
}
static int dissect_irrStatus(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequestResponseStatus(tvb, offset, pinfo, tree, hf_h225_irrStatus);
}

static const per_sequence_t InfoRequestResponse_sequence[] = {
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "endpointType"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointType },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "rasAddress"                  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_infoRequestResponse_rasAddress },
  { "callSignalAddress"           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callSignalAddress },
  { "endpointAlias"               , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointAlias },
  { "perCallInfo"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_perCallInfo },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "needResponse"                , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_needResponse },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "irrStatus"                   , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_irrStatus },
  { "unsolicited"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_unsolicited },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_InfoRequestResponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_InfoRequestResponse, InfoRequestResponse_sequence);

  return offset;
}
static int dissect_infoRequestResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequestResponse(tvb, offset, pinfo, tree, hf_h225_infoRequestResponse);
}

static const per_sequence_t NonStandardMessage_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_nonStandardData },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_NonStandardMessage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_NonStandardMessage, NonStandardMessage_sequence);

  return offset;
}
static int dissect_nonStandardMessage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_NonStandardMessage(tvb, offset, pinfo, tree, hf_h225_nonStandardMessage);
}

static const per_sequence_t UnknownMessageResponse_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "tokens"                      , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "messageNotUnderstood"        , ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL, dissect_messageNotUnderstood },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_UnknownMessageResponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_UnknownMessageResponse, UnknownMessageResponse_sequence);

  return offset;
}
static int dissect_unknownMessageResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_UnknownMessageResponse(tvb, offset, pinfo, tree, hf_h225_unknownMessageResponse);
}

static const per_sequence_t RequestInProgress_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "delay"                       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_delay },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_RequestInProgress(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_RequestInProgress, RequestInProgress_sequence);

  return offset;
}
static int dissect_requestInProgress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_RequestInProgress(tvb, offset, pinfo, tree, hf_h225_requestInProgress);
}

static const per_sequence_t ResourcesAvailableIndicate_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_endpointIdentifier },
  { "protocols"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocols },
  { "almostOutOfResources"        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_almostOutOfResources },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "capacity"                    , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_capacity },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ResourcesAvailableIndicate(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ResourcesAvailableIndicate, ResourcesAvailableIndicate_sequence);

  return offset;
}
static int dissect_resourcesAvailableIndicate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ResourcesAvailableIndicate(tvb, offset, pinfo, tree, hf_h225_resourcesAvailableIndicate);
}

static const per_sequence_t ResourcesAvailableConfirm_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "protocolIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_protocolIdentifier },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "genericData"                 , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ResourcesAvailableConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ResourcesAvailableConfirm, ResourcesAvailableConfirm_sequence);

  return offset;
}
static int dissect_resourcesAvailableConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ResourcesAvailableConfirm(tvb, offset, pinfo, tree, hf_h225_resourcesAvailableConfirm);
}

static const per_sequence_t InfoRequestAck_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_InfoRequestAck(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_InfoRequestAck, InfoRequestAck_sequence);

  return offset;
}
static int dissect_infoRequestAck(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequestAck(tvb, offset, pinfo, tree, hf_h225_infoRequestAck);
}


const value_string InfoRequestNakReason_vals[] = {
  {   0, "notRegistered" },
  {   1, "securityDenial" },
  {   2, "undefinedReason" },
  {   3, "securityError" },
  { 0, NULL }
};

static const per_choice_t InfoRequestNakReason_choice[] = {
  {   0, "notRegistered"               , ASN1_EXTENSION_ROOT    , dissect_notRegistered },
  {   1, "securityDenial"              , ASN1_EXTENSION_ROOT    , dissect_securityDenial },
  {   2, "undefinedReason"             , ASN1_EXTENSION_ROOT    , dissect_undefinedReason },
  {   3, "securityError"               , ASN1_NOT_EXTENSION_ROOT, dissect_securityError },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_InfoRequestNakReason(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  guint32 value;
      
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_InfoRequestNakReason, InfoRequestNakReason_choice, "InfoRequestNakReason",
                              &value);
  h225_pi->reason = value;

  return offset;
}
static int dissect_nakReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequestNakReason(tvb, offset, pinfo, tree, hf_h225_nakReason);
}

static const per_sequence_t InfoRequestNak_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "nakReason"                   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_nakReason },
  { "altGKInfo"                   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_altGKInfo },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_InfoRequestNak(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_InfoRequestNak, InfoRequestNak_sequence);

  return offset;
}
static int dissect_infoRequestNak(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_InfoRequestNak(tvb, offset, pinfo, tree, hf_h225_infoRequestNak);
}

static const per_sequence_t T_callSpecific_sequence[] = {
  { "callIdentifier"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_callIdentifier },
  { "conferenceID"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_conferenceID },
  { "answeredCall"                , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_answeredCall },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_T_callSpecific(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_T_callSpecific, T_callSpecific_sequence);

  return offset;
}
static int dissect_callSpecific(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_callSpecific(tvb, offset, pinfo, tree, hf_h225_callSpecific);
}

static const per_sequence_t ServiceControlIndication_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "serviceControl"              , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_serviceControl },
  { "endpointIdentifier"          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_endpointIdentifier },
  { "callSpecific"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_callSpecific },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ServiceControlIndication(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ServiceControlIndication, ServiceControlIndication_sequence);

  return offset;
}
static int dissect_serviceControlIndication(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ServiceControlIndication(tvb, offset, pinfo, tree, hf_h225_serviceControlIndication);
}


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, "started"                     , ASN1_EXTENSION_ROOT    , dissect_started },
  {   1, "failed"                      , ASN1_EXTENSION_ROOT    , dissect_failed },
  {   2, "stopped"                     , ASN1_EXTENSION_ROOT    , dissect_stopped },
  {   3, "notAvailable"                , ASN1_EXTENSION_ROOT    , dissect_notAvailable },
  {   4, "neededFeatureNotSupported"   , ASN1_EXTENSION_ROOT    , dissect_neededFeatureNotSupported },
  { 0, NULL, 0, NULL }
};

static int
dissect_h225_T_result(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_T_result, T_result_choice, "T_result",
                              NULL);

  return offset;
}
static int dissect_result(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_T_result(tvb, offset, pinfo, tree, hf_h225_result);
}

static const per_sequence_t ServiceControlResponse_sequence[] = {
  { "requestSeqNum"               , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_requestSeqNum },
  { "result"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_result },
  { "nonStandardData"             , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_nonStandardData },
  { "tokens"                      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_tokens },
  { "cryptoTokens"                , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_cryptoTokens },
  { "integrityCheckValue"         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_integrityCheckValue },
  { "featureSet"                  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_featureSet },
  { "genericData"                 , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_genericData },
  { NULL, 0, 0, NULL }
};

static int
dissect_h225_ServiceControlResponse(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
                                ett_h225_ServiceControlResponse, ServiceControlResponse_sequence);

  return offset;
}
static int dissect_serviceControlResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_ServiceControlResponse(tvb, offset, pinfo, tree, hf_h225_serviceControlResponse);
}


static int
dissect_h225_SEQUENCE_OF_AdmissionConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
  offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
                                   ett_h225_SEQUENCE_OF_AdmissionConfirm, dissect_admissionConfirmSequence_item);

  return offset;
}
static int dissect_admissionConfirmSequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
  return dissect_h225_SEQUENCE_OF_AdmissionConfirm(tvb, offset, pinfo, tree, hf_h225_admissionConfirmSequence);
}


const value_string 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, "gatekeeperRequest"           , ASN1_EXTENSION_ROOT    , dissect_gatekeeperRequest },
  {   1, "gatekeeperConfirm"           , ASN1_EXTENSION_ROOT    , dissect_gatekeeperConfirm },
  {   2, "gatekeeperReject"            , ASN1_EXTENSION_ROOT    , dissect_gatekeeperReject },
  {   3, "registrationRequest"         , ASN1_EXTENSION_ROOT    , dissect_registrationRequest },
  {   4, "registrationConfirm"         , ASN1_EXTENSION_ROOT    , dissect_registrationConfirm },
  {   5, "registrationReject"          , ASN1_EXTENSION_ROOT    , dissect_registrationReject },
  {   6, "unregistrationRequest"       , ASN1_EXTENSION_ROOT    , dissect_unregistrationRequest },
  {   7, "unregistrationConfirm"       , ASN1_EXTENSION_ROOT    , dissect_unregistrationConfirm },
  {   8, "unregistrationReject"        , ASN1_EXTENSION_ROOT    , dissect_unregistrationReject },
  {   9, "admissionRequest"            , ASN1_EXTENSION_ROOT    , dissect_admissionRequest },
  {  10, "admissionConfirm"            , ASN1_EXTENSION_ROOT    , dissect_admissionConfirm },
  {  11, "admissionReject"             , ASN1_EXTENSION_ROOT    , dissect_admissionReject },
  {  12, "bandwidthRequest"            , ASN1_EXTENSION_ROOT    , dissect_bandwidthRequest },
  {  13, "bandwidthConfirm"            , ASN1_EXTENSION_ROOT    , dissect_bandwidthConfirm },
  {  14, "bandwidthReject"             , ASN1_EXTENSION_ROOT    , dissect_bandwidthReject },
  {  15, "disengageRequest"            , ASN1_EXTENSION_ROOT    , dissect_disengageRequest },
  {  16, "disengageConfirm"            , ASN1_EXTENSION_ROOT    , dissect_disengageConfirm },
  {  17, "disengageReject"             , ASN1_EXTENSION_ROOT    , dissect_disengageReject },
  {  18, "locationRequest"             , ASN1_EXTENSION_ROOT    , dissect_locationRequest },
  {  19, "locationConfirm"             , ASN1_EXTENSION_ROOT    , dissect_locationConfirm },
  {  20, "locationReject"              , ASN1_EXTENSION_ROOT    , dissect_locationReject },
  {  21, "infoRequest"                 , ASN1_EXTENSION_ROOT    , dissect_infoRequest },
  {  22, "infoRequestResponse"         , ASN1_EXTENSION_ROOT    , dissect_infoRequestResponse },
  {  23, "nonStandardMessage"          , ASN1_EXTENSION_ROOT    , dissect_nonStandardMessage },
  {  24, "unknownMessageResponse"      , ASN1_EXTENSION_ROOT    , dissect_unknownMessageResponse },
  {  25, "requestInProgress"           , ASN1_NOT_EXTENSION_ROOT, dissect_requestInProgress },
  {  26, "resourcesAvailableIndicate"  , ASN1_NOT_EXTENSION_ROOT, dissect_resourcesAvailableIndicate },
  {  27, "resourcesAvailableConfirm"   , ASN1_NOT_EXTENSION_ROOT, dissect_resourcesAvailableConfirm },
  {  28, "infoRequestAck"              , ASN1_NOT_EXTENSION_ROOT, dissect_infoRequestAck },
  {  29, "infoRequestNak"              , ASN1_NOT_EXTENSION_ROOT, dissect_infoRequestNak },
  {  30, "serviceControlIndication"    , ASN1_NOT_EXTENSION_ROOT, dissect_serviceControlIndication },
  {  31, "serviceControlResponse"      , ASN1_NOT_EXTENSION_ROOT, dissect_serviceControlResponse },
  {  32, "admissionConfirmSequence"    , ASN1_NOT_EXTENSION_ROOT, dissect_admissionConfirmSequence },
  { 0, NULL, 0, NULL }
};

int
dissect_h225_RasMessage(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
      guint32 rasmessage_value;

      offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
                              ett_h225_RasMessage, RasMessage_choice, "RasMessage",
                               &rasmessage_value);
                         
      if (check_col(pinfo->cinfo, COL_INFO)){
            col_add_fstr(pinfo->cinfo, COL_INFO, "RAS: %s ",
                  val_to_str(rasmessage_value, RasMessage_vals, "<unknown>"));
      }

      h225_pi->msg_tag = rasmessage_value;

  return offset;
}


/*--- End of included file: packet-h225-fn.c ---*/



static int
dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
      proto_item *it;
      proto_tree *tr;
      int offset = 0;

    pi_current++;
    if(pi_current==5){
      pi_current=0;
    }
    h225_pi=&pi_arr[pi_current];

      /* Init struct for collecting h225_packet_info */
    reset_h225_packet_info(h225_pi);
    h225_pi->msg_type = H225_CS;

      if (check_col(pinfo->cinfo, COL_PROTOCOL)){
            col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.225.0");
      }
      if (check_col(pinfo->cinfo, COL_INFO)){
            col_clear(pinfo->cinfo, COL_INFO);
      }

      it=proto_tree_add_protocol_format(tree, proto_h225, tvb, 0, tvb_length(tvb), "H.225.0 CS");
      tr=proto_item_add_subtree(it, ett_h225);

      offset = dissect_h225_H323_UserInformation(tvb, offset,pinfo, tr, hf_h225_H323_UserInformation);

      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){
      proto_item *it;
      proto_tree *tr;
      guint32 offset=0;

    pi_current++;
    if(pi_current==5){
        pi_current=0;
    }
    h225_pi=&pi_arr[pi_current];

      /* Init struct for collecting h225_packet_info */
    reset_h225_packet_info(h225_pi);
    h225_pi->msg_type = H225_RAS;

      if (check_col(pinfo->cinfo, COL_PROTOCOL)){
            col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.225.0");
      }

      it=proto_tree_add_protocol_format(tree, proto_h225, tvb, offset, tvb_length(tvb), "H.225.0 RAS");
      tr=proto_item_add_subtree(it, ett_h225);

      offset = dissect_h225_RasMessage(tvb, 0, pinfo,tr, hf_h225_RasMessage );

      ras_call_matching(tvb, pinfo, tr, h225_pi);

      tap_queue_packet(h225_tap, pinfo, h225_pi);

      return offset;
}

/*--- proto_register_h225 -------------------------------------------*/
void proto_register_h225(void) {

  /* List of fields */
  static hf_register_info hf[] = {
      { &hf_h225_H323_UserInformation,
            { "H323_UserInformation", "h225.H323_UserInformation", FT_NONE, BASE_NONE,
            NULL, 0, "H323_UserInformation sequence", HFILL }},
      { &hf_h225_RasMessage,
            { "RasMessage", "h225.RasMessage", FT_UINT32, BASE_DEC,
            VALS(RasMessage_vals), 0, "RasMessage choice", HFILL }},
      { &hf_h221Manufacturer,
            { "H.221 Manufacturer", "h221.Manufacturer", FT_UINT32, BASE_HEX,
            VALS(H221ManufacturerCode_vals), 0, "H.221 Manufacturer", HFILL }},
      { &hf_h225_ras_req_frame,
                  { "RAS Request Frame", "h225.ras.reqframe", FT_FRAMENUM, BASE_NONE,
                  NULL, 0, "RAS Request Frame", HFILL }},
      { &hf_h225_ras_rsp_frame,
                  { "RAS Response Frame", "h225.ras.rspframe", FT_FRAMENUM, BASE_NONE,
                  NULL, 0, "RAS Response Frame", HFILL }},
      { &hf_h225_ras_dup,
                  { "Duplicate RAS Message", "h225.ras.dup", FT_UINT32, BASE_DEC,
            NULL, 0, "Duplicate RAS Message", 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_fastStart_item_length,
            { "fastStart item length", "h225.fastStart_item_length", FT_UINT32, BASE_DEC,
            NULL, 0, "fastStart item length", HFILL }},


/*--- Included file: packet-h225-hfarr.c ---*/

    { &hf_h225_h323_uu_pdu,
      { "h323-uu-pdu", "h225.h323_uu_pdu",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UserInformation/h323-uu-pdu", HFILL }},
    { &hf_h225_user_data,
      { "user-data", "h225.user_data",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UserInformation/user-data", HFILL }},
    { &hf_h225_protocol_discriminator,
      { "protocol-discriminator", "h225.protocol_discriminator",
        FT_UINT32, BASE_DEC, VALS(q931_protocol_discriminator_vals), 0,
        "H323-UserInformation/user-data/protocol-discriminator", HFILL }},
    { &hf_h225_user_information,
      { "user-information", "h225.user_information",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H323-UserInformation/user-data/user-information", HFILL }},
    { &hf_h225_h323_message_body,
      { "h323-message-body", "h225.h323_message_body",
        FT_UINT32, BASE_DEC, VALS(T_h323_message_body_vals), 0,
        "H323-UU-PDU/h323-message-body", HFILL }},
    { &hf_h225_setup,
      { "setup", "h225.setup",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/setup", HFILL }},
    { &hf_h225_callProceeding,
      { "callProceeding", "h225.callProceeding",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/callProceeding", HFILL }},
    { &hf_h225_connect,
      { "connect", "h225.connect",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/connect", HFILL }},
    { &hf_h225_alerting,
      { "alerting", "h225.alerting",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/alerting", HFILL }},
    { &hf_h225_information,
      { "information", "h225.information",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/information", HFILL }},
    { &hf_h225_releaseComplete,
      { "releaseComplete", "h225.releaseComplete",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/releaseComplete", HFILL }},
    { &hf_h225_facility,
      { "facility", "h225.facility",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/facility", HFILL }},
    { &hf_h225_progress,
      { "progress", "h225.progress",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/progress", HFILL }},
    { &hf_h225_empty_flg,
      { "empty", "h225.empty",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/empty", HFILL }},
    { &hf_h225_status,
      { "status", "h225.status",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/status", HFILL }},
    { &hf_h225_statusInquiry,
      { "statusInquiry", "h225.statusInquiry",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/statusInquiry", HFILL }},
    { &hf_h225_setupAcknowledge,
      { "setupAcknowledge", "h225.setupAcknowledge",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/setupAcknowledge", HFILL }},
    { &hf_h225_notify,
      { "notify", "h225.notify",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h323-message-body/notify", HFILL }},
    { &hf_h225_nonStandardData,
      { "nonStandardData", "h225.nonStandardData",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_h4501SupplementaryService,
      { "h4501SupplementaryService", "h225.h4501SupplementaryService",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h4501SupplementaryService", HFILL }},
    { &hf_h225_h4501SupplementaryService_item,
      { "Item", "h225.h4501SupplementaryService_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H323-UU-PDU/h4501SupplementaryService/_item", HFILL }},
    { &hf_h225_h245Tunneling,
      { "h245Tunneling", "h225.h245Tunneling",
        FT_BOOLEAN, 8, NULL, 0,
        "H323-UU-PDU/h245Tunneling", HFILL }},
    { &hf_h225_h245Control,
      { "h245Control", "h225.h245Control",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/h245Control", HFILL }},
    { &hf_h225_nonStandardControl,
      { "nonStandardControl", "h225.nonStandardControl",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/nonStandardControl", HFILL }},
    { &hf_h225_nonStandardControl_item,
      { "Item", "h225.nonStandardControl_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/nonStandardControl/_item", HFILL }},
    { &hf_h225_callLinkage,
      { "callLinkage", "h225.callLinkage",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_tunnelledSignallingMessage,
      { "tunnelledSignallingMessage", "h225.tunnelledSignallingMessage",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/tunnelledSignallingMessage", HFILL }},
    { &hf_h225_tunnelledProtocolID,
      { "tunnelledProtocolID", "h225.tunnelledProtocolID",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/tunnelledSignallingMessage/tunnelledProtocolID", HFILL }},
    { &hf_h225_messageContent,
      { "messageContent", "h225.messageContent",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/tunnelledSignallingMessage/messageContent", HFILL }},
    { &hf_h225_messageContent_item,
      { "Item", "h225.messageContent_item",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H323-UU-PDU/tunnelledSignallingMessage/messageContent/_item", HFILL }},
    { &hf_h225_tunnellingRequired,
      { "tunnellingRequired", "h225.tunnellingRequired",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/tunnelledSignallingMessage/tunnellingRequired", HFILL }},
    { &hf_h225_provisionalRespToH245Tunneling,
      { "provisionalRespToH245Tunneling", "h225.provisionalRespToH245Tunneling",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/provisionalRespToH245Tunneling", HFILL }},
    { &hf_h225_stimulusControl,
      { "stimulusControl", "h225.stimulusControl",
        FT_NONE, BASE_NONE, NULL, 0,
        "H323-UU-PDU/stimulusControl", HFILL }},
    { &hf_h225_genericData,
      { "genericData", "h225.genericData",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_genericData_item,
      { "Item", "h225.genericData_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_H245Control_item,
      { "Item", "h225.H245Control_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245Control/_item", HFILL }},
    { &hf_h225_nonStandard,
      { "nonStandard", "h225.nonStandard",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_isText,
      { "isText", "h225.isText",
        FT_NONE, BASE_NONE, NULL, 0,
        "StimulusControl/isText", HFILL }},
    { &hf_h225_h248Message,
      { "h248Message", "h225.h248Message",
        FT_BYTES, BASE_HEX, NULL, 0,
        "StimulusControl/h248Message", HFILL }},
    { &hf_h225_protocolIdentifier,
      { "protocolIdentifier", "h225.protocolIdentifier",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_uUIE_destinationInfo,
      { "destinationInfo", "h225.destinationInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_h245Address,
      { "h245Address", "h225.h245Address",
        FT_UINT32, BASE_DEC, VALS(h225_H245TransportAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_callIdentifier,
      { "callIdentifier", "h225.callIdentifier",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_h245SecurityMode,
      { "h245SecurityMode", "h225.h245SecurityMode",
        FT_UINT32, BASE_DEC, VALS(h225_H245Security_vals), 0,
        "", HFILL }},
    { &hf_h225_tokens,
      { "tokens", "h225.tokens",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_tokens_item,
      { "Item", "h225.tokens_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_cryptoTokens,
      { "cryptoTokens", "h225.cryptoTokens",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_cryptoTokens_item,
      { "Item", "h225.cryptoTokens_item",
        FT_UINT32, BASE_DEC, VALS(h225_CryptoH323Token_vals), 0,
        "", HFILL }},
    { &hf_h225_fastStart,
      { "fastStart", "h225.fastStart",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_multipleCalls,
      { "multipleCalls", "h225.multipleCalls",
        FT_BOOLEAN, 8, NULL, 0,
        "", HFILL }},
    { &hf_h225_maintainConnection,
      { "maintainConnection", "h225.maintainConnection",
        FT_BOOLEAN, 8, NULL, 0,
        "", HFILL }},
    { &hf_h225_alertingAddress,
      { "alertingAddress", "h225.alertingAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Alerting-UUIE/alertingAddress", HFILL }},
    { &hf_h225_alertingAddress_item,
      { "Item", "h225.alertingAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Alerting-UUIE/alertingAddress/_item", HFILL }},
    { &hf_h225_presentationIndicator,
      { "presentationIndicator", "h225.presentationIndicator",
        FT_UINT32, BASE_DEC, VALS(h225_PresentationIndicator_vals), 0,
        "", HFILL }},
    { &hf_h225_screeningIndicator,
      { "screeningIndicator", "h225.screeningIndicator",
        FT_UINT32, BASE_DEC, VALS(h225_ScreeningIndicator_vals), 0,
        "", HFILL }},
    { &hf_h225_fastConnectRefused,
      { "fastConnectRefused", "h225.fastConnectRefused",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_serviceControl,
      { "serviceControl", "h225.serviceControl",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_serviceControl_item,
      { "Item", "h225.serviceControl_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_capacity,
      { "capacity", "h225.capacity",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_featureSet,
      { "featureSet", "h225.featureSet",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_conferenceID,
      { "conferenceID", "h225.conferenceID",
        FT_BYTES, BASE_HEX, NULL, 0,
        "", HFILL }},
    { &hf_h225_language,
      { "language", "h225.language",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_language_item,
      { "Item", "h225.language_item",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_connectedAddress,
      { "connectedAddress", "h225.connectedAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Connect-UUIE/connectedAddress", HFILL }},
    { &hf_h225_connectedAddress_item,
      { "Item", "h225.connectedAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Connect-UUIE/connectedAddress/_item", HFILL }},
    { &hf_h225_circuitInfo,
      { "circuitInfo", "h225.circuitInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_releaseCompleteReason,
      { "reason", "h225.reason",
        FT_UINT32, BASE_DEC, VALS(ReleaseCompleteReason_vals), 0,
        "", HFILL }},
    { &hf_h225_busyAddress,
      { "busyAddress", "h225.busyAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseComplete-UUIE/busyAddress", HFILL }},
    { &hf_h225_busyAddress_item,
      { "Item", "h225.busyAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "ReleaseComplete-UUIE/busyAddress/_item", HFILL }},
    { &hf_h225_noBandwidth,
      { "noBandwidth", "h225.noBandwidth",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/noBandwidth", HFILL }},
    { &hf_h225_gatekeeperResources,
      { "gatekeeperResources", "h225.gatekeeperResources",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/gatekeeperResources", HFILL }},
    { &hf_h225_unreachableDestination,
      { "unreachableDestination", "h225.unreachableDestination",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/unreachableDestination", HFILL }},
    { &hf_h225_destinationRejection,
      { "destinationRejection", "h225.destinationRejection",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/destinationRejection", HFILL }},
    { &hf_h225_invalidRevision,
      { "invalidRevision", "h225.invalidRevision",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_noPermission,
      { "noPermission", "h225.noPermission",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/noPermission", HFILL }},
    { &hf_h225_unreachableGatekeeper,
      { "unreachableGatekeeper", "h225.unreachableGatekeeper",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/unreachableGatekeeper", HFILL }},
    { &hf_h225_gatewayResources,
      { "gatewayResources", "h225.gatewayResources",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/gatewayResources", HFILL }},
    { &hf_h225_badFormatAddress,
      { "badFormatAddress", "h225.badFormatAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/badFormatAddress", HFILL }},
    { &hf_h225_adaptiveBusy,
      { "adaptiveBusy", "h225.adaptiveBusy",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/adaptiveBusy", HFILL }},
    { &hf_h225_inConf,
      { "inConf", "h225.inConf",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/inConf", HFILL }},
    { &hf_h225_undefinedReason,
      { "undefinedReason", "h225.undefinedReason",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_facilityCallDeflection,
      { "facilityCallDeflection", "h225.facilityCallDeflection",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/facilityCallDeflection", HFILL }},
    { &hf_h225_securityDenied,
      { "securityDenied", "h225.securityDenied",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/securityDenied", HFILL }},
    { &hf_h225_calledPartyNotRegistered,
      { "calledPartyNotRegistered", "h225.calledPartyNotRegistered",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_callerNotRegistered,
      { "callerNotRegistered", "h225.callerNotRegistered",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_newConnectionNeeded,
      { "newConnectionNeeded", "h225.newConnectionNeeded",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/newConnectionNeeded", HFILL }},
    { &hf_h225_nonStandardReason,
      { "nonStandardReason", "h225.nonStandardReason",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/nonStandardReason", HFILL }},
    { &hf_h225_replaceWithConferenceInvite,
      { "replaceWithConferenceInvite", "h225.replaceWithConferenceInvite",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ReleaseCompleteReason/replaceWithConferenceInvite", HFILL }},
    { &hf_h225_genericDataReason,
      { "genericDataReason", "h225.genericDataReason",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_neededFeatureNotSupported,
      { "neededFeatureNotSupported", "h225.neededFeatureNotSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_tunnelledSignallingRejected,
      { "tunnelledSignallingRejected", "h225.tunnelledSignallingRejected",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/tunnelledSignallingRejected", HFILL }},
    { &hf_h225_invalidCID,
      { "invalidCID", "h225.invalidCID",
        FT_NONE, BASE_NONE, NULL, 0,
        "ReleaseCompleteReason/invalidCID", HFILL }},
    { &hf_h225_rLC_securityError,
      { "securityError", "h225.securityError",
        FT_UINT32, BASE_DEC, VALS(h225_SecurityErrors_vals), 0,
        "ReleaseCompleteReason/securityError", HFILL }},
    { &hf_h225_hopCountExceeded,
      { "hopCountExceeded", "h225.hopCountExceeded",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_sourceAddress,
      { "sourceAddress", "h225.sourceAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/sourceAddress", HFILL }},
    { &hf_h225_sourceAddress_item,
      { "Item", "h225.sourceAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Setup-UUIE/sourceAddress/_item", HFILL }},
    { &hf_h225_Setup_UUIE_sourceInfo,
      { "sourceInfo", "h225.sourceInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/sourceInfo", HFILL }},
    { &hf_h225_destinationAddress,
      { "destinationAddress", "h225.destinationAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/destinationAddress", HFILL }},
    { &hf_h225_destinationAddress_item,
      { "Item", "h225.destinationAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Setup-UUIE/destinationAddress/_item", HFILL }},
    { &hf_h225_destCallSignalAddress,
      { "destCallSignalAddress", "h225.destCallSignalAddress",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_destExtraCallInfo,
      { "destExtraCallInfo", "h225.destExtraCallInfo",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_destExtraCallInfo_item,
      { "Item", "h225.destExtraCallInfo_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_destExtraCRV,
      { "destExtraCRV", "h225.destExtraCRV",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/destExtraCRV", HFILL }},
    { &hf_h225_destExtraCRV_item,
      { "Item", "h225.destExtraCRV_item",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Setup-UUIE/destExtraCRV/_item", HFILL }},
    { &hf_h225_activeMC,
      { "activeMC", "h225.activeMC",
        FT_BOOLEAN, 8, NULL, 0,
        "", HFILL }},
    { &hf_h225_conferenceGoal,
      { "conferenceGoal", "h225.conferenceGoal",
        FT_UINT32, BASE_DEC, VALS(h225_T_conferenceGoal_vals), 0,
        "Setup-UUIE/conferenceGoal", HFILL }},
    { &hf_h225_create,
      { "create", "h225.create",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/conferenceGoal/create", HFILL }},
    { &hf_h225_join,
      { "join", "h225.join",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/conferenceGoal/join", HFILL }},
    { &hf_h225_invite,
      { "invite", "h225.invite",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/conferenceGoal/invite", HFILL }},
    { &hf_h225_capability_negotiation,
      { "capability-negotiation", "h225.capability_negotiation",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/conferenceGoal/capability-negotiation", HFILL }},
    { &hf_h225_callIndependentSupplementaryService,
      { "callIndependentSupplementaryService", "h225.callIndependentSupplementaryService",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/conferenceGoal/callIndependentSupplementaryService", HFILL }},
    { &hf_h225_callServices,
      { "callServices", "h225.callServices",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_callType,
      { "callType", "h225.callType",
        FT_UINT32, BASE_DEC, VALS(h225_CallType_vals), 0,
        "", HFILL }},
    { &hf_h225_sourceCallSignalAddress,
      { "sourceCallSignalAddress", "h225.sourceCallSignalAddress",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "Setup-UUIE/sourceCallSignalAddress", HFILL }},
    { &hf_h225_uUIE_remoteExtensionAddress,
      { "remoteExtensionAddress", "h225.remoteExtensionAddress",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_h245SecurityCapability,
      { "h245SecurityCapability", "h225.h245SecurityCapability",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/h245SecurityCapability", HFILL }},
    { &hf_h225_h245SecurityCapability_item,
      { "Item", "h225.h245SecurityCapability_item",
        FT_UINT32, BASE_DEC, VALS(h225_H245Security_vals), 0,
        "Setup-UUIE/h245SecurityCapability/_item", HFILL }},
    { &hf_h225_mediaWaitForConnect,
      { "mediaWaitForConnect", "h225.mediaWaitForConnect",
        FT_BOOLEAN, 8, NULL, 0,
        "Setup-UUIE/mediaWaitForConnect", HFILL }},
    { &hf_h225_canOverlapSend,
      { "canOverlapSend", "h225.canOverlapSend",
        FT_BOOLEAN, 8, NULL, 0,
        "Setup-UUIE/canOverlapSend", HFILL }},
    { &hf_h225_endpointIdentifier,
      { "endpointIdentifier", "h225.endpointIdentifier",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_connectionParameters,
      { "connectionParameters", "h225.connectionParameters",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/connectionParameters", HFILL }},
    { &hf_h225_connectionType,
      { "connectionType", "h225.connectionType",
        FT_UINT32, BASE_DEC, VALS(h225_ScnConnectionType_vals), 0,
        "Setup-UUIE/connectionParameters/connectionType", HFILL }},
    { &hf_h225_numberOfScnConnections,
      { "numberOfScnConnections", "h225.numberOfScnConnections",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Setup-UUIE/connectionParameters/numberOfScnConnections", HFILL }},
    { &hf_h225_connectionAggregation,
      { "connectionAggregation", "h225.connectionAggregation",
        FT_UINT32, BASE_DEC, VALS(h225_ScnConnectionAggregation_vals), 0,
        "Setup-UUIE/connectionParameters/connectionAggregation", HFILL }},
    { &hf_h225_symmetricOperationRequired,
      { "symmetricOperationRequired", "h225.symmetricOperationRequired",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/symmetricOperationRequired", HFILL }},
    { &hf_h225_desiredProtocols,
      { "desiredProtocols", "h225.desiredProtocols",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_desiredProtocols_item,
      { "Item", "h225.desiredProtocols_item",
        FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
        "", HFILL }},
    { &hf_h225_neededFeatures,
      { "neededFeatures", "h225.neededFeatures",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_neededFeatures_item,
      { "Item", "h225.neededFeatures_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_desiredFeatures,
      { "desiredFeatures", "h225.desiredFeatures",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_desiredFeatures_item,
      { "Item", "h225.desiredFeatures_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_supportedFeatures,
      { "supportedFeatures", "h225.supportedFeatures",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_supportedFeatures_item,
      { "Item", "h225.supportedFeatures_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_parallelH245Control,
      { "parallelH245Control", "h225.parallelH245Control",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/parallelH245Control", HFILL }},
    { &hf_h225_additionalSourceAddresses,
      { "additionalSourceAddresses", "h225.additionalSourceAddresses",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/additionalSourceAddresses", HFILL }},
    { &hf_h225_additionalSourceAddresses_item,
      { "Item", "h225.additionalSourceAddresses_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "Setup-UUIE/additionalSourceAddresses/_item", HFILL }},
    { &hf_h225_hopCount_1_31,
      { "hopCount", "h225.hopCount",
        FT_UINT32, BASE_DEC, NULL, 0,
        "Setup-UUIE/hopCount", HFILL }},
    { &hf_h225_ParallelH245Control_item,
      { "Item", "h225.ParallelH245Control_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ParallelH245Control/_item", HFILL }},
    { &hf_h225_unknown,
      { "unknown", "h225.unknown",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_bChannel,
      { "bChannel", "h225.bChannel",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/bChannel", HFILL }},
    { &hf_h225_hybrid2x64,
      { "hybrid2x64", "h225.hybrid2x64",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/hybrid2x64", HFILL }},
    { &hf_h225_hybrid384,
      { "hybrid384", "h225.hybrid384",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/hybrid384", HFILL }},
    { &hf_h225_hybrid1536,
      { "hybrid1536", "h225.hybrid1536",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/hybrid1536", HFILL }},
    { &hf_h225_hybrid1920,
      { "hybrid1920", "h225.hybrid1920",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/hybrid1920", HFILL }},
    { &hf_h225_multirate,
      { "multirate", "h225.multirate",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionType/multirate", HFILL }},
    { &hf_h225_auto,
      { "auto", "h225.auto",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionAggregation/auto", HFILL }},
    { &hf_h225_none,
      { "none", "h225.none",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_h221,
      { "h221", "h225.h221",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionAggregation/h221", HFILL }},
    { &hf_h225_bonded_mode1,
      { "bonded-mode1", "h225.bonded_mode1",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionAggregation/bonded-mode1", HFILL }},
    { &hf_h225_bonded_mode2,
      { "bonded-mode2", "h225.bonded_mode2",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionAggregation/bonded-mode2", HFILL }},
    { &hf_h225_bonded_mode3,
      { "bonded-mode3", "h225.bonded_mode3",
        FT_NONE, BASE_NONE, NULL, 0,
        "ScnConnectionAggregation/bonded-mode3", HFILL }},
    { &hf_h225_presentationAllowed,
      { "presentationAllowed", "h225.presentationAllowed",
        FT_NONE, BASE_NONE, NULL, 0,
        "PresentationIndicator/presentationAllowed", HFILL }},
    { &hf_h225_presentationRestricted,
      { "presentationRestricted", "h225.presentationRestricted",
        FT_NONE, BASE_NONE, NULL, 0,
        "PresentationIndicator/presentationRestricted", HFILL }},
    { &hf_h225_addressNotAvailable,
      { "addressNotAvailable", "h225.addressNotAvailable",
        FT_NONE, BASE_NONE, NULL, 0,
        "PresentationIndicator/addressNotAvailable", HFILL }},
    { &hf_h225_alternativeAddress,
      { "alternativeAddress", "h225.alternativeAddress",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "Facility-UUIE/alternativeAddress", HFILL }},
    { &hf_h225_alternativeAliasAddress,
      { "alternativeAliasAddress", "h225.alternativeAliasAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Facility-UUIE/alternativeAliasAddress", HFILL }},
    { &hf_h225_alternativeAliasAddress_item,
      { "Item", "h225.alternativeAliasAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Facility-UUIE/alternativeAliasAddress/_item", HFILL }},
    { &hf_h225_facilityReason,
      { "reason", "h225.reason",
        FT_UINT32, BASE_DEC, VALS(FacilityReason_vals), 0,
        "Facility-UUIE/reason", HFILL }},
    { &hf_h225_conferences,
      { "conferences", "h225.conferences",
        FT_NONE, BASE_NONE, NULL, 0,
        "Facility-UUIE/conferences", HFILL }},
    { &hf_h225_conferences_item,
      { "Item", "h225.conferences_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "Facility-UUIE/conferences/_item", HFILL }},
    { &hf_h225_conferenceAlias,
      { "conferenceAlias", "h225.conferenceAlias",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "ConferenceList/conferenceAlias", HFILL }},
    { &hf_h225_routeCallToGatekeeper,
      { "routeCallToGatekeeper", "h225.routeCallToGatekeeper",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_callForwarded,
      { "callForwarded", "h225.callForwarded",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/callForwarded", HFILL }},
    { &hf_h225_routeCallToMC,
      { "routeCallToMC", "h225.routeCallToMC",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/routeCallToMC", HFILL }},
    { &hf_h225_conferenceListChoice,
      { "conferenceListChoice", "h225.conferenceListChoice",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/conferenceListChoice", HFILL }},
    { &hf_h225_startH245,
      { "startH245", "h225.startH245",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/startH245", HFILL }},
    { &hf_h225_noH245,
      { "noH245", "h225.noH245",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/noH245", HFILL }},
    { &hf_h225_newTokens,
      { "newTokens", "h225.newTokens",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/newTokens", HFILL }},
    { &hf_h225_featureSetUpdate,
      { "featureSetUpdate", "h225.featureSetUpdate",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/featureSetUpdate", HFILL }},
    { &hf_h225_forwardedElements,
      { "forwardedElements", "h225.forwardedElements",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/forwardedElements", HFILL }},
    { &hf_h225_transportedInformation,
      { "transportedInformation", "h225.transportedInformation",
        FT_NONE, BASE_NONE, NULL, 0,
        "FacilityReason/transportedInformation", HFILL }},
    { &hf_h225_FastStart_item,
      { "Item", "h225.FastStart_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "FastStart/_item", HFILL }},
    { &hf_h225_ipAddress,
      { "ipAddress", "h225.ipAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "TransportAddress/ipAddress", HFILL }},
    { &hf_h225_ipV4,
      { "ip", "h225.ip",
        FT_IPv4, BASE_NONE, NULL, 0,
        "TransportAddress/ipAddress/ip", HFILL }},
    { &hf_h225_ipV4_port,
      { "port", "h225.port",
        FT_UINT32, BASE_DEC, NULL, 0,
        "TransportAddress/ipAddress/port", HFILL }},
    { &hf_h225_ipSourceRoute,
      { "ipSourceRoute", "h225.ipSourceRoute",
        FT_NONE, BASE_NONE, NULL, 0,
        "TransportAddress/ipSourceRoute", HFILL }},
    { &hf_h225_src_route_ipV4,
      { "ip", "h225.ip",
        FT_BYTES, BASE_HEX, NULL, 0,
        "TransportAddress/ipSourceRoute/ip", HFILL }},
    { &hf_h225_ipV4_src_port,
      { "port", "h225.port",
        FT_UINT32, BASE_DEC, NULL, 0,
        "TransportAddress/ipSourceRoute/port", HFILL }},
    { &hf_h225_route,
      { "route", "h225.route",
        FT_NONE, BASE_NONE, NULL, 0,
        "TransportAddress/ipSourceRoute/route", HFILL }},
    { &hf_h225_route_item,
      { "Item", "h225.route_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "TransportAddress/ipSourceRoute/route/_item", HFILL }},
    { &hf_h225_routing,
      { "routing", "h225.routing",
        FT_UINT32, BASE_DEC, VALS(h225_T_routing_vals), 0,
        "TransportAddress/ipSourceRoute/routing", HFILL }},
    { &hf_h225_strict,
      { "strict", "h225.strict",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_loose,
      { "loose", "h225.loose",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_ipxAddress,
      { "ipxAddress", "h225.ipxAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "TransportAddress/ipxAddress", HFILL }},
    { &hf_h225_node,
      { "node", "h225.node",
        FT_BYTES, BASE_HEX, NULL, 0,
        "", HFILL }},
    { &hf_h225_netnum,
      { "netnum", "h225.netnum",
        FT_BYTES, BASE_HEX, NULL, 0,
        "", HFILL }},
    { &hf_h225_ipx_port,
      { "port", "h225.port",
        FT_BYTES, BASE_HEX, NULL, 0,
        "TransportAddress/ipxAddress/port", HFILL }},
    { &hf_h225_ip6Address,
      { "ip6Address", "h225.ip6Address",
        FT_NONE, BASE_NONE, NULL, 0,
        "TransportAddress/ip6Address", HFILL }},
    { &hf_h225_ipV6,
      { "ip", "h225.ip",
        FT_IPv6, BASE_NONE, NULL, 0,
        "TransportAddress/ip6Address/ip", HFILL }},
    { &hf_h225_ipV6_port,
      { "port", "h225.port",
        FT_UINT32, BASE_DEC, NULL, 0,
        "TransportAddress/ip6Address/port", HFILL }},
    { &hf_h225_netBios,
      { "netBios", "h225.netBios",
        FT_BYTES, BASE_HEX, NULL, 0,
        "TransportAddress/netBios", HFILL }},
    { &hf_h225_nsap,
      { "nsap", "h225.nsap",
        FT_BYTES, BASE_HEX, NULL, 0,
        "TransportAddress/nsap", HFILL }},
    { &hf_h225_nonStandardAddress,
      { "nonStandardAddress", "h225.nonStandardAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_h245ipAddress,
      { "h245ipAddress", "h225.h245ipAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ipAddress", HFILL }},
    { &hf_h225_h245ipv4,
      { "h245ipv4", "h225.h245ipv4",
        FT_IPv4, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ipAddress/h245ipv4", HFILL }},
    { &hf_h225_h245ipv4port,
      { "h245ipv4port", "h225.h245ipv4port",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H245TransportAddress/h245ipAddress/h245ipv4port", HFILL }},
    { &hf_h225_h245ipSourceRoute,
      { "h245ipSourceRoute", "h225.h245ipSourceRoute",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ipSourceRoute", HFILL }},
    { &hf_h225_h245routeip,
      { "h245routeip", "h225.h245routeip",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245TransportAddress/h245ipSourceRoute/h245routeip", HFILL }},
    { &hf_h225_h245routeport,
      { "h245routeport", "h225.h245routeport",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H245TransportAddress/h245ipSourceRoute/h245routeport", HFILL }},
    { &hf_h225_h245route,
      { "h245route", "h225.h245route",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ipSourceRoute/h245route", HFILL }},
    { &hf_h225_h245route_item,
      { "Item", "h225.h245route_item",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245TransportAddress/h245ipSourceRoute/h245route/_item", HFILL }},
    { &hf_h225_h245routing,
      { "h245routing", "h225.h245routing",
        FT_UINT32, BASE_DEC, VALS(h225_T_h245routing_vals), 0,
        "H245TransportAddress/h245ipSourceRoute/h245routing", HFILL }},
    { &hf_h225_h245ipxAddress,
      { "h245ipxAddress", "h225.h245ipxAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ipxAddress", HFILL }},
    { &hf_h225_h245ipxport,
      { "h245ipxport", "h225.h245ipxport",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245TransportAddress/h245ipxAddress/h245ipxport", HFILL }},
    { &hf_h225_h245ip6Address,
      { "h245ip6Address", "h225.h245ip6Address",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ip6Address", HFILL }},
    { &hf_h225_h245ipv6,
      { "h245ipv6", "h225.h245ipv6",
        FT_IPv6, BASE_NONE, NULL, 0,
        "H245TransportAddress/h245ip6Address/h245ipv6", HFILL }},
    { &hf_h225_h245ipv6port,
      { "h245ipv6port", "h225.h245ipv6port",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H245TransportAddress/h245ip6Address/h245ipv6port", HFILL }},
    { &hf_h225_h245netBios,
      { "h245netBios", "h225.h245netBios",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245TransportAddress/h245netBios", HFILL }},
    { &hf_h225_h245nsap,
      { "h245nsap", "h225.h245nsap",
        FT_BYTES, BASE_HEX, NULL, 0,
        "H245TransportAddress/h245nsap", HFILL }},
    { &hf_h225_vendor,
      { "vendor", "h225.vendor",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/vendor", HFILL }},
    { &hf_h225_gatekeeper,
      { "gatekeeper", "h225.gatekeeper",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/gatekeeper", HFILL }},
    { &hf_h225_gateway,
      { "gateway", "h225.gateway",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/gateway", HFILL }},
    { &hf_h225_mcu,
      { "mcu", "h225.mcu",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/mcu", HFILL }},
    { &hf_h225_terminal,
      { "terminal", "h225.terminal",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/terminal", HFILL }},
    { &hf_h225_mc,
      { "mc", "h225.mc",
        FT_BOOLEAN, 8, NULL, 0,
        "EndpointType/mc", HFILL }},
    { &hf_h225_undefinedNode,
      { "undefinedNode", "h225.undefinedNode",
        FT_BOOLEAN, 8, NULL, 0,
        "EndpointType/undefinedNode", HFILL }},
    { &hf_h225_set,
      { "set", "h225.set",
        FT_BYTES, BASE_HEX, NULL, 0,
        "EndpointType/set", HFILL }},
    { &hf_h225_supportedTunnelledProtocols,
      { "supportedTunnelledProtocols", "h225.supportedTunnelledProtocols",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/supportedTunnelledProtocols", HFILL }},
    { &hf_h225_supportedTunnelledProtocols_item,
      { "Item", "h225.supportedTunnelledProtocols_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "EndpointType/supportedTunnelledProtocols/_item", HFILL }},
    { &hf_h225_protocol,
      { "protocol", "h225.protocol",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_protocol_item,
      { "Item", "h225.protocol_item",
        FT_UINT32, BASE_DEC, VALS(h225_SupportedProtocols_vals), 0,
        "", HFILL }},
    { &hf_h225_h310,
      { "h310", "h225.h310",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h310", HFILL }},
    { &hf_h225_h320,
      { "h320", "h225.h320",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h320", HFILL }},
    { &hf_h225_h321,
      { "h321", "h225.h321",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h321", HFILL }},
    { &hf_h225_h322,
      { "h322", "h225.h322",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h322", HFILL }},
    { &hf_h225_h323,
      { "h323", "h225.h323",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h323", HFILL }},
    { &hf_h225_h324,
      { "h324", "h225.h324",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/h324", HFILL }},
    { &hf_h225_voice,
      { "voice", "h225.voice",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/voice", HFILL }},
    { &hf_h225_t120_only,
      { "t120-only", "h225.t120_only",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/t120-only", HFILL }},
    { &hf_h225_nonStandardProtocol,
      { "nonStandardProtocol", "h225.nonStandardProtocol",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/nonStandardProtocol", HFILL }},
    { &hf_h225_t38FaxAnnexbOnly,
      { "t38FaxAnnexbOnly", "h225.t38FaxAnnexbOnly",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/t38FaxAnnexbOnly", HFILL }},
    { &hf_h225_sip,
      { "sip", "h225.sip",
        FT_NONE, BASE_NONE, NULL, 0,
        "SupportedProtocols/sip", HFILL }},
    { &hf_h225_dataRatesSupported,
      { "dataRatesSupported", "h225.dataRatesSupported",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_dataRatesSupported_item,
      { "Item", "h225.dataRatesSupported_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_supportedPrefixes,
      { "supportedPrefixes", "h225.supportedPrefixes",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_supportedPrefixes_item,
      { "Item", "h225.supportedPrefixes_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_t38FaxProtocol,
      { "t38FaxProtocol", "h225.t38FaxProtocol",
        FT_UINT32, BASE_DEC, VALS(DataProtocolCapability_vals), 0,
        "T38FaxAnnexbOnlyCaps/t38FaxProtocol", HFILL }},
    { &hf_h225_t38FaxProfile,
      { "t38FaxProfile", "h225.t38FaxProfile",
        FT_NONE, BASE_NONE, NULL, 0,
        "T38FaxAnnexbOnlyCaps/t38FaxProfile", HFILL }},
    { &hf_h225_vendorIdentifier_vendor,
      { "vendor", "h225.vendor",
        FT_NONE, BASE_NONE, NULL, 0,
        "VendorIdentifier/vendor", HFILL }},
    { &hf_h225_productId,
      { "productId", "h225.productId",
        FT_STRING, BASE_HEX, NULL, 0,
        "VendorIdentifier/productId", HFILL }},
    { &hf_h225_versionId,
      { "versionId", "h225.versionId",
        FT_STRING, BASE_HEX, NULL, 0,
        "VendorIdentifier/versionId", HFILL }},
    { &hf_h225_enterpriseNumber,
      { "enterpriseNumber", "h225.enterpriseNumber",
        FT_STRING, BASE_NONE, NULL, 0,
        "VendorIdentifier/enterpriseNumber", HFILL }},
    { &hf_h225_t35CountryCode,
      { "t35CountryCode", "h225.t35CountryCode",
        FT_UINT32, BASE_DEC, VALS(T35CountryCode_vals), 0,
        "H221NonStandard/t35CountryCode", HFILL }},
    { &hf_h225_t35Extension,
      { "t35Extension", "h225.t35Extension",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H221NonStandard/t35Extension", HFILL }},
    { &hf_h225_manufacturerCode,
      { "manufacturerCode", "h225.manufacturerCode",
        FT_UINT32, BASE_DEC, NULL, 0,
        "H221NonStandard/manufacturerCode", 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_STRING, BASE_NONE, NULL, 0,
        "TunnelledProtocol/id/tunnelledProtocolObjectID", HFILL }},
    { &hf_h225_tunnelledProtocolAlternateID,
      { "tunnelledProtocolAlternateID", "h225.tunnelledProtocolAlternateID",
        FT_NONE, BASE_NONE, NULL, 0,
        "TunnelledProtocol/id/tunnelledProtocolAlternateID", HFILL }},
    { &hf_h225_subIdentifier,
      { "subIdentifier", "h225.subIdentifier",
        FT_STRING, BASE_NONE, NULL, 0,
        "TunnelledProtocol/subIdentifier", HFILL }},
    { &hf_h225_protocolType,
      { "protocolType", "h225.protocolType",
        FT_STRING, BASE_NONE, NULL, 0,
        "TunnelledProtocolAlternateIdentifier/protocolType", HFILL }},
    { &hf_h225_protocolVariant,
      { "protocolVariant", "h225.protocolVariant",
        FT_STRING, BASE_NONE, NULL, 0,
        "TunnelledProtocolAlternateIdentifier/protocolVariant", HFILL }},
    { &hf_h225_nonStandardIdentifier,
      { "nonStandardIdentifier", "h225.nonStandardIdentifier",
        FT_UINT32, BASE_DEC, VALS(h225_NonStandardIdentifier_vals), 0,
        "NonStandardParameter/nonStandardIdentifier", HFILL }},
    { &hf_h225_nsp_data,
      { "data", "h225.data",
        FT_UINT32, BASE_DEC, NULL, 0,
        "NonStandardParameter/data", HFILL }},
    { &hf_h225_nsiOID,
      { "object", "h225.object",
        FT_STRING, BASE_NONE, NULL, 0,
        "NonStandardIdentifier/object", HFILL }},
    { &hf_h225_h221NonStandard,
      { "h221NonStandard", "h225.h221NonStandard",
        FT_NONE, BASE_NONE, NULL, 0,
        "NonStandardIdentifier/h221NonStandard", HFILL }},
    { &hf_h225_dialedDigits,
      { "dialedDigits", "h225.dialedDigits",
        FT_STRING, BASE_NONE, NULL, 0,
        "AliasAddress/dialedDigits", HFILL }},
    { &hf_h225_h323_ID,
      { "h323-ID", "h225.h323_ID",
        FT_STRING, BASE_NONE, NULL, 0,
        "AliasAddress/h323-ID", HFILL }},
    { &hf_h225_url_ID,
      { "url-ID", "h225.url_ID",
        FT_STRING, BASE_NONE, NULL, 0,
        "AliasAddress/url-ID", HFILL }},
    { &hf_h225_transportID,
      { "transportID", "h225.transportID",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "AliasAddress/transportID", HFILL }},
    { &hf_h225_email_ID,
      { "email-ID", "h225.email_ID",
        FT_STRING, BASE_NONE, NULL, 0,
        "AliasAddress/email-ID", HFILL }},
    { &hf_h225_partyNumber,
      { "partyNumber", "h225.partyNumber",
        FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
        "AliasAddress/partyNumber", HFILL }},
    { &hf_h225_mobileUIM,
      { "mobileUIM", "h225.mobileUIM",
        FT_UINT32, BASE_DEC, VALS(h225_MobileUIM_vals), 0,
        "AliasAddress/mobileUIM", HFILL }},
    { &hf_h225_wildcard,
      { "wildcard", "h225.wildcard",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "AddressPattern/wildcard", HFILL }},
    { &hf_h225_range,
      { "range", "h225.range",
        FT_NONE, BASE_NONE, NULL, 0,
        "AddressPattern/range", HFILL }},
    { &hf_h225_startOfRange,
      { "startOfRange", "h225.startOfRange",
        FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
        "AddressPattern/range/startOfRange", HFILL }},
    { &hf_h225_endOfRange,
      { "endOfRange", "h225.endOfRange",
        FT_UINT32, BASE_DEC, VALS(h225_PartyNumber_vals), 0,
        "AddressPattern/range/endOfRange", HFILL }},
    { &hf_h225_e164Number,
      { "e164Number", "h225.e164Number",
        FT_NONE, BASE_NONE, NULL, 0,
        "PartyNumber/e164Number", HFILL }},
    { &hf_h225_dataPartyNumber,
      { "dataPartyNumber", "h225.dataPartyNumber",
        FT_STRING, BASE_NONE, NULL, 0,
        "PartyNumber/dataPartyNumber", HFILL }},
    { &hf_h225_telexPartyNumber,
      { "telexPartyNumber", "h225.telexPartyNumber",
        FT_STRING, BASE_NONE, NULL, 0,
        "PartyNumber/telexPartyNumber", HFILL }},
    { &hf_h225_privateNumber,
      { "privateNumber", "h225.privateNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PartyNumber/privateNumber", HFILL }},
    { &hf_h225_nationalStandardPartyNumber,
      { "nationalStandardPartyNumber", "h225.nationalStandardPartyNumber",
        FT_STRING, BASE_NONE, NULL, 0,
        "PartyNumber/nationalStandardPartyNumber", HFILL }},
    { &hf_h225_publicTypeOfNumber,
      { "publicTypeOfNumber", "h225.publicTypeOfNumber",
        FT_UINT32, BASE_DEC, VALS(h225_PublicTypeOfNumber_vals), 0,
        "PublicPartyNumber/publicTypeOfNumber", HFILL }},
    { &hf_h225_publicNumberDigits,
      { "publicNumberDigits", "h225.publicNumberDigits",
        FT_STRING, BASE_NONE, NULL, 0,
        "PublicPartyNumber/publicNumberDigits", HFILL }},
    { &hf_h225_privateTypeOfNumber,
      { "privateTypeOfNumber", "h225.privateTypeOfNumber",
        FT_UINT32, BASE_DEC, VALS(h225_PrivateTypeOfNumber_vals), 0,
        "PrivatePartyNumber/privateTypeOfNumber", HFILL }},
    { &hf_h225_privateNumberDigits,
      { "privateNumberDigits", "h225.privateNumberDigits",
        FT_STRING, BASE_NONE, NULL, 0,
        "PrivatePartyNumber/privateNumberDigits", HFILL }},
    { &hf_h225_internationalNumber,
      { "internationalNumber", "h225.internationalNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PublicTypeOfNumber/internationalNumber", HFILL }},
    { &hf_h225_nationalNumber,
      { "nationalNumber", "h225.nationalNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PublicTypeOfNumber/nationalNumber", HFILL }},
    { &hf_h225_networkSpecificNumber,
      { "networkSpecificNumber", "h225.networkSpecificNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PublicTypeOfNumber/networkSpecificNumber", HFILL }},
    { &hf_h225_subscriberNumber,
      { "subscriberNumber", "h225.subscriberNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PublicTypeOfNumber/subscriberNumber", HFILL }},
    { &hf_h225_abbreviatedNumber,
      { "abbreviatedNumber", "h225.abbreviatedNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_level2RegionalNumber,
      { "level2RegionalNumber", "h225.level2RegionalNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PrivateTypeOfNumber/level2RegionalNumber", HFILL }},
    { &hf_h225_level1RegionalNumber,
      { "level1RegionalNumber", "h225.level1RegionalNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PrivateTypeOfNumber/level1RegionalNumber", HFILL }},
    { &hf_h225_pISNSpecificNumber,
      { "pISNSpecificNumber", "h225.pISNSpecificNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PrivateTypeOfNumber/pISNSpecificNumber", HFILL }},
    { &hf_h225_localNumber,
      { "localNumber", "h225.localNumber",
        FT_NONE, BASE_NONE, NULL, 0,
        "PrivateTypeOfNumber/localNumber", HFILL }},
    { &hf_h225_ansi_41_uim,
      { "ansi-41-uim", "h225.ansi_41_uim",
        FT_NONE, BASE_NONE, NULL, 0,
        "MobileUIM/ansi-41-uim", HFILL }},
    { &hf_h225_gsm_uim,
      { "gsm-uim", "h225.gsm_uim",
        FT_NONE, BASE_NONE, NULL, 0,
        "MobileUIM/gsm-uim", HFILL }},
    { &hf_h225_imsi,
      { "imsi", "h225.imsi",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_min,
      { "min", "h225.min",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/min", HFILL }},
    { &hf_h225_mdn,
      { "mdn", "h225.mdn",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/mdn", HFILL }},
    { &hf_h225_msisdn,
      { "msisdn", "h225.msisdn",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_esn,
      { "esn", "h225.esn",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/esn", HFILL }},
    { &hf_h225_mscid,
      { "mscid", "h225.mscid",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/mscid", HFILL }},
    { &hf_h225_system_id,
      { "system-id", "h225.system_id",
        FT_UINT32, BASE_DEC, VALS(h225_T_system_id_vals), 0,
        "ANSI-41-UIM/system-id", HFILL }},
    { &hf_h225_sid,
      { "sid", "h225.sid",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/system-id/sid", HFILL }},
    { &hf_h225_mid,
      { "mid", "h225.mid",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/system-id/mid", HFILL }},
    { &hf_h225_systemMyTypeCode,
      { "systemMyTypeCode", "h225.systemMyTypeCode",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ANSI-41-UIM/systemMyTypeCode", HFILL }},
    { &hf_h225_systemAccessType,
      { "systemAccessType", "h225.systemAccessType",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ANSI-41-UIM/systemAccessType", HFILL }},
    { &hf_h225_qualificationInformationCode,
      { "qualificationInformationCode", "h225.qualificationInformationCode",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ANSI-41-UIM/qualificationInformationCode", HFILL }},
    { &hf_h225_sesn,
      { "sesn", "h225.sesn",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/sesn", HFILL }},
    { &hf_h225_soc,
      { "soc", "h225.soc",
        FT_STRING, BASE_NONE, NULL, 0,
        "ANSI-41-UIM/soc", HFILL }},
    { &hf_h225_tmsi,
      { "tmsi", "h225.tmsi",
        FT_BYTES, BASE_HEX, NULL, 0,
        "GSM-UIM/tmsi", HFILL }},
    { &hf_h225_imei,
      { "imei", "h225.imei",
        FT_STRING, BASE_NONE, NULL, 0,
        "GSM-UIM/imei", HFILL }},
    { &hf_h225_hplmn,
      { "hplmn", "h225.hplmn",
        FT_STRING, BASE_NONE, NULL, 0,
        "GSM-UIM/hplmn", HFILL }},
    { &hf_h225_vplmn,
      { "vplmn", "h225.vplmn",
        FT_STRING, BASE_NONE, NULL, 0,
        "GSM-UIM/vplmn", HFILL }},
    { &hf_h225_address,
      { "address", "h225.address",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "ExtendedAliasAddress/address", HFILL }},
    { &hf_h225_aliasAddress,
      { "aliasAddress", "h225.aliasAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "Endpoint/aliasAddress", HFILL }},
    { &hf_h225_aliasAddress_item,
      { "Item", "h225.aliasAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "Endpoint/aliasAddress/_item", HFILL }},
    { &hf_h225_callSignalAddress,
      { "callSignalAddress", "h225.callSignalAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_callSignalAddress_item,
      { "Item", "h225.callSignalAddress_item",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_rasAddress,
      { "rasAddress", "h225.rasAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_rasAddress_item,
      { "Item", "h225.rasAddress_item",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_endpointType,
      { "endpointType", "h225.endpointType",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_priority,
      { "priority", "h225.priority",
        FT_UINT32, BASE_DEC, NULL, 0,
        "", HFILL }},
    { &hf_h225_remoteExtensionAddress,
      { "remoteExtensionAddress", "h225.remoteExtensionAddress",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_remoteExtensionAddress_item,
      { "Item", "h225.remoteExtensionAddress_item",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_alternateTransportAddresses,
      { "alternateTransportAddresses", "h225.alternateTransportAddresses",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_annexE,
      { "annexE", "h225.annexE",
        FT_NONE, BASE_NONE, NULL, 0,
        "AlternateTransportAddresses/annexE", HFILL }},
    { &hf_h225_annexE_item,
      { "Item", "h225.annexE_item",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "AlternateTransportAddresses/annexE/_item", HFILL }},
    { &hf_h225_sctp,
      { "sctp", "h225.sctp",
        FT_NONE, BASE_NONE, NULL, 0,
        "AlternateTransportAddresses/sctp", HFILL }},
    { &hf_h225_sctp_item,
      { "Item", "h225.sctp_item",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "AlternateTransportAddresses/sctp/_item", HFILL }},
    { &hf_h225_tcp,
      { "tcp", "h225.tcp",
        FT_NONE, BASE_NONE, NULL, 0,
        "UseSpecifiedTransport/tcp", HFILL }},
    { &hf_h225_annexE_flg,
      { "annexE", "h225.annexE",
        FT_NONE, BASE_NONE, NULL, 0,
        "UseSpecifiedTransport/annexE", HFILL }},
    { &hf_h225_sctp_flg,
      { "sctp", "h225.sctp",
        FT_NONE, BASE_NONE, NULL, 0,
        "UseSpecifiedTransport/sctp", HFILL }},
    { &hf_h225_alternateGK_rasAddress,
      { "rasAddress", "h225.rasAddress",
        FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
        "AlternateGK/rasAddress", HFILL }},
    { &hf_h225_gatekeeperIdentifier,
      { "gatekeeperIdentifier", "h225.gatekeeperIdentifier",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_needToRegister,
      { "needToRegister", "h225.needToRegister",
        FT_BOOLEAN, 8, NULL, 0,
        "AlternateGK/needToRegister", HFILL }},
    { &hf_h225_alternateGatekeeper,
      { "alternateGatekeeper", "h225.alternateGatekeeper",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_alternateGatekeeper_item,
      { "Item", "h225.alternateGatekeeper_item",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_altGKisPermanent,
      { "altGKisPermanent", "h225.altGKisPermanent",
        FT_BOOLEAN, 8, NULL, 0,
        "AltGKInfo/altGKisPermanent", HFILL }},
    { &hf_h225_default,
      { "default", "h225.default",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityServiceMode/default", HFILL }},
    { &hf_h225_encryption,
      { "encryption", "h225.encryption",
        FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
        "SecurityCapabilities/encryption", HFILL }},
    { &hf_h225_authenticaton,
      { "authenticaton", "h225.authenticaton",
        FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
        "SecurityCapabilities/authenticaton", HFILL }},
    { &hf_h225_securityCapabilities_integrity,
      { "integrity", "h225.integrity",
        FT_UINT32, BASE_DEC, VALS(h225_SecurityServiceMode_vals), 0,
        "SecurityCapabilities/integrity", HFILL }},
    { &hf_h225_securityWrongSyncTime,
      { "securityWrongSyncTime", "h225.securityWrongSyncTime",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityReplay,
      { "securityReplay", "h225.securityReplay",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityWrongGeneralID,
      { "securityWrongGeneralID", "h225.securityWrongGeneralID",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityWrongSendersID,
      { "securityWrongSendersID", "h225.securityWrongSendersID",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityIntegrityFailed,
      { "securityIntegrityFailed", "h225.securityIntegrityFailed",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityWrongOID,
      { "securityWrongOID", "h225.securityWrongOID",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityDHmismatch,
      { "securityDHmismatch", "h225.securityDHmismatch",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_securityCertificateExpired,
      { "securityCertificateExpired", "h225.securityCertificateExpired",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateExpired", HFILL }},
    { &hf_h225_securityCertificateDateInvalid,
      { "securityCertificateDateInvalid", "h225.securityCertificateDateInvalid",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateDateInvalid", HFILL }},
    { &hf_h225_securityCertificateRevoked,
      { "securityCertificateRevoked", "h225.securityCertificateRevoked",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateRevoked", HFILL }},
    { &hf_h225_securityCertificateNotReadable,
      { "securityCertificateNotReadable", "h225.securityCertificateNotReadable",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateNotReadable", HFILL }},
    { &hf_h225_securityCertificateSignatureInvalid,
      { "securityCertificateSignatureInvalid", "h225.securityCertificateSignatureInvalid",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateSignatureInvalid", HFILL }},
    { &hf_h225_securityCertificateMissing,
      { "securityCertificateMissing", "h225.securityCertificateMissing",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateMissing", HFILL }},
    { &hf_h225_securityCertificateIncomplete,
      { "securityCertificateIncomplete", "h225.securityCertificateIncomplete",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityCertificateIncomplete", HFILL }},
    { &hf_h225_securityUnsupportedCertificateAlgOID,
      { "securityUnsupportedCertificateAlgOID", "h225.securityUnsupportedCertificateAlgOID",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityUnsupportedCertificateAlgOID", HFILL }},
    { &hf_h225_securityUnknownCA,
      { "securityUnknownCA", "h225.securityUnknownCA",
        FT_NONE, BASE_NONE, NULL, 0,
        "SecurityErrors/securityUnknownCA", HFILL }},
    { &hf_h225_noSecurity,
      { "noSecurity", "h225.noSecurity",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245Security/noSecurity", HFILL }},
    { &hf_h225_tls,
      { "tls", "h225.tls",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245Security/tls", HFILL }},
    { &hf_h225_ipsec,
      { "ipsec", "h225.ipsec",
        FT_NONE, BASE_NONE, NULL, 0,
        "H245Security/ipsec", HFILL }},
    { &hf_h225_q932Full,
      { "q932Full", "h225.q932Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q932Full", HFILL }},
    { &hf_h225_q951Full,
      { "q951Full", "h225.q951Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q951Full", HFILL }},
    { &hf_h225_q952Full,
      { "q952Full", "h225.q952Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q952Full", HFILL }},
    { &hf_h225_q953Full,
      { "q953Full", "h225.q953Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q953Full", HFILL }},
    { &hf_h225_q955Full,
      { "q955Full", "h225.q955Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q955Full", HFILL }},
    { &hf_h225_q956Full,
      { "q956Full", "h225.q956Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q956Full", HFILL }},
    { &hf_h225_q957Full,
      { "q957Full", "h225.q957Full",
        FT_BOOLEAN, 8, NULL, 0,
        "QseriesOptions/q957Full", HFILL }},
    { &hf_h225_q954Info,
      { "q954Info", "h225.q954Info",
        FT_NONE, BASE_NONE, NULL, 0,
        "QseriesOptions/q954Info", HFILL }},
    { &hf_h225_conferenceCalling,
      { "conferenceCalling", "h225.conferenceCalling",
        FT_BOOLEAN, 8, NULL, 0,
        "Q954Details/conferenceCalling", HFILL }},
    { &hf_h225_threePartyService,
      { "threePartyService", "h225.threePartyService",
        FT_BOOLEAN, 8, NULL, 0,
        "Q954Details/threePartyService", HFILL }},
    { &hf_h225_guid,
      { "guid", "h225.guid",
        FT_BYTES, BASE_HEX, NULL, 0,
        "CallIdentifier/guid", HFILL }},
    { &hf_h225_isoAlgorithm,
      { "isoAlgorithm", "h225.isoAlgorithm",
        FT_STRING, BASE_NONE, NULL, 0,
        "EncryptIntAlg/isoAlgorithm", HFILL }},
    { &hf_h225_hMAC_MD5,
      { "hMAC-MD5", "h225.hMAC_MD5",
        FT_NONE, BASE_NONE, NULL, 0,
        "NonIsoIntegrityMechanism/hMAC-MD5", 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,
        "NonIsoIntegrityMechanism/hMAC-iso10118-2-s", 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,
        "NonIsoIntegrityMechanism/hMAC-iso10118-2-l", HFILL }},
    { &hf_h225_hMAC_iso10118_3,
      { "hMAC-iso10118-3", "h225.hMAC_iso10118_3",
        FT_STRING, BASE_NONE, NULL, 0,
        "NonIsoIntegrityMechanism/hMAC-iso10118-3", HFILL }},
    { &hf_h225_digSig,
      { "digSig", "h225.digSig",
        FT_NONE, BASE_NONE, NULL, 0,
        "IntegrityMechanism/digSig", HFILL }},
    { &hf_h225_iso9797,
      { "iso9797", "h225.iso9797",
        FT_STRING, BASE_NONE, NULL, 0,
        "IntegrityMechanism/iso9797", HFILL }},
    { &hf_h225_nonIsoIM,
      { "nonIsoIM", "h225.nonIsoIM",
        FT_UINT32, BASE_DEC, VALS(h225_NonIsoIntegrityMechanism_vals), 0,
        "IntegrityMechanism/nonIsoIM", HFILL }},
    { &hf_h225_algorithmOID,
      { "algorithmOID", "h225.algorithmOID",
        FT_STRING, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_icv,
      { "icv", "h225.icv",
        FT_BYTES, BASE_HEX, NULL, 0,
        "ICV/icv", HFILL }},
    { &hf_h225_cryptoEPPwdHash,
      { "cryptoEPPwdHash", "h225.cryptoEPPwdHash",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoEPPwdHash", HFILL }},
    { &hf_h225_alias,
      { "alias", "h225.alias",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "", HFILL }},
    { &hf_h225_timeStamp,
      { "timeStamp", "h225.timeStamp",
        FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_token,
      { "token", "h225.token",
        FT_NONE, BASE_NONE, NULL, 0,
        "", HFILL }},
    { &hf_h225_cryptoGKPwdHash,
      { "cryptoGKPwdHash", "h225.cryptoGKPwdHash",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoGKPwdHash", HFILL }},
    { &hf_h225_gatekeeperId,
      { "gatekeeperId", "h225.gatekeeperId",
        FT_STRING, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoGKPwdHash/gatekeeperId", HFILL }},
    { &hf_h225_cryptoEPPwdEncr,
      { "cryptoEPPwdEncr", "h225.cryptoEPPwdEncr",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoEPPwdEncr", HFILL }},
    { &hf_h225_cryptoGKPwdEncr,
      { "cryptoGKPwdEncr", "h225.cryptoGKPwdEncr",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoGKPwdEncr", HFILL }},
    { &hf_h225_cryptoEPCert,
      { "cryptoEPCert", "h225.cryptoEPCert",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoEPCert", HFILL }},
    { &hf_h225_cryptoGKCert,
      { "cryptoGKCert", "h225.cryptoGKCert",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoGKCert", HFILL }},
    { &hf_h225_cryptoFastStart,
      { "cryptoFastStart", "h225.cryptoFastStart",
        FT_NONE, BASE_NONE, NULL, 0,
        "CryptoH323Token/cryptoFastStart", HFILL }},
    { &hf_h225_nestedcryptoToken,
      { "nestedcryptoToken", "h225.nestedcryptoToken",
        FT_UINT32, BASE_DEC, VALS(CryptoToken_vals), 0,
        "CryptoH323Token/nestedcryptoToken", HFILL }},
    { &hf_h225_channelRate,
      { "channelRate", "h225.channelRate",
        FT_UINT32, BASE_DEC, NULL, 0,
        "DataRate/channelRate", HFILL }},
    { &hf_h225_channelMultiplier,
      { "channelMultiplier", "h225.channelMultiplier",
        FT_UINT32, BASE_DEC, NULL, 0,
        "DataRate/channelMultiplier", HFILL }},
    { &hf_h225_globalCallId,
      { "globalCallId", "h225.globalCallId",
        FT_BYTES, BASE_HEX, NULL, 0,
        "CallLinkage/globalCallId", HFILL }},
    { &hf_h225_threadId,
      { "threadId", "h225.threadId",
        FT_BYTES, BASE_HEX, NULL, 0,
        "CallLinkage/threadId", HFILL }},
    { &hf_h225_prefix,
      { "prefix", "h225.prefix",
        FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
        "SupportedPrefix/prefix", HFILL }},
    { &hf_h225_canReportCallCapacity,
      { "canReportCallCapacity", "h225.canReportCallCapacity",
        FT_BOOLEAN, 8, NULL, 0,
        "CapacityReportingCapability/canReportCallCapacity", HFILL }},
    { &hf_h225_capacityReportingSpecification_when,
      { "when", "h225.when",
        FT_NONE, BASE_NONE, NULL, 0,
        "CapacityReportingSpecification/when", HFILL }},
    { &hf_h225_callStart,
      { "callStart", "h225.callStart",
        FT_NONE, BASE_NONE, NULL, 0,
        "CapacityReportingSpecification/when/callStart", HFILL }},
    { &hf_h225_callEnd,
      { "callEnd", "h225.callEnd",
        FT_NONE,