add details for doxygen
[obnox/wireshark/wip.git] / packet-h225.c
1 /* packet-h225.c
2  * Routines for H.225 packet dissection
3  * 2003  Ronnie Sahlberg
4  *
5  * Maintained by Andreas Sikkema (h323@ramdyne.nl)
6  *
7  * $Id: packet-h225.c,v 1.43 2004/05/25 21:27:02 guy Exp $
8  *
9  * Ethereal - Network traffic analyzer
10  * By Gerald Combs <gerald@ethereal.com>
11  * Copyright 1998 Gerald Combs
12  *
13  * This program is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the Free Software
25  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
26  */
27
28 #ifdef HAVE_CONFIG_H
29 # include "config.h"
30 #endif
31
32 #include <glib.h>
33 #include <epan/packet.h>
34 #include <epan/conversation.h>
35
36 #include <stdio.h>
37 #include <string.h>
38
39 #include "prefs.h"
40 #include "tap.h"
41 #include "packet-tpkt.h"
42 #include "packet-per.h"
43 #include "packet-h225.h"
44 #include "packet-h235.h"
45 #include "packet-h245.h"
46 #include "t35.h"
47 #include "h225-persistentdata.h"
48
49 #define UDP_PORT_RAS1 1718
50 #define UDP_PORT_RAS2 1719
51 #define TCP_PORT_CS   1720
52
53 static void reset_h225_packet_info(h225_packet_info *pi);
54 static void ras_call_matching(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, h225_packet_info *pi);
55
56 static h225_packet_info h225_pi;
57
58 static dissector_handle_t h225ras_handle;
59 static dissector_handle_t H323UserInformation_handle;
60 static dissector_handle_t data_handle;
61
62 static int h225_tap = -1;
63 static int proto_h225 = -1;
64 static int hf_h225_cname = -1;
65 static int hf_h225_route = -1;
66 static int hf_h225_nonStandardUsageTypes = -1;
67 static int hf_h225_nonStandardUsageTypes_item = -1;
68 static int hf_h225_PresentationIndicator = -1;
69 static int hf_h225_CryptoH323Token = -1;
70 static int hf_h225_conferenceGoal = -1;
71 static int hf_h225_ScnConnectionType = -1;
72 static int hf_h225_ScnConnectionAggregation = -1;
73 static int hf_h225_FacilityReason = -1;
74 static int hf_h225_PublicTypeOfNumber = -1;
75 static int hf_h225_PrivateTypeOfNumber = -1;
76 static int hf_h225_UseSpecifiedTransport = -1;
77 static int hf_h225_SecurityErrors = -1;
78 static int hf_h225_SecurityErrors2 = -1;
79 static int hf_h225_ServiceControlSession_reason = -1;
80 static int hf_h225_billingMode = -1;
81 static int hf_h225_CCSCcallStartingPoint = -1;
82 static int hf_h225_GatekeeperRejectReason = -1;
83 static int hf_h225_UnregRequestReason = -1;
84 static int hf_h225_UnregRejectReason = -1;
85 static int hf_h225_CallType = -1;
86 static int hf_h225_CallModel = -1;
87 static int hf_h225_TransportQOS = -1;
88 static int hf_h225_BandRejectReason = -1;
89 static int hf_h225_DisengageReason = -1;
90 static int hf_h225_DisengageRejectReason = -1;
91 static int hf_h225_InfoRequestNakReason = -1;
92 static int hf_h225_SCRresult = -1;
93 static int hf_h225_GatekeeperInfo = -1;
94 static int hf_h225_SecurityServiceMode_encryption = -1;
95 static int hf_h225_SecurityServiceMode_authentication = -1;
96 static int hf_h225_SecurityServiceMode_integrity = -1;
97 static int hf_h225_SecurityCapabilities_tls = -1;
98 static int hf_h225_SecurityCapabilities_ipsec = -1;
99 static int hf_h225_H245Security = -1;
100 static int hf_h225_RasUsageInfoTypes = -1;
101 static int hf_h225_usageReportingCapability = -1;
102 static int hf_h225_BandWidth = -1;
103 static int hf_h225_channelRate = -1;
104 static int hf_h225_totalBandwidthRestriction = -1;
105 static int hf_h225_allowedBandWidth = -1;
106 static int hf_h225_channelMultiplier = -1;
107 static int hf_h225_DataRate = -1;
108 static int hf_h225_gatewayDataRate = -1;
109 static int hf_h225_dataRatesSupported = -1;
110 static int hf_h225_TerminalInfo = -1;
111 static int hf_h225_h248Message = -1;
112 static int hf_h225_StimulusControl = -1;
113 static int hf_h225_conferenceID = -1;
114 static int hf_h225_Generic_nonStandard = -1;
115 static int hf_h225_guid = -1;
116 static int hf_h225_replaceWithConferenceInvite = -1;
117 static int hf_h225_ReleaseCompleteReason = -1;
118 static int hf_h225_numberOfScnConnections = -1;
119 static int hf_h225_connectionParameters = -1;
120 static int hf_h225_RequestSeqNum = -1;
121 static int hf_h225_RasUsageSpecification_when = -1;
122 static int hf_h225_RasUsageSpecification_callStartingPoint = -1;
123 static int hf_h225_RasUsageSpecification = -1;
124 static int hf_h225_ipAddress_ip = -1;
125 static int hf_h225_ipAddress_port = -1;
126 static int hf_h225_ipAddress = -1;
127 static int hf_h225_routing = -1;
128 static int hf_h225_ipSourceRoute = -1;
129 static int hf_h225_ipxNode = -1;
130 static int hf_h225_ipxNetnum = -1;
131 static int hf_h225_ipxPort = -1;
132 static int hf_h225_ipxAddress = -1;
133 static int hf_h225_ipv6Address_ip = -1;
134 static int hf_h225_ipv6Address_port = -1;
135 static int hf_h225_ip6Address = -1;
136 static int hf_h225_netBios = -1;
137 static int hf_h225_nsap = -1;
138 static int hf_h225_TransportAddress = -1;
139 static int hf_h225_replyAddress = -1;
140 static int hf_h225_rasAddress = -1;
141 static int hf_h225_h245Address = -1;
142 static int hf_h225_destCallSignalAddress = -1;
143 static int hf_h225_sourceCallSignalAddress = -1;
144 static int hf_h225_CallSignalAddress2 = -1;
145 static int hf_h225_alternativeAddress = -1;
146 static int hf_h225_transportID = -1;
147 static int hf_h225_sendAddress = -1;
148 static int hf_h225_recvAddress = -1;
149 static int hf_h225_rtpAddress = -1;
150 static int hf_h225_rtcpAddress = -1;
151 static int hf_h225_h245 = -1;
152 static int hf_h225_callSignaling = -1;
153 static int hf_h225_carrierName = -1;
154 static int hf_h225_carrierIdentificationCode = -1;
155 static int hf_h225_CarrierInfo = -1;
156 static int hf_h225_segment = -1;
157 static int hf_h225_InfoRequestResponseStatus = -1;
158 static int hf_h225_CallIdentifier = -1;
159 static int hf_h225_globalCallId = -1;
160 static int hf_h225_threadId = -1;
161 static int hf_h225_CallLinkage = -1;
162 static int hf_h225_tokens = -1;
163 static int hf_h225_CryptoH323Tokens = -1;
164 static int hf_h225_needToRegister = -1;
165 static int hf_h225_priority = -1;
166 static int hf_h225_AlternateGK = -1;
167 static int hf_h225_alternateGatekeeper = -1;
168 static int hf_h225_altGKisPermanent = -1;
169 static int hf_h225_AltGKInfo = -1;
170 static int hf_h225_annexE = -1;
171 static int hf_h225_sctp = -1;
172 static int hf_h225_AlternateTransportAddress = -1;
173 static int hf_h225_setup_bool = -1;
174 static int hf_h225_callProceeding_bool = -1;
175 static int hf_h225_connect_bool = -1;
176 static int hf_h225_alerting_bool = -1;
177 static int hf_h225_information_bool = -1;
178 static int hf_h225_releaseComplete_bool = -1;
179 static int hf_h225_facility_bool = -1;
180 static int hf_h225_progress_bool = -1;
181 static int hf_h225_empty_bool = -1;
182 static int hf_h225_status_bool = -1;
183 static int hf_h225_statusInquiry_bool = -1;
184 static int hf_h225_setupAcknowledge_bool = -1;
185 static int hf_h225_notify_bool = -1;
186 static int hf_h225_UUIEsRequested = -1;
187 static int hf_h225_conferenceCalling = -1;
188 static int hf_h225_threePartyService = -1;
189 static int hf_h225_Q954Details = -1;
190 static int hf_h225_q932Full = -1;
191 static int hf_h225_q951Full = -1;
192 static int hf_h225_q952Full = -1;
193 static int hf_h225_q953Full = -1;
194 static int hf_h225_q955Full = -1;
195 static int hf_h225_q956Full = -1;
196 static int hf_h225_q957Full = -1;
197 static int hf_h225_QseriesOptions = -1;
198 static int hf_h225_ssrc = -1;
199 static int hf_h225_RTPsessionId = -1;
200 static int hf_h225_associatedSessionIds = -1;
201 static int hf_h225_RTPSession = -1;
202 static int hf_h225_ProtocolIdentifier = -1;
203 static int hf_h225_isoAlgorithm = -1;
204 static int hf_h225_iso9797 = -1;
205 static int hf_h225_algorithmOID = -1;
206 static int hf_h225_hMAC_iso10118_3 = -1;
207 static int hf_h225_enterpriseNumber = -1;
208 static int hf_h225_Generic_oid = -1;
209 static int hf_h225_tunnelledProtocolObjectID = -1;
210 static int hf_h225_StatusUUIE = -1;
211 static int hf_h225_StatusInquiryUUIE = -1;
212 static int hf_h225_SetupAcknowledgeUUIE = -1;
213 static int hf_h225_NotifyUUIE = -1;
214 static int hf_h225_imsi = -1;
215 static int hf_h225_tmsi = -1;
216 static int hf_h225_msisdn = -1;
217 static int hf_h225_imei = -1;
218 static int hf_h225_hplmn = -1;
219 static int hf_h225_vplmn = -1;
220 static int hf_h225_GSMUIM = -1;
221 static int hf_h225_sid = -1;
222 static int hf_h225_mid = -1;
223 static int hf_h225_systemid = -1;
224 static int hf_h225_min = -1;
225 static int hf_h225_mdn = -1;
226 static int hf_h225_esn = -1;
227 static int hf_h225_mscid = -1;
228 static int hf_h225_systemMyTypeCode = -1;
229 static int hf_h225_systemAccessType = -1;
230 static int hf_h225_qualificationInformationCode = -1;
231 static int hf_h225_sesn = -1;
232 static int hf_h225_soc = -1;
233 static int hf_h225_ANSI41UIM = -1;
234 static int hf_h225_MobileUIM = -1;
235 static int hf_h225_dataPartyNumber = -1;
236 static int hf_h225_telexPartyNumber = -1;
237 static int hf_h225_nationalStandardPartyNumber = -1;
238 static int hf_h225_publicNumberDigits = -1;
239 static int hf_h225_privateNumberDigits = -1;
240 static int hf_h225_e164Number = -1;
241 static int hf_h225_privateNumber = -1;
242 static int hf_h225_PartyNumber = -1;
243 static int hf_h225_startOfRange = -1;
244 static int hf_h225_endOfRange = -1;
245 static int hf_h225_protocolType = -1;
246 static int hf_h225_protocolVariant = -1;
247 static int hf_h225_TunnelledProtocolAlternateIdentifier = -1;
248 static int hf_h225_dialedDigits = -1;
249 static int hf_h225_urlId = -1;
250 static int hf_h225_h323ID = -1;
251 static int hf_h225_unicode = -1;
252 static int hf_h225_GatekeeperIdentifier = -1;
253 static int hf_h225_EndpointIdentifier = -1;
254 static int hf_h225_emailId = -1;
255 static int hf_h225_AliasAddress = -1;
256 static int hf_h225_featureServerAlias = -1;
257 static int hf_h225_RemoteExtensionAddress = -1;
258 static int hf_h225_conferenceAlias = -1;
259 static int hf_h225_wildcard = -1;
260 static int hf_h225_prefix = -1;
261 static int hf_h225_SupportedPrefix = -1;
262 static int hf_h225_SupportedPrefixes = -1;
263 static int hf_h225_H310Caps = -1;
264 static int hf_h225_H320Caps = -1;
265 static int hf_h225_H321Caps = -1;
266 static int hf_h225_H322Caps = -1;
267 static int hf_h225_H323Caps = -1;
268 static int hf_h225_H324Caps = -1;
269 static int hf_h225_VoiceCaps = -1;
270 static int hf_h225_T120OnlyCaps = -1;
271 static int hf_h225_NonStandardProtocol = -1;
272 static int hf_h225_SIPCaps = -1;
273 static int hf_h225_AddressPattern_range = -1;
274 static int hf_h225_AddressPattern = -1;
275 static int hf_h225_ConferenceList = -1;
276 static int hf_h225_conferences = -1;
277 static int hf_h225_T38FaxAnnexbOnlyCaps = -1;
278 static int hf_h225_SupportedProtocols = -1;
279 static int hf_h225_protocol = -1;
280 static int hf_h225_GatewayInfo = -1;
281 static int hf_h225_McuInfo = -1;
282 static int hf_h225_TunnelledProtocol_id = -1;
283 static int hf_h225_TunnelledProtocol_subIdentifier = -1;
284 static int hf_h225_TunnelledProtocol = -1;
285 static int hf_h225_TunnelledProtocols = -1;
286 static int hf_h225_desiredTunnelledProtocol = -1;
287 static int hf_h225_CicInfo_cic_item = -1;
288 static int hf_h225_CicInfo_pointCode = -1;
289 static int hf_h225_CicInfo_cic = -1;
290 static int hf_h225_CicInfo = -1;
291 static int hf_h225_GroupID_member_item = -1;
292 static int hf_h225_GroupID_member = -1;
293 static int hf_h225_GroupID_group = -1;
294 static int hf_h225_GroupID = -1;
295 static int hf_h225_sourceCircuitID = -1;
296 static int hf_h225_destinationCircuitID = -1;
297 static int hf_h225_Generic_standard = -1;
298 static int hf_h225_GenericIdentifier = -1;
299 static int hf_h225_EnumeratedParameter = -1;
300 static int hf_h225_parameters = -1;
301 static int hf_h225_GenericData = -1;
302 static int hf_h225_FeatureDescriptor = -1;
303 static int hf_h225_Content_raw = -1;
304 static int hf_h225_Content_text = -1;
305 static int hf_h225_Content = -1;
306 static int hf_h225_Content_bool = -1;
307 static int hf_h225_Content_number8 = -1;
308 static int hf_h225_number16 = -1;
309 static int hf_h225_Content_number32 = -1;
310 static int hf_h225_Content_compound = -1;
311 static int hf_h225_Content_nested = -1;
312 static int hf_h225_replacementFeatureSet = -1;
313 static int hf_h225_neededFeatures = -1;
314 static int hf_h225_desiredFeatures = -1;
315 static int hf_h225_supportedFeatures = -1;
316 static int hf_h225_FeatureSet = -1;
317 static int hf_h225_CallsAvailable_calls = -1;
318 static int hf_h225_CallsAvailable_group = -1;
319 static int hf_h225_CallsAvailable = -1;
320 static int hf_h225_voiceGwCallsAvailable = -1;
321 static int hf_h225_h310GwCallsAvailable = -1;
322 static int hf_h225_h320GwCallsAvailable = -1;
323 static int hf_h225_h321GwCallsAvailable = -1;
324 static int hf_h225_h322GwCallsAvailable = -1;
325 static int hf_h225_h323GwCallsAvailable = -1;
326 static int hf_h225_h324GwCallsAvailable = -1;
327 static int hf_h225_t120OnlyGwCallsAvailable = -1;
328 static int hf_h225_t38FaxAnnexbOnlyGwCallsAvailable = -1;
329 static int hf_h225_terminalCallsAvailable = -1;
330 static int hf_h225_mcuCallsAvailable = -1;
331 static int hf_h225_sipGwCallsAvailable = -1;
332 static int hf_h225_maximumCallCapacity = -1;
333 static int hf_h225_currentCallCapacity = -1;
334 static int hf_h225_CallCapacity = -1;
335 static int hf_h225_productID = -1;
336 static int hf_h225_versionID = -1;
337 static int hf_h225_VendorIdentifier = -1;
338 static int hf_h225_canReportCallCapacity = -1;
339 static int hf_h225_CapacityReportingCapability = -1;
340 static int hf_h225_canDisplayAmountString = -1;
341 static int hf_h225_canEnforceDurationLimit = -1;
342 static int hf_h225_CallCreditCapability = -1;
343 static int hf_h225_BandwidthDetails_sender = -1;
344 static int hf_h225_BandwidthDetails_multicast = -1;
345 static int hf_h225_BandwidthDetails = -1;
346 static int hf_h225_releaseCompleteCauseIE = -1;
347 static int hf_h225_CallTerminationCause = -1;
348 static int hf_h225_CircuitInfo = -1;
349 static int hf_h225_genericData = -1;
350 static int hf_h225_fastStart_item_length = -1;
351 static int hf_h225_fastStart = -1;
352 static int hf_h225_fastConnectRefused = -1;
353 static int hf_h225_InformationUUIE = -1;
354 static int hf_h225_routeCallToSCN = -1;
355 static int hf_h225_AdmissionRejectReason = -1;
356 static int hf_h225_hMAC_iso10118_2_s = -1;
357 static int hf_h225_hMAC_iso10118_2_l = -1;
358 static int hf_h225_NonIsoIntegrityMechanism = -1;
359 static int hf_h225_IntegrityMechanism = -1;
360 static int hf_h225_LocationRejectReason = -1;
361 static int hf_h225_mc = -1;
362 static int hf_h225_undefinedNode = -1;
363 static int hf_h225_EndPointType = -1;
364 static int hf_h225_terminalType = -1;
365 static int hf_h225_sourceInfo = -1;
366 static int hf_h225_destinationInfo = -1;
367 static int hf_h225_multipleCalls = -1;
368 static int hf_h225_maintainConnection = -1;
369 static int hf_h225_CallProceedingUUIE = -1;
370 static int hf_h225_CapacityReportingSpecification_when = -1;
371 static int hf_h225_CapacityReportingSpecification = -1;
372 static int hf_h225_ProgressUUIE = -1;
373 static int hf_h225_EndPoint = -1;
374 static int hf_h225_destinationType = -1;
375 static int hf_h225_destExtraCallInfo = -1;
376 static int hf_h225_remoteExtensionAddress = -1;
377 static int hf_h225_rasAddress_sequence = -1;
378 static int hf_h225_callSignalAddress = -1;
379 static int hf_h225_ICV = -1;
380 static int hf_h225_BandwidthConfirm = -1;
381 static int hf_h225_UnregistrationConfirm = -1;
382 static int hf_h225_NonStandardMessage = -1;
383 static int hf_h225_InfoRequestAck = -1;
384 static int hf_h225_InfoRequestNak = -1;
385 static int hf_h225_ResourcesAvailableConfirm = -1;
386 static int hf_h225_GatekeeperRequest = -1;
387 static int hf_h225_integrity = -1;
388 static int hf_h225_algorithmOIDs = -1;
389 static int hf_h225_alternateEndpoints = -1;
390 static int hf_h225_endpointAlias = -1;
391 static int hf_h225_ServiceControlResponse = -1;
392 static int hf_h225_DisengageReject = -1;
393 static int hf_h225_BandwidthReject = -1;
394 static int hf_h225_UnregistrationReject = -1;
395 static int hf_h225_UnregistrationRequest = -1;
396 static int hf_h225_endpointAliasPattern = -1;
397 static int hf_h225_RegistrationReject = -1;
398 static int hf_h225_invalidTerminalAliases = -1;
399 static int hf_h225_terminalAlias = -1;
400 static int hf_h225_terminalAliasPattern = -1;
401 static int hf_h225_RegistrationRejectReason = -1;
402 static int hf_h225_duplicateAlias = -1;
403 static int hf_h225_GatekeeperReject = -1;
404 static int hf_h225_almostOutOfResources = -1;
405 static int hf_h225_ResourcesAvailableIndicate = -1;
406 static int hf_h225_protocols = -1;
407 static int hf_h225_callDurationLimit = -1;
408 static int hf_h225_enforceCallDurationLimit = -1;
409 static int hf_h225_CallCreditServiceControl = -1;
410 static int hf_h225_ScreeningIndicator = -1;
411 static int hf_h225_ExtendedAliasAddress = -1;
412 static int hf_h225_messageNotUnderstood = -1;
413 static int hf_h225_UnknownMessageResponse = -1;
414 static int hf_h225_CallReferenceValue = -1;
415 static int hf_h225_AdmissionRequest = -1;
416 static int hf_h225_canMapSrcAlias = -1;
417 static int hf_h225_desiredProtocols = -1;
418 static int hf_h225_willSupplyUUIEs = -1;
419 static int hf_h225_destAlternatives = -1;
420 static int hf_h225_srcAlternatives = -1;
421 static int hf_h225_canMapAlias = -1;
422 static int hf_h225_activeMC = -1;
423 static int hf_h225_srcInfo = -1;
424 static int hf_h225_DestinationInfo = -1;
425 static int hf_h225_InfoRequest = -1;
426 static int hf_h225_nextSegmentRequested = -1;
427 static int hf_h225_delay = -1;
428 static int hf_h225_RequestInProgress = -1;
429 static int hf_h225_H248SignalsDescriptor = -1;
430 static int hf_h225_url = -1;
431 static int hf_h225_ServiceControlDescriptor = -1;
432 static int hf_h225_ServiceControlSession = -1;
433 static int hf_h225_sessionId = -1;
434 static int hf_h225_AlertingUUIE = -1;
435 static int hf_h225_serviceControl = -1;
436 static int hf_h225_alertingAddress = -1;
437 static int hf_h225_ReleaseCompleteUUIE = -1;
438 static int hf_h225_busyAddress = -1;
439 static int hf_h225_FacilityUUIE = -1;
440 static int hf_h225_alternativeAliasAddress = -1;
441 static int hf_h225_AdmissionReject = -1;
442 static int hf_h225_hopCount = -1;
443 static int hf_h225_parallelH245Control = -1;
444 static int hf_h225_language = -1;
445 static int hf_h225_languages = -1;
446 static int hf_h225_mediaWaitForConnect = -1;
447 static int hf_h225_canOverlapSend = -1;
448 static int hf_h225_SetupUUIE = -1;
449 static int hf_h225_sourceAddress = -1;
450 static int hf_h225_destinationAddress = -1;
451 static int hf_h225_destExtraCRV = -1;
452 static int hf_h225_h245SecurityCapability = -1;
453 static int hf_h225_additionalSourceAddresses = -1;
454 static int hf_h225_ConnectUUIE = -1;
455 static int hf_h225_connectedAddress = -1;
456 static int hf_h225_h323_message_body = -1;
457 static int hf_h225_LocationConfirm = -1;
458 static int hf_h225_supportedProtocols = -1;
459 static int hf_h225_modifiedSrcInfo = -1;
460 static int hf_h225_LocationReject = -1;
461 static int hf_h225_callSpecific = -1;
462 static int hf_h225_answeredCall = -1;
463 static int hf_h225_ServiceControlIndication = -1;
464 static int hf_h225_RasUsageInformation = -1;
465 static int hf_h225_nonStandardUsageFields = -1;
466 static int hf_h225_nonStandardUsageFields_item = -1;
467 static int hf_h225_TimeToLive = -1;
468 static int hf_h225_GatekeeperConfirm = -1;
469 static int hf_h225_RegistrationRequest = -1;
470 static int hf_h225_discoveryComplete = -1;
471 static int hf_h225_keepAlive = -1;
472 static int hf_h225_H248PackagesDescriptor = -1;
473 static int hf_h225_supportedH248Packages = -1;
474 static int hf_h225_DisengageConfirm = -1;
475 static int hf_h225_AdmissionConfirm = -1;
476 static int hf_h225_irrFrequency = -1;
477 static int hf_h225_willRespondToIRR = -1;
478 static int hf_h225_usageSpec = -1;
479 static int hf_h225_DisengageRequest = -1;
480 static int hf_h225_LocationRequest = -1;
481 static int hf_h225_SourceInfo = -1;
482 static int hf_h225_hopCount255 = -1;
483 static int hf_h225_sourceEndpointInfo = -1;
484 static int hf_h225_BandwidthRequest = -1;
485 static int hf_h225_bandwidthDetails = -1;
486 static int hf_h225_admissionConfirmSequence = -1;
487 static int hf_h225_tunnelledSignallingMessage = -1;
488 static int hf_h225_messageContent_item = -1;
489 static int hf_h225_messageContent = -1;
490 static int hf_h225_H323_UU_PDU = -1;
491 static int hf_h225_h4501SupplementaryService = -1;
492 static int hf_h225_h245Tunneling = -1;
493 static int hf_h225_h245Control = -1;
494 static int hf_h225_nonStandardControl = -1;
495 static int hf_h225_nonStandardControl_item = -1;
496 static int hf_h225_preGrantedARQ = -1;
497 static int hf_h225_makeCall = -1;
498 static int hf_h225_useGKCallSignalAddressToMakeCall = -1;
499 static int hf_h225_answerCall = -1;
500 static int hf_h225_useGKCallSignalAddressToAnswer = -1;
501 static int hf_h225_RegistrationConfirm = -1;
502 static int hf_h225_pdu_item = -1;
503 static int hf_h225_sent = -1;
504 static int hf_h225_pdu = -1;
505 static int hf_h225_perCallInfo_item = -1;
506 static int hf_h225_originator = -1;
507 static int hf_h225_audio = -1;
508 static int hf_h225_video = -1;
509 static int hf_h225_data = -1;
510 static int hf_h225_substituteConfIDs = -1;
511 static int hf_h225_perCallInfo = -1;
512 static int hf_h225_InfoRequestResponse = -1;
513 static int hf_h225_needResponse = -1;
514 static int hf_h225_unsolicited = -1;
515 static int hf_h225_RasMessage = -1;
516 static int hf_h225_H323_UserInformation = -1;
517 static int hf_h225_user_data = -1;
518 static int hf_h225_protocol_discriminator = -1;
519 static int hf_h225_user_information = -1;
520 static int hf_h225_object = -1;
521 static int hf_h225_t35CountryCode = -1;
522 static int hf_h225_t35Extension = -1;
523 static int hf_h225_manufacturerCode = -1;
524 static int hf_h221Manufacturer = -1;
525 static int hf_h225_h221NonStandard = -1;
526 static int hf_h225_nonStandardIdentifier = -1;
527 static int hf_h225_nsp_data = -1;
528 static int hf_h225_nonStandardData = -1;
529 static int hf_h225_nonStandard = -1;
530 static int hf_h225_nonStandardReason = -1;
531 static int hf_h225_nonStandardAddress = -1;
532 static int hf_h225_aliasAddress_sequence = -1;
533 static int hf_h225_ras_req_frame = -1;
534 static int hf_h225_ras_rsp_frame = -1;
535 static int hf_h225_ras_dup = -1;
536 static int hf_h225_ras_deltatime = -1;
537 static int hf_h225_cleartoken = -1;
538 static int hf_h225_cryptoEPPwdHash = -1;          /* T_cryptoEPPwdHash */
539 static int hf_h225_cryptoGKPwdHash = -1;          /* T_cryptoGKPwdHash */
540 static int hf_h225_timeStamp = -1;                /* TimeStamp */
541 static int hf_h225_token = -1;                    /* HASHEDxxx */
542 static int hf_h225_cryptoEPPwdEncr = -1;          /* ENCRYPTEDxxx */
543 static int hf_h225_cryptoGKPwdEncr = -1;          /* ENCRYPTEDxxx */
544 static int hf_h225_cryptoEPCert = -1;             /* SIGNEDxxx */
545 static int hf_h225_cryptoGKCert = -1;             /* SIGNEDxxx */
546 static int hf_h225_cryptoFastStart = -1;          /* SIGNEDxxx */
547 static int hf_h225_nestedcryptoToken = -1;        /* CryptoToken */
548 static int hf_h225_cryptoTokens_item = -1;        /* CryptoH323Token */
549 static int hf_h225_authenticationCapability = -1;  /* SEQUNCE_OF_AuthenticationMechanism */
550 static int hf_h225_authenticationCapability_item = -1;  /* AuthenticationMechanism */
551 static int hf_h225_authenticationMode = -1;       /* AuthenticationMechanism */
552 static int hf_h225_alertingTime = -1;             /* TimeStamp */
553 static int hf_h225_connectTime = -1;              /* TimeStamp */
554 static int hf_h225_endTimeStamp = -1;             /* TimeStamp */
555 /*aaa*/
556
557 static gint ett_h225 = -1;
558 static gint ett_h225_T_nonStandardUsageTypes = -1;
559 static gint ett_h225_PresentationIndicator = -1;
560 static gint ett_h225_CryptoH323Token = -1;
561 static gint ett_h225_conferenceGoal = -1;
562 static gint ett_h225_ScnConnectionType = -1;
563 static gint ett_h225_ScnConnectionAggregation = -1;
564 static gint ett_h225_FacilityReason = -1;
565 static gint ett_h225_PublicTypeOfNumber = -1;
566 static gint ett_h225_PrivateTypeOfNumber = -1;
567 static gint ett_h225_UseSpecifiedTransport = -1;
568 static gint ett_h225_SecurityErrors = -1;
569 static gint ett_h225_SecurityErrors2 = -1;
570 static gint ett_h225_ServiceControlSession_reason = -1;
571 static gint ett_h225_billingMode = -1;
572 static gint ett_h225_CCSCcallStartingPoint = -1;
573 static gint ett_h225_GatekeeperRejectReason = -1;
574 static gint ett_h225_UnregRequestReason = -1;
575 static gint ett_h225_UnregRejectReason = -1;
576 static gint ett_h225_CallType = -1;
577 static gint ett_h225_CallModel = -1;
578 static gint ett_h225_TransportQOS = -1;
579 static gint ett_h225_BandRejectReason = -1;
580 static gint ett_h225_DisengageReason = -1;
581 static gint ett_h225_DisengageRejectReason = -1;
582 static gint ett_h225_InfoRequestNakReason = -1;
583 static gint ett_h225_SCRresult = -1;
584 static gint ett_h225_GatekeeperInfo = -1;
585 static gint ett_h225_SecurityServiceMode_encryption = -1;
586 static gint ett_h225_SecurityServiceMode_authentication = -1;
587 static gint ett_h225_SecurityServiceMode_integrity = -1;
588 static gint ett_h225_SecurityCapabilities_tls = -1;
589 static gint ett_h225_SecurityCapabilities_ipsec = -1;
590 static gint ett_h225_H245Security = -1;
591 static gint ett_h225_RasUsageInfoTypes = -1;
592 static gint ett_h225_DataRate = -1;
593 static gint ett_h225_dataRatesSupported = -1;
594 static gint ett_h225_TerminalInfo = -1;
595 static gint ett_h225_StimulusControl = -1;
596 static gint ett_h225_ReleaseCompleteReason = -1;
597 static gint ett_h225_connectionParameters = -1;
598 static gint ett_h225_RasUsageSpecification_when = -1;
599 static gint ett_h225_RasUsageSpecification_callStartingPoint = -1;
600 static gint ett_h225_RasUsageSpecification = -1;
601 static gint ett_h225_ipAddress = -1;
602 static gint ett_h225_routing = -1;
603 static gint ett_h225_route = -1;
604 static gint ett_h225_ipSourceRoute = -1;
605 static gint ett_h225_ipxAddress = -1;
606 static gint ett_h225_ip6Address = -1;
607 static gint ett_h225_TransportAddress = -1;
608 static gint ett_h225_TransportChannelInfo = -1;
609 static gint ett_h225_CarrierInfo = -1;
610 static gint ett_h225_InfoRequestResponseStatus = -1;
611 static gint ett_h225_CallIdentifier = -1;
612 static gint ett_h225_CallLinkage = -1;
613 static gint ett_h225_tokens = -1;
614 static gint ett_h225_CryptoH323Tokens = -1;
615 static gint ett_h225_AlternateGK = -1;
616 static gint ett_h225_alternateGatekeeper = -1;
617 static gint ett_h225_AltGKInfo = -1;
618 static gint ett_h225_annexE = -1;
619 static gint ett_h225_sctp = -1;
620 static gint ett_h225_AlternateTransportAddress = -1;
621 static gint ett_h225_UUIEsRequested = -1;
622 static gint ett_h225_Q954Details = -1;
623 static gint ett_h225_QseriesOptions = -1;
624 static gint ett_h225_associatedSessionIds = -1;
625 static gint ett_h225_RTPSession = -1;
626 static gint ett_h225_StatusUUIE = -1;
627 static gint ett_h225_StatusInquiryUUIE = -1;
628 static gint ett_h225_SetupAcknowledgeUUIE = -1;
629 static gint ett_h225_NotifyUUIE = -1;
630 static gint ett_h225_GSMUIM = -1;
631 static gint ett_h225_systemid = -1;
632 static gint ett_h225_ANSI41UIM = -1;
633 static gint ett_h225_MobileUIM = -1;
634 static gint ett_h225_e164Number = -1;
635 static gint ett_h225_privateNumber = -1;
636 static gint ett_h225_PartyNumber = -1;
637 static gint ett_h225_TunnelledProtocolAlternateIdentifier = -1;
638 static gint ett_h225_AliasAddress = -1;
639 static gint ett_h225_SupportedPrefix = -1;
640 static gint ett_h225_SupportedPrefixes = -1;
641 static gint ett_h225_H310Caps = -1;
642 static gint ett_h225_H320Caps = -1;
643 static gint ett_h225_H321Caps = -1;
644 static gint ett_h225_H322Caps = -1;
645 static gint ett_h225_H323Caps = -1;
646 static gint ett_h225_H324Caps = -1;
647 static gint ett_h225_VoiceCaps = -1;
648 static gint ett_h225_T120OnlyCaps = -1;
649 static gint ett_h225_NonStandardProtocol = -1;
650 static gint ett_h225_SIPCaps = -1;
651 static gint ett_h225_AddressPattern_range = -1;
652 static gint ett_h225_AddressPattern = -1;
653 static gint ett_h225_ConferenceList = -1;
654 static gint ett_h225_conferences = -1;
655 static gint ett_h225_T38FaxAnnexbOnlyCaps = -1;
656 static gint ett_h225_SupportedProtocols = -1;
657 static gint ett_h225_protocol = -1;
658 static gint ett_h225_GatewayInfo = -1;
659 static gint ett_h225_McuInfo = -1;
660 static gint ett_h225_TunnelledProtocol_id = -1;
661 static gint ett_h225_TunnelledProtocol = -1;
662 static gint ett_h225_TunnelledProtocols = -1;
663 static gint ett_h225_CicInfo_cic = -1;
664 static gint ett_h225_CicInfo = -1;
665 static gint ett_h225_GroupID_member = -1;
666 static gint ett_h225_GroupID = -1;
667 static gint ett_h225_CircuitIdentifier = -1;
668 static gint ett_h225_GenericIdentifier = -1;
669 static gint ett_h225_EnumeratedParameter = -1;
670 static gint ett_h225_parameters = -1;
671 static gint ett_h225_GenericData = -1;
672 static gint ett_h225_Content = -1;
673 static gint ett_h225_Content_compound = -1;
674 static gint ett_h225_Content_nested = -1;
675 static gint ett_h225_neededFeatures = -1;
676 static gint ett_h225_desiredFeatures = -1;
677 static gint ett_h225_supportedFeatures = -1;
678 static gint ett_h225_FeatureSet = -1;
679 static gint ett_h225_CallsAvailable = -1;
680 static gint ett_h225_voiceGwCallsAvailable = -1;
681 static gint ett_h225_h310GwCallsAvailable = -1;
682 static gint ett_h225_h320GwCallsAvailable = -1;
683 static gint ett_h225_h321GwCallsAvailable = -1;
684 static gint ett_h225_h322GwCallsAvailable = -1;
685 static gint ett_h225_h323GwCallsAvailable = -1;
686 static gint ett_h225_h324GwCallsAvailable = -1;
687 static gint ett_h225_t120OnlyGwCallsAvailable = -1;
688 static gint ett_h225_t38FaxAnnexbOnlyGwCallsAvailable = -1;
689 static gint ett_h225_terminalCallsAvailable = -1;
690 static gint ett_h225_mcuCallsAvailable = -1;
691 static gint ett_h225_sipGwCallsAvailable = -1;
692 static gint ett_h225_CallCapacityInfo = -1;
693 static gint ett_h225_CallCapacity = -1;
694 static gint ett_h225_VendorIdentifier = -1;
695 static gint ett_h225_CapacityReportingCapability = -1;
696 static gint ett_h225_CallCreditCapability = -1;
697 static gint ett_h225_BandwidthDetails = -1;
698 static gint ett_h225_CallTerminationCause = -1;
699 static gint ett_h225_CircuitInfo = -1;
700 static gint ett_h225_genericData = -1;
701 static gint ett_h225_fastStart = -1;
702 static gint ett_h225_InformationUUIE = -1;
703 static gint ett_h225_routeCallToSCN = -1;
704 static gint ett_h225_AdmissionRejectReason = -1;
705 static gint ett_h225_EncryptIntAlg = -1;
706 static gint ett_h225_NonIsoIntegrityMechanism = -1;
707 static gint ett_h225_IntegrityMechanism = -1;
708 static gint ett_h225_LocationRejectReason = -1;
709 static gint ett_h225_EndPointType = -1;
710 static gint ett_h225_CallProceedingUUIE = -1;
711 static gint ett_h225_CapacityReportingSpecification_when = -1;
712 static gint ett_h225_CapacityReportingSpecification = -1;
713 static gint ett_h225_ProgressUUIE = -1;
714 static gint ett_h225_EndPoint = -1;
715 static gint ett_h225_destExtraCallInfo = -1;
716 static gint ett_h225_remoteExtensionAddress = -1;
717 static gint ett_h225_rasAddress_sequence = -1;
718 static gint ett_h225_callSignalAddress = -1;
719 static gint ett_h225_ICV = -1;
720 static gint ett_h225_BandwidthConfirm = -1;
721 static gint ett_h225_UnregistrationConfirm = -1;
722 static gint ett_h225_NonStandardMessage = -1;
723 static gint ett_h225_InfoRequestAck = -1;
724 static gint ett_h225_InfoRequestNak = -1;
725 static gint ett_h225_ResourcesAvailableConfirm = -1;
726 static gint ett_h225_GatekeeperRequest = -1;
727 static gint ett_h225_integrity = -1;
728 static gint ett_h225_algorithmOIDs = -1;
729 static gint ett_h225_alternateEndpoints = -1;
730 static gint ett_h225_endpointAlias = -1;
731 static gint ett_h225_ServiceControlResponse = -1;
732 static gint ett_h225_DisengageReject = -1;
733 static gint ett_h225_BandwidthReject = -1;
734 static gint ett_h225_UnregistrationReject = -1;
735 static gint ett_h225_UnregistrationRequest = -1;
736 static gint ett_h225_endpointAliasPattern = -1;
737 static gint ett_h225_RegistrationReject = -1;
738 static gint ett_h225_invalidTerminalAliases = -1;
739 static gint ett_h225_terminalAlias = -1;
740 static gint ett_h225_terminalAliasPattern = -1;
741 static gint ett_h225_RegistrationRejectReason = -1;
742 static gint ett_h225_duplicateAlias = -1;
743 static gint ett_h225_GatekeeperReject = -1;
744 static gint ett_h225_ResourcesAvailableIndicate = -1;
745 static gint ett_h225_protocols = -1;
746 static gint ett_h225_CallCreditServiceControl = -1;
747 static gint ett_h225_ExtendedAliasAddress = -1;
748 static gint ett_h225_UnknownMessageResponse = -1;
749 static gint ett_h225_AdmissionRequest = -1;
750 static gint ett_h225_desiredProtocols = -1;
751 static gint ett_h225_destAlternatives = -1;
752 static gint ett_h225_srcAlternatives = -1;
753 static gint ett_h225_srcInfo = -1;
754 static gint ett_h225_DestinationInfo = -1;
755 static gint ett_h225_InfoRequest = -1;
756 static gint ett_h225_RequestInProgress = -1;
757 static gint ett_h225_ServiceControlDescriptor = -1;
758 static gint ett_h225_ServiceControlSession = -1;
759 static gint ett_h225_AlertingUUIE = -1;
760 static gint ett_h225_serviceControl = -1;
761 static gint ett_h225_alertingAddress = -1;
762 static gint ett_h225_ReleaseCompleteUUIE = -1;
763 static gint ett_h225_busyAddress = -1;
764 static gint ett_h225_FacilityUUIE = -1;
765 static gint ett_h225_alternativeAliasAddress = -1;
766 static gint ett_h225_AdmissionReject = -1;
767 static gint ett_h225_parallelH245Control = -1;
768 static gint ett_h225_languages = -1;
769 static gint ett_h225_SetupUUIE = -1;
770 static gint ett_h225_sourceAddress = -1;
771 static gint ett_h225_destinationAddress = -1;
772 static gint ett_h225_destExtraCRV = -1;
773 static gint ett_h225_h245SecurityCapability = -1;
774 static gint ett_h225_additionalSourceAddresses = -1;
775 static gint ett_h225_ConnectUUIE = -1;
776 static gint ett_h225_connectedAddress = -1;
777 static gint ett_h225_h323_message_body = -1;
778 static gint ett_h225_LocationConfirm = -1;
779 static gint ett_h225_supportedProtocols = -1;
780 static gint ett_h225_modifiedSrcInfo = -1;
781 static gint ett_h225_LocationReject = -1;
782 static gint ett_h225_callSpecific = -1;
783 static gint ett_h225_ServiceControlIndication = -1;
784 static gint ett_h225_RasUsageInformation = -1;
785 static gint ett_h225_T_nonStandardUsageFields = -1;
786 static gint ett_h225_GatekeeperConfirm = -1;
787 static gint ett_h225_RegistrationRequest = -1;
788 static gint ett_h225_supportedH248Packages = -1;
789 static gint ett_h225_DisengageConfirm = -1;
790 static gint ett_h225_AdmissionConfirm = -1;
791 static gint ett_h225_usageSpec = -1;
792 static gint ett_h225_DisengageRequest = -1;
793 static gint ett_h225_LocationRequest = -1;
794 static gint ett_h225_SourceInfo = -1;
795 static gint ett_h225_sourceEndpointInfo = -1;
796 static gint ett_h225_BandwidthRequest = -1;
797 static gint ett_h225_bandwidthDetails = -1;
798 static gint ett_h225_admissionConfirmSequence = -1;
799 static gint ett_h225_tunnelledSignallingMessage = -1;
800 static gint ett_h225_messageContent = -1;
801 static gint ett_h225_H323_UU_PDU = -1;
802 static gint ett_h225_h4501SupplementaryService = -1;
803 static gint ett_h225_h245Control = -1;
804 static gint ett_h225_T_nonStandardControl = -1;
805 static gint ett_h225_preGrantedARQ = -1;
806 static gint ett_h225_RegistrationConfirm = -1;
807 static gint ett_h225_pdu_item = -1;
808 static gint ett_h225_pdu = -1;
809 static gint ett_h225_perCallInfo_item = -1;
810 static gint ett_h225_audio = -1;
811 static gint ett_h225_video = -1;
812 static gint ett_h225_data = -1;
813 static gint ett_h225_substituteConfIDs = -1;
814 static gint ett_h225_perCallInfo = -1;
815 static gint ett_h225_InfoRequestResponse = -1;
816 static gint ett_h225_RasMessage = -1;
817 static gint ett_h225_H323_UserInformation = -1;
818 static gint ett_h225_user_data = -1;
819 static gint ett_h225_H221NonStandard = -1;
820 static gint ett_h225_NonStandardIdentifier = -1;
821 static gint ett_h225_NonStandardParameter = -1;
822 static gint ett_h225_aliasAddress_sequence = -1;
823 static gint ett_h225_T_cryptoEPPwdHash = -1;
824 static gint ett_h225_T_cryptoGKPwdHash = -1;
825 static gint ett_h225_SEQUNCE_OF_AuthenticationMechanism = -1;
826 /*bbb*/
827
828 /* Subdissector tables */
829 static dissector_table_t nsp_object_dissector_table;
830 static dissector_table_t nsp_h221_dissector_table;
831 static dissector_table_t tp_dissector_table;
832
833
834 static dissector_handle_t h245_handle=NULL;
835 static dissector_handle_t h245dg_handle=NULL;
836 static dissector_handle_t h4501_handle=NULL;
837
838
839 static dissector_handle_t nsp_handle;
840 static dissector_handle_t tp_handle;
841
842 static guint32  ipv4_address;
843 static guint32  ipv4_port;
844 static char object[256];
845 static guint32 t35CountryCode;
846 static guint32 t35Extension;
847 static guint32 manufacturerCode;
848 static guint32 h221NonStandard;
849 static char tpID[256];
850
851 static gboolean contains_faststart = FALSE;
852
853 static const true_false_string tfs_unsolicited_bit = {
854         "unsolicited bit is SET",
855         "unsolicited bit is NOT set"
856 };
857
858 static const true_false_string tfs_needResponse_bit = {
859         "needResponse bit is SET",
860         "needResponse bit is NOT set"
861 };
862
863 static const true_false_string tfs_originator_bit = {
864         "originator bit is SET",
865         "originator bit is NOT set"
866 };
867
868 static const true_false_string tfs_sent_bit = {
869         "sent bit is SET",
870         "sent bit is NOT set"
871 };
872
873 static const true_false_string tfs_useGKCallSignalAddressToAnswer_bit = {
874         "useGKCallSignalAddressToAnswer bit is SET",
875         "useGKCallSignalAddressToAnswer bit is NOT set"
876 };
877
878 static const true_false_string tfs_answerCall_bit = {
879         "answerCall bit is SET",
880         "answerCall bit is NOT set"
881 };
882
883 static const true_false_string tfs_useGKCallSignalAddressToMakeCall_bit = {
884         "useGKCallSignalAddressToMakeCall bit is SET",
885         "useGKCallSignalAddressToMakeCall bit is NOT set"
886 };
887
888 static const true_false_string tfs_makeCall_bit = {
889         "makeCall bit is SET",
890         "makeCall bit is NOT set"
891 };
892
893 static const true_false_string tfs_h245Tunneling_bit = {
894         "h245Tunneling bit is SET",
895         "h245Tunneling bit is NOT set"
896 };
897
898 static const true_false_string tfs_willRespondToIRR_bit = {
899         "willRespondToIRR bit is SET",
900         "willRespondToIRR bit is NOT set"
901 };
902
903 static const true_false_string tfs_keepAlive_bit = {
904         "keepAlive bit is SET",
905         "keepAlive bit is NOT set"
906 };
907
908 static const true_false_string tfs_discoveryComplete_bit = {
909         "discoveryComplete bit is SET",
910         "discoveryComplete bit is NOT set"
911 };
912
913 static const true_false_string tfs_answeredCall_bit = {
914         "answeredCall bit is SET",
915         "answeredCall bit is NOT set"
916 };
917
918 static const true_false_string tfs_canOverlapSend_bit = {
919         "canOverlapSend bit is SET",
920         "canOverlapSend bit is NOT set"
921 };
922
923 static const true_false_string tfs_mediaWaitForConnect_bit = {
924         "mediaWaitForConnect bit is SET",
925         "mediaWaitForConnect bit is NOT set"
926 };
927
928 static const true_false_string tfs_activeMC_bit = {
929         "activeMC bit is SET",
930         "activeMC bit is NOT set"
931 };
932
933 static const true_false_string tfs_canMapAlias_bit = {
934         "canMapAlias bit is SET",
935         "canMapAlias bit is NOT set"
936 };
937
938 static const true_false_string tfs_willSupplyUUIEs_bit = {
939         "willSupplyUUIEs bit is SET",
940         "willSupplyUUIEs bit is NOT set"
941 };
942
943 static const true_false_string tfs_canMapSrcAlias_bit = {
944         "canMapSrcAlias bit is SET",
945         "canMapSrcAlias bit is NOT set"
946 };
947
948 static const true_false_string tfs_enforceCallDurationLimit_bit = {
949         "enforceCallDurationLimit bit is SET",
950         "enforceCallDurationLimit bit is NOT set"
951 };
952
953 static const true_false_string tfs_almostOutOfResources_bit = {
954         "almostOutOfResources bit is SET",
955         "almostOutOfResources bit is NOT set"
956 };
957
958 static const true_false_string tfs_maintainConnection_bit = {
959         "maintainConnection bit is SET",
960         "maintainConnection bit is NOT set"
961 };
962
963 static const true_false_string tfs_multipleCalls_bit = {
964         "multipleCalls bit is SET",
965         "multipleCalls bit is NOT set"
966 };
967
968 static const true_false_string tfs_undefinedNode_bit = {
969         "undefinedNode bit is SET",
970         "undefinedNode bit is NOT set"
971 };
972
973 static const true_false_string tfs_mc_bit = {
974         "mc bit is SET",
975         "mc bit is NOT set"
976 };
977
978
979 static const true_false_string tfs_fastConnectRefused_bit = {
980         "fastConnectRefused bit is SET",
981         "fastConnectRefused bit is NOT set"
982 };
983
984 static const true_false_string tfs_BandwidthDetails_multicast_bit = {
985         "BandwidthDetails_multicast bit is SET",
986         "BandwidthDetails_multicast bit is NOT set"
987 };
988
989 static const true_false_string tfs_BandwidthDetails_sender_bit = {
990         "BandwidthDetails_sender bit is SET",
991         "BandwidthDetails_sender bit is NOT set"
992 };
993
994 static const true_false_string tfs_canEnforceDurationLimit_bit = {
995         "canEnforceDurationLimit bit is SET",
996         "canEnforceDurationLimit bit is NOT set"
997 };
998
999 static const true_false_string tfs_canDisplayAmountString_bit = {
1000         "canDisplayAmountString bit is SET",
1001         "canDisplayAmountString bit is NOT set"
1002 };
1003
1004 static const true_false_string tfs_canReportCallCapacity_bit = {
1005         "canReportCallCapacity bit is SET",
1006         "canReportCallCapacity bit is NOT set"
1007 };
1008
1009 static const true_false_string tfs_replacementFeatureSet_bit = {
1010         "replacementFeatureSet bit is SET",
1011         "replacementFeatureSet bit is NOT set"
1012 };
1013
1014 static const true_false_string tfs_Content_bool_bit = {
1015         "Content_bool bit is SET",
1016         "Content_bool bit is NOT set"
1017 };
1018
1019 static const true_false_string tfs_q957Full_bit = {
1020         "q957Full bit is SET",
1021         "q957Full bit is NOT set"
1022 };
1023
1024 static const true_false_string tfs_q956Full_bit = {
1025         "q956Full bit is SET",
1026         "q956Full bit is NOT set"
1027 };
1028
1029 static const true_false_string tfs_q955Full_bit = {
1030         "q955Full bit is SET",
1031         "q955Full bit is NOT set"
1032 };
1033
1034 static const true_false_string tfs_q953Full_bit = {
1035         "q953Full bit is SET",
1036         "q953Full bit is NOT set"
1037 };
1038
1039 static const true_false_string tfs_q952Full_bit = {
1040         "q952Full bit is SET",
1041         "q952Full bit is NOT set"
1042 };
1043
1044 static const true_false_string tfs_q951Full_bit = {
1045         "q951Full bit is SET",
1046         "q951Full bit is NOT set"
1047 };
1048
1049 static const true_false_string tfs_q932Full_bit = {
1050         "q932Full bit is SET",
1051         "q932Full bit is NOT set"
1052 };
1053
1054 static const true_false_string tfs_threePartyService_bit = {
1055         "threePartyService bit is SET",
1056         "threePartyService bit is NOT set"
1057 };
1058
1059 static const true_false_string tfs_conferenceCalling_bit = {
1060         "conferenceCalling bit is SET",
1061         "conferenceCalling bit is NOT set"
1062 };
1063
1064 static const true_false_string tfs_notify_bool_bit = {
1065         "notify_bool bit is SET",
1066         "notify_bool bit is NOT set"
1067 };
1068
1069 static const true_false_string tfs_setupAcknowledge_bool_bit = {
1070         "setupAcknowledge_bool bit is SET",
1071         "setupAcknowledge_bool bit is NOT set"
1072 };
1073
1074 static const true_false_string tfs_statusInquiry_bool_bit = {
1075         "statusInquiry_bool bit is SET",
1076         "statusInquiry_bool bit is NOT set"
1077 };
1078
1079 static const true_false_string tfs_status_bool_bit = {
1080         "status_bool bit is SET",
1081         "status_bool bit is NOT set"
1082 };
1083
1084 static const true_false_string tfs_empty_bool_bit = {
1085         "empty_bool bit is SET",
1086         "empty_bool bit is NOT set"
1087 };
1088
1089 static const true_false_string tfs_progress_bool_bit = {
1090         "progress_bool bit is SET",
1091         "progress_bool bit is NOT set"
1092 };
1093
1094 static const true_false_string tfs_facility_bool_bit = {
1095         "facility_bool bit is SET",
1096         "facility_bool bit is NOT set"
1097 };
1098
1099 static const true_false_string tfs_releaseComplete_bool_bit = {
1100         "releaseComplete_bool bit is SET",
1101         "releaseComplete_bool bit is NOT set"
1102 };
1103
1104 static const true_false_string tfs_information_bool_bit = {
1105         "information_bool bit is SET",
1106         "information_bool bit is NOT set"
1107 };
1108
1109 static const true_false_string tfs_alerting_bool_bit = {
1110         "alerting_bool bit is SET",
1111         "alerting_bool bit is NOT set"
1112 };
1113
1114 static const true_false_string tfs_connect_bool_bit = {
1115         "connect_bool bit is SET",
1116         "connect_bool bit is NOT set"
1117 };
1118
1119 static const true_false_string tfs_callProceeding_bool_bit = {
1120         "callProceeding_bool bit is SET",
1121         "callProceeding_bool bit is NOT set"
1122 };
1123
1124 static const true_false_string tfs_setup_bool_bit = {
1125         "setup_bool bit is SET",
1126         "setup_bool bit is NOT set"
1127 };
1128
1129 static const true_false_string tfs_altGKisPermanent_bit = {
1130         "altGKisPermanent bit is SET",
1131         "altGKisPermanent bit is NOT set"
1132 };
1133
1134 static const true_false_string tfs_needToRegister_bit = {
1135         "needToRegister bit is SET",
1136         "needToRegister bit is NOT set"
1137 };
1138
1139
1140
1141 static gboolean h225_reassembly = TRUE;
1142
1143
1144
1145 static int
1146 dissect_h225_NULL(tvbuff_t *tvb _U_, int offset, packet_info *pinfo _U_, proto_tree *tree _U_)
1147 {
1148         return offset;
1149 }
1150
1151 static const value_string PresentationIndicator_vals[] = {
1152         { 0, "presentationAllowed" },
1153         { 1, "presentationRestricted" },
1154         { 2, "addressNotAvailable" },
1155         { 0, NULL}
1156 };
1157 static per_choice_t PresentationIndicator_choice[] = {
1158         { 0, "presentationAllowed", ASN1_EXTENSION_ROOT,
1159                 dissect_h225_NULL},
1160         { 1, "presentationRestricted", ASN1_EXTENSION_ROOT,
1161                 dissect_h225_NULL},
1162         { 2, "addressNotAvailable", ASN1_EXTENSION_ROOT,
1163                 dissect_h225_NULL},
1164         { 0, NULL, 0, NULL }
1165 };
1166 static int
1167 dissect_h225_PresentationIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1168 {
1169         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_PresentationIndicator, ett_h225_PresentationIndicator, PresentationIndicator_choice, "PresentationIndicator", NULL);
1170         return offset;
1171 }
1172
1173
1174 static const value_string conferenceGoal_vals[] = {
1175         { 0, "create" },
1176         { 1, "join" },
1177         { 2, "invite" },
1178         { 3, "capability-negotiation" },
1179         { 4, "callIndependentSupplementaryService" },
1180         { 0, NULL}
1181 };
1182 static per_choice_t conferenceGoal_choice[] = {
1183         { 0, "create", ASN1_EXTENSION_ROOT,
1184                 dissect_h225_NULL },
1185         { 1, "join", ASN1_EXTENSION_ROOT,
1186                 dissect_h225_NULL },
1187         { 2, "invite", ASN1_EXTENSION_ROOT,
1188                 dissect_h225_NULL },
1189         { 3, "capability-negotiation", ASN1_NOT_EXTENSION_ROOT,
1190                 dissect_h225_NULL },
1191         { 4, "callIndependentSupplementaryService", ASN1_NOT_EXTENSION_ROOT,
1192                 dissect_h225_NULL },
1193         { 0, NULL, 0, NULL }
1194 };
1195 static int
1196 dissect_h225_conferenceGoal(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1197 {
1198         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_conferenceGoal, ett_h225_conferenceGoal, conferenceGoal_choice, "conferenceGoal", NULL);
1199         return offset;
1200 }
1201
1202
1203 static const value_string ScnConnectionType_vals[] = {
1204         { 0, "unknown" },
1205         { 1, "bChannel" },
1206         { 2, "hybrid2x64" },
1207         { 3, "hybrid384" },
1208         { 4, "hybrid1536" },
1209         { 5, "hybrid1920" },
1210         { 6, "multirate" },
1211         { 0, NULL}
1212 };
1213 static per_choice_t ScnConnectionType_choice[] = {
1214         { 0, "unknown", ASN1_EXTENSION_ROOT,
1215                 dissect_h225_NULL },
1216         { 1, "bChannel", ASN1_EXTENSION_ROOT,
1217                 dissect_h225_NULL },
1218         { 2, "hybrid2x64", ASN1_EXTENSION_ROOT,
1219                 dissect_h225_NULL },
1220         { 3, "hybrid384", ASN1_EXTENSION_ROOT,
1221                 dissect_h225_NULL },
1222         { 4, "hybrid1536", ASN1_EXTENSION_ROOT,
1223                 dissect_h225_NULL },
1224         { 5, "hybrid1920", ASN1_EXTENSION_ROOT,
1225                 dissect_h225_NULL },
1226         { 6, "multirate", ASN1_EXTENSION_ROOT,
1227                 dissect_h225_NULL },
1228         { 0, NULL, 0, NULL }
1229 };
1230 static int
1231 dissect_h225_ScnConnectionType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1232 {
1233         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_ScnConnectionType, ett_h225_ScnConnectionType, ScnConnectionType_choice, "ScnConnectionType", NULL);
1234         return offset;
1235 }
1236
1237
1238 static const value_string ScnConnectionAggregation_vals[] = {
1239         { 0, "auto" },
1240         { 1, "none" },
1241         { 2, "h221" },
1242         { 3, "bonded-mode1" },
1243         { 4, "bonded-mode2" },
1244         { 5, "bonded-mode3" },
1245         { 0, NULL}
1246 };
1247 static per_choice_t ScnConnectionAggregation_choice[] = {
1248         { 0, "auto", ASN1_EXTENSION_ROOT,
1249                 dissect_h225_NULL },
1250         { 1, "none", ASN1_EXTENSION_ROOT,
1251                 dissect_h225_NULL },
1252         { 2, "h221", ASN1_EXTENSION_ROOT,
1253                 dissect_h225_NULL },
1254         { 3, "bonded-mode1", ASN1_EXTENSION_ROOT,
1255                 dissect_h225_NULL },
1256         { 4, "bonded-mode2", ASN1_EXTENSION_ROOT,
1257                 dissect_h225_NULL },
1258         { 5, "bonded-mode3", ASN1_EXTENSION_ROOT,
1259                 dissect_h225_NULL },
1260         { 0, NULL, 0, NULL }
1261 };
1262 static int
1263 dissect_h225_ScnConnectionAggregation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1264 {
1265         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_ScnConnectionAggregation, ett_h225_ScnConnectionAggregation, ScnConnectionAggregation_choice, "ScnConnectionAggregation", NULL);
1266         return offset;
1267 }
1268
1269
1270 const value_string FacilityReason_vals[] = {
1271         { 0, "routeCallToGatekeeper" },
1272         { 1, "callForwarded" },
1273         { 2, "routeCallToMC" },
1274         { 3, "undefinedReason" },
1275         { 4, "conferenceListChoice" },
1276         { 5, "startH245" },
1277         { 6, "noH245" },
1278         { 7, "newTokens" },
1279         { 8, "featureSetUpdate" },
1280         { 9, "forwardedElements" },
1281         { 10, "transportedInformation" },
1282         { 0, NULL}
1283 };
1284 static per_choice_t FacilityReason_choice[] = {
1285         { 0, "routeCallToGatekeeper", ASN1_EXTENSION_ROOT,
1286                 dissect_h225_NULL },
1287         { 1, "callForwarded", ASN1_EXTENSION_ROOT,
1288                 dissect_h225_NULL },
1289         { 2, "routeCallToMC", ASN1_EXTENSION_ROOT,
1290                 dissect_h225_NULL },
1291         { 3, "undefinedReason", ASN1_EXTENSION_ROOT,
1292                 dissect_h225_NULL },
1293         { 4, "conferenceListChoice", ASN1_NOT_EXTENSION_ROOT,
1294                 dissect_h225_NULL },
1295         { 5, "startH245", ASN1_NOT_EXTENSION_ROOT,
1296                 dissect_h225_NULL },
1297         { 6, "noH245", ASN1_NOT_EXTENSION_ROOT,
1298                 dissect_h225_NULL },
1299         { 7, "newTokens", ASN1_NOT_EXTENSION_ROOT,
1300                 dissect_h225_NULL },
1301         { 8, "featureSetUpdate", ASN1_NOT_EXTENSION_ROOT,
1302                 dissect_h225_NULL },
1303         { 9, "forwardedElements", ASN1_NOT_EXTENSION_ROOT,
1304                 dissect_h225_NULL },
1305         { 10, "transportedInformation", ASN1_NOT_EXTENSION_ROOT,
1306                 dissect_h225_NULL },
1307         { 0, NULL, 0, NULL }
1308 };
1309 static int
1310 dissect_h225_FacilityReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1311 {
1312         guint32 value;
1313         
1314         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_FacilityReason, ett_h225_FacilityReason, FacilityReason_choice, "FacilityReason", &value);
1315         h225_pi.reason = value;
1316         return offset;
1317 }
1318
1319
1320
1321 static const value_string PublicTypeOfNumber_vals[] = {
1322         { 0, "unknown" },
1323         { 1, "internationalNumber" },
1324         { 2, "nationalNumber" },
1325         { 3, "networkSpecificNumber" },
1326         { 4, "subscriberNumber" },
1327         { 5, "abbreviatedNumber" },
1328         { 0, NULL}
1329 };
1330 static per_choice_t PublicTypeOfNumber_choice[] = {
1331         { 0, "unknown", ASN1_EXTENSION_ROOT,
1332                 dissect_h225_NULL },
1333         { 1, "internationalNumber", ASN1_EXTENSION_ROOT,
1334                 dissect_h225_NULL },
1335         { 2, "nationalNumber", ASN1_EXTENSION_ROOT,
1336                 dissect_h225_NULL },
1337         { 3, "networkSpecificNumber", ASN1_EXTENSION_ROOT,
1338                 dissect_h225_NULL },
1339         { 4, "subscriberNumber", ASN1_EXTENSION_ROOT,
1340                 dissect_h225_NULL },
1341         { 5, "abbreviatedNumber", ASN1_EXTENSION_ROOT,
1342                 dissect_h225_NULL },
1343         { 0, NULL, 0, NULL }
1344 };
1345 static int
1346 dissect_h225_PublicTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1347 {
1348         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_PublicTypeOfNumber, ett_h225_PublicTypeOfNumber, PublicTypeOfNumber_choice, "PublicTypeOfNumber", NULL);
1349         return offset;
1350 }
1351
1352
1353
1354 static const value_string PrivateTypeOfNumber_vals[] = {
1355         { 0, "unknown" },
1356         { 1, "level2RegionalNumber" },
1357         { 2, "level1RegionalNumber" },
1358         { 3, "pISNSpecificNumber" },
1359         { 4, "localNumber" },
1360         { 5, "abbreviatedNumber" },
1361         { 0, NULL}
1362 };
1363 static per_choice_t PrivateTypeOfNumber_choice[] = {
1364         { 0, "unknown", ASN1_EXTENSION_ROOT,
1365                 dissect_h225_NULL },
1366         { 1, "level2RegionalNumber", ASN1_EXTENSION_ROOT,
1367                 dissect_h225_NULL },
1368         { 2, "level1RegionalNumber", ASN1_EXTENSION_ROOT,
1369                 dissect_h225_NULL },
1370         { 3, "pISNSpecificNumber", ASN1_EXTENSION_ROOT,
1371                 dissect_h225_NULL },
1372         { 4, "localNumber", ASN1_EXTENSION_ROOT,
1373                 dissect_h225_NULL },
1374         { 5, "abbreviatedNumber", ASN1_EXTENSION_ROOT,
1375                 dissect_h225_NULL },
1376         { 0, NULL, 0, NULL }
1377 };
1378 static int
1379 dissect_h225_PrivateTypeOfNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1380 {
1381         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_PrivateTypeOfNumber, ett_h225_PrivateTypeOfNumber, PrivateTypeOfNumber_choice, "PrivateTypeOfNumber", NULL);
1382         return offset;
1383 }
1384
1385
1386 static const value_string UseSpecifiedTransport_vals[] = {
1387         { 0, "tcp" },
1388         { 1, "annexE" },
1389         { 2, "sctp" },
1390         { 0, NULL}
1391 };
1392 static per_choice_t UseSpecifiedTransport_choice[] = {
1393         { 0, "tcp", ASN1_EXTENSION_ROOT,
1394                 dissect_h225_NULL },
1395         { 1, "annexE", ASN1_EXTENSION_ROOT,
1396                 dissect_h225_NULL },
1397         { 2, "sctp", ASN1_NOT_EXTENSION_ROOT,
1398                 dissect_h225_NULL },
1399         { 0, NULL, 0, NULL }
1400 };
1401 static int
1402 dissect_h225_UseSpecifiedTransport(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1403 {
1404         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_UseSpecifiedTransport, ett_h225_UseSpecifiedTransport, UseSpecifiedTransport_choice, "UseSpecifiedTransport", NULL);
1405         return offset;
1406 }
1407
1408
1409
1410 static const value_string SecurityErrors_vals[] = {
1411         { 0, "securityWrongSyncTime" },
1412         { 1, "securityReplay" },
1413         { 2, "securityWrongGeneralID" },
1414         { 3, "securityWrongSendersID" },
1415         { 4, "securityIntegrityFailed" },
1416         { 5, "securityWrongOID" },
1417         { 6, "securityDHmismatch" },
1418         { 7, "securityCertificateExpired" },
1419         { 8, "securityCertificateDateInvalid" },
1420         { 9, "securityCertificateRevoked" },
1421         { 10, "securityCertificateNotReadable" },
1422         { 11, "securityCertificateSignatureInvalid" },
1423         { 12, "securityCertificateMissing" },
1424         { 13, "securityCertificateIncomplete" },
1425         { 14, "securityUnsupportedCertificateAlgOID" },
1426         { 15, "securityUnknownCA" },
1427         { 0, NULL}
1428 };
1429 static per_choice_t SecurityErrors_choice[] = {
1430         { 0, "securityWrongSyncTime", ASN1_EXTENSION_ROOT,
1431                 dissect_h225_NULL },
1432         { 1, "securityReplay", ASN1_EXTENSION_ROOT,
1433                 dissect_h225_NULL },
1434         { 2, "securityWrongGeneralID", ASN1_EXTENSION_ROOT,
1435                 dissect_h225_NULL },
1436         { 3, "securityWrongSendersID", ASN1_EXTENSION_ROOT,
1437                 dissect_h225_NULL },
1438         { 4, "securityIntegrityFailed", ASN1_EXTENSION_ROOT,
1439                 dissect_h225_NULL },
1440         { 5, "securityWrongOID", ASN1_EXTENSION_ROOT,
1441                 dissect_h225_NULL },
1442         { 6, "securityDHmismatch", ASN1_EXTENSION_ROOT,
1443                 dissect_h225_NULL },
1444         { 7, "securityCertificateExpired", ASN1_EXTENSION_ROOT,
1445                 dissect_h225_NULL },
1446         { 8, "securityCertificateDateInvalid", ASN1_EXTENSION_ROOT,
1447                 dissect_h225_NULL },
1448         { 9, "securityCertificateRevoked", ASN1_EXTENSION_ROOT,
1449                 dissect_h225_NULL },
1450         { 10, "securityCertificateNotReadable", ASN1_EXTENSION_ROOT,
1451                 dissect_h225_NULL },
1452         { 11, "securityCertificateSignatureInvalid", ASN1_EXTENSION_ROOT,
1453                 dissect_h225_NULL },
1454         { 12, "securityCertificateMissing", ASN1_EXTENSION_ROOT,
1455                 dissect_h225_NULL },
1456         { 13, "securityCertificateIncomplete", ASN1_EXTENSION_ROOT,
1457                 dissect_h225_NULL },
1458         { 14, "securityUnsupportedCertificateAlgOID", ASN1_EXTENSION_ROOT,
1459                 dissect_h225_NULL },
1460         { 15, "securityUnknownCA", ASN1_EXTENSION_ROOT,
1461                 dissect_h225_NULL },
1462         { 0, NULL, 0, NULL }
1463 };
1464 static int
1465 dissect_h225_SecurityErrors(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1466 {
1467         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SecurityErrors, ett_h225_SecurityErrors, SecurityErrors_choice, "SecurityErrors", NULL);
1468         return offset;
1469 }
1470
1471
1472
1473 static const value_string SecurityErrors2_vals[] = {
1474         { 0, "securityWrongSyncTime" },
1475         { 1, "securityReplay" },
1476         { 2, "securityWrongGeneralID" },
1477         { 3, "securityWrongSendersID" },
1478         { 4, "securityIntegrityFailed" },
1479         { 5, "securityWrongOID" },
1480         { 0, NULL}
1481 };
1482 static per_choice_t SecurityErrors2_choice[] = {
1483         { 0, "securityWrongSyncTime", ASN1_EXTENSION_ROOT,
1484                 dissect_h225_NULL },
1485         { 1, "securityReplay", ASN1_EXTENSION_ROOT,
1486                 dissect_h225_NULL },
1487         { 2, "securityWrongGeneralID", ASN1_EXTENSION_ROOT,
1488                 dissect_h225_NULL },
1489         { 3, "securityWrongSendersID", ASN1_EXTENSION_ROOT,
1490                 dissect_h225_NULL },
1491         { 4, "securityIntegrityFailed", ASN1_EXTENSION_ROOT,
1492                 dissect_h225_NULL },
1493         { 5, "securityWrongOID", ASN1_EXTENSION_ROOT,
1494                 dissect_h225_NULL },
1495         { 0, NULL, 0, NULL }
1496 };
1497 static int
1498 dissect_h225_SecurityErrors2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1499 {
1500         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SecurityErrors2, ett_h225_SecurityErrors2, SecurityErrors2_choice, "SecurityErrors2", NULL);
1501         return offset;
1502 }
1503
1504
1505 static const value_string ServiceControlSession_reason_vals[] = {
1506         { 0, "open" },
1507         { 1, "refresh" },
1508         { 2, "close" },
1509         { 0, NULL}
1510 };
1511 static per_choice_t ServiceControlSession_reason_choice[] = {
1512         { 0, "open", ASN1_EXTENSION_ROOT,
1513                 dissect_h225_NULL },
1514         { 1, "refresh", ASN1_EXTENSION_ROOT,
1515                 dissect_h225_NULL },
1516         { 2, "close", ASN1_EXTENSION_ROOT,
1517                 dissect_h225_NULL },
1518         { 0, NULL, 0, NULL }
1519 };
1520 static int
1521 dissect_h225_ServiceControlSession_reason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1522 {
1523         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_ServiceControlSession_reason, ett_h225_ServiceControlSession_reason, ServiceControlSession_reason_choice, "ServiceControlSession_reason", NULL);
1524         return offset;
1525 }
1526
1527
1528
1529 static const value_string billingMode_vals[] = {
1530         { 0, "credit" },
1531         { 1, "debit" },
1532         { 0, NULL}
1533 };
1534 static per_choice_t billingMode_choice[] = {
1535         { 0, "credit", ASN1_EXTENSION_ROOT,
1536                 dissect_h225_NULL },
1537         { 1, "debit", ASN1_EXTENSION_ROOT,
1538                 dissect_h225_NULL },
1539         { 0, NULL, 0, NULL }
1540 };
1541 static int
1542 dissect_h225_billingMode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1543 {
1544         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_billingMode, ett_h225_billingMode, billingMode_choice, "billingMode", NULL);
1545         return offset;
1546 }
1547
1548
1549
1550 static const value_string CCSCcallStartingPoint_vals[] = {
1551         { 0, "alerting" },
1552         { 1, "connect" },
1553         { 0, NULL}
1554 };
1555 static per_choice_t CCSCcallStartingPoint_choice[] = {
1556         { 0, "alerting", ASN1_EXTENSION_ROOT,
1557                 dissect_h225_NULL },
1558         { 1, "connect", ASN1_EXTENSION_ROOT,
1559                 dissect_h225_NULL },
1560         { 0, NULL, 0, NULL }
1561 };
1562 static int
1563 dissect_h225_CCSCcallStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1564 {
1565         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CCSCcallStartingPoint, ett_h225_CCSCcallStartingPoint, CCSCcallStartingPoint_choice, "CCSCcallStartingPoint", NULL);
1566         return offset;
1567 }
1568
1569
1570
1571 const value_string GatekeeperRejectReason_vals[] = {
1572         { 0, "resourceUnavailable" },
1573         { 1, "terminalExcluded" },
1574         { 2, "invalidRevision" },
1575         { 3, "undefinedReason" },
1576         { 4, "securityDenial" },
1577         { 5, "genericDataReason" },
1578         { 6, "neededFeatureNotSupported" },
1579         { 7, "securityError" },
1580         { 0, NULL}
1581 };
1582 static per_choice_t GatekeeperRejectReason_choice[] = {
1583         { 0, "resourceUnavailable", ASN1_EXTENSION_ROOT,
1584                 dissect_h225_NULL },
1585         { 1, "terminalExcluded", ASN1_EXTENSION_ROOT,
1586                 dissect_h225_NULL },
1587         { 2, "invalidRevision", ASN1_EXTENSION_ROOT,
1588                 dissect_h225_NULL },
1589         { 3, "undefinedReason", ASN1_EXTENSION_ROOT,
1590                 dissect_h225_NULL },
1591         { 4, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
1592                 dissect_h225_NULL },
1593         { 5, "genericDataReason", ASN1_NOT_EXTENSION_ROOT,
1594                 dissect_h225_NULL },
1595         { 6, "neededFeatureNotSupported", ASN1_NOT_EXTENSION_ROOT,
1596                 dissect_h225_NULL },
1597         { 7, "securityError", ASN1_NOT_EXTENSION_ROOT,
1598                 dissect_h225_SecurityErrors },
1599         { 0, NULL, 0, NULL }
1600 };
1601 static int
1602 dissect_h225_GatekeeperRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1603 {
1604         guint32 value;
1605         
1606         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_GatekeeperRejectReason, ett_h225_GatekeeperRejectReason, GatekeeperRejectReason_choice, "GatekeeperRejectReason", &value);
1607         h225_pi.reason = value;
1608         return offset;
1609 }
1610
1611
1612
1613 const value_string UnregRequestReason_vals[] = {
1614         { 0, "reregistrationRequired" },
1615         { 1, "ttlExpired" },
1616         { 2, "securityDenial" },
1617         { 3, "undefinedReason" },
1618         { 4, "maintenance" },
1619         { 5, "securityError" },
1620         { 0, NULL}
1621 };
1622 static per_choice_t UnregRequestReason_choice[] = {
1623         { 0, "reregistrationRequired", ASN1_EXTENSION_ROOT,
1624                 dissect_h225_NULL },
1625         { 1, "ttlExpired", ASN1_EXTENSION_ROOT,
1626                 dissect_h225_NULL },
1627         { 2, "securityDenial", ASN1_EXTENSION_ROOT,
1628                 dissect_h225_NULL },
1629         { 3, "undefinedReason", ASN1_EXTENSION_ROOT,
1630                 dissect_h225_NULL },
1631         { 4, "maintenance", ASN1_NOT_EXTENSION_ROOT,
1632                 dissect_h225_NULL },
1633         { 5, "securityError", ASN1_NOT_EXTENSION_ROOT,
1634                 dissect_h225_SecurityErrors2 },
1635         { 0, NULL, 0, NULL }
1636 };
1637 static int
1638 dissect_h225_UnregRequestReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1639 {
1640         guint32 value;
1641         
1642         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_UnregRequestReason, ett_h225_UnregRequestReason, UnregRequestReason_choice, "UnregRequestReason", &value);
1643         h225_pi.reason = value;
1644         return offset;
1645 }
1646
1647
1648
1649 const value_string UnregRejectReason_vals[] = {
1650         { 0, "notCurrentlyRegistered" },
1651         { 1, "callInProgress" },
1652         { 2, "undefinedReason" },
1653         { 3, "permissionDenied" },
1654         { 4, "securityDenial" },
1655         { 5, "securityError" },
1656         { 0, NULL}
1657 };
1658 static per_choice_t UnregRejectReason_choice[] = {
1659         { 0, "notCurrentlyRegistered", ASN1_EXTENSION_ROOT,
1660                 dissect_h225_NULL },
1661         { 1, "callInProgress", ASN1_EXTENSION_ROOT,
1662                 dissect_h225_NULL },
1663         { 2, "undefinedReason", ASN1_EXTENSION_ROOT,
1664                 dissect_h225_NULL },
1665         { 3, "permissionDenied", ASN1_NOT_EXTENSION_ROOT,
1666                 dissect_h225_NULL },
1667         { 4, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
1668                 dissect_h225_NULL },
1669         { 5, "securityError", ASN1_NOT_EXTENSION_ROOT,
1670                 dissect_h225_SecurityErrors2 },
1671         { 0, NULL, 0, NULL }
1672 };
1673 static int
1674 dissect_h225_UnregRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1675 {
1676         guint32 value;
1677         
1678         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_UnregRejectReason, ett_h225_UnregRejectReason, UnregRejectReason_choice, "UnregRejectReason", &value);
1679         h225_pi.reason = value;
1680         return offset;
1681 }
1682
1683
1684
1685 static const value_string CallType_vals[] = {
1686         { 0, "pointToPoint" },
1687         { 1, "oneToN" },
1688         { 2, "nToOne" },
1689         { 3, "nToN" },
1690         { 0, NULL}
1691 };
1692 static per_choice_t CallType_choice[] = {
1693         { 0, "pointToPoint", ASN1_EXTENSION_ROOT,
1694                 dissect_h225_NULL },
1695         { 1, "oneToN", ASN1_EXTENSION_ROOT,
1696                 dissect_h225_NULL },
1697         { 2, "nToOne", ASN1_EXTENSION_ROOT,
1698                 dissect_h225_NULL },
1699         { 3, "nToN", ASN1_EXTENSION_ROOT,
1700                 dissect_h225_NULL },
1701         { 0, NULL, 0, NULL }
1702 };
1703 static int
1704 dissect_h225_CallType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1705 {
1706         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CallType, ett_h225_CallType, CallType_choice, "CallType", NULL);
1707         return offset;
1708 }
1709
1710
1711 static const value_string CallModel_vals[] = {
1712         { 0, "direct" },
1713         { 1, "gatekeeperRouted" },
1714         { 0, NULL}
1715 };
1716 static per_choice_t CallModel_choice[] = {
1717         { 0, "direct", ASN1_EXTENSION_ROOT,
1718                 dissect_h225_NULL },
1719         { 1, "gatekeeperRouted", ASN1_EXTENSION_ROOT,
1720                 dissect_h225_NULL },
1721         { 0, NULL, 0, NULL }
1722 };
1723 static int
1724 dissect_h225_CallModel(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1725 {
1726         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CallModel, ett_h225_CallModel, CallModel_choice, "CallModel", NULL);
1727         return offset;
1728 }
1729
1730
1731
1732 static const value_string TransportQOS_vals[] = {
1733         { 0, "endpointControlled" },
1734         { 1, "gatekeeperControlled" },
1735         { 2, "noControl" },
1736         { 0, NULL}
1737 };
1738 static per_choice_t TransportQOS_choice[] = {
1739         { 0, "endpointControlled", ASN1_EXTENSION_ROOT,
1740                 dissect_h225_NULL },
1741         { 1, "gatekeeperControlled", ASN1_EXTENSION_ROOT,
1742                 dissect_h225_NULL },
1743         { 2, "noControl", ASN1_EXTENSION_ROOT,
1744                 dissect_h225_NULL },
1745         { 0, NULL, 0, NULL }
1746 };
1747 static int
1748 dissect_h225_TransportQOS(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1749 {
1750         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_TransportQOS, ett_h225_TransportQOS, TransportQOS_choice, "TransportQOS", NULL);
1751         return offset;
1752 }
1753
1754
1755 const value_string BandRejectReason_vals[] = {
1756         { 0, "notBound" },
1757         { 1, "invalidConferenceID" },
1758         { 2, "invalidPermission" },
1759         { 3, "insufficientResources" },
1760         { 4, "invalidRevision" },
1761         { 5, "undefinedReason" },
1762         { 6, "securityDenial" },
1763         { 7, "securityError" },
1764         { 0, NULL}
1765 };
1766 static per_choice_t BandRejectReason_choice[] = {
1767         { 0, "notBound", ASN1_EXTENSION_ROOT,
1768                 dissect_h225_NULL },
1769         { 1, "invalidConferenceID", ASN1_EXTENSION_ROOT,
1770                 dissect_h225_NULL },
1771         { 2, "invalidPermission", ASN1_EXTENSION_ROOT,
1772                 dissect_h225_NULL },
1773         { 3, "insufficientResources", ASN1_EXTENSION_ROOT,
1774                 dissect_h225_NULL },
1775         { 4, "invalidRevision", ASN1_EXTENSION_ROOT,
1776                 dissect_h225_NULL },
1777         { 5, "undefinedReason", ASN1_EXTENSION_ROOT,
1778                 dissect_h225_NULL },
1779         { 6, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
1780                 dissect_h225_NULL },
1781         { 7, "securityError", ASN1_NOT_EXTENSION_ROOT,
1782                 dissect_h225_SecurityErrors2 },
1783         { 0, NULL, 0, NULL }
1784 };
1785 static int
1786 dissect_h225_BandRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1787 {
1788         guint32 value;
1789         
1790         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_BandRejectReason, ett_h225_BandRejectReason, BandRejectReason_choice, "BandRejectReason", &value);
1791         h225_pi.reason = value;
1792         return offset;
1793 }
1794
1795
1796
1797 const value_string DisengageReason_vals[] = {
1798         { 0, "forcedDrop" },
1799         { 1, "normalDrop" },
1800         { 2, "undefinedReason" },
1801         { 0, NULL}
1802 };
1803 static per_choice_t DisengageReason_choice[] = {
1804         { 0, "forcedDrop", ASN1_EXTENSION_ROOT,
1805                 dissect_h225_NULL },
1806         { 1, "normalDrop", ASN1_EXTENSION_ROOT,
1807                 dissect_h225_NULL },
1808         { 2, "undefinedReason", ASN1_EXTENSION_ROOT,
1809                 dissect_h225_NULL },
1810         { 0, NULL, 0, NULL }
1811 };
1812 static int
1813 dissect_h225_DisengageReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1814 {
1815         guint32 value;
1816         
1817         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_DisengageReason, ett_h225_DisengageReason, DisengageReason_choice, "DisengageReason", &value);
1818         h225_pi.reason = value;
1819         return offset;
1820 }
1821
1822
1823
1824 const value_string DisengageRejectReason_vals[] = {
1825         { 0, "notRegistered" },
1826         { 1, "requestToDropOther" },
1827         { 2, "securityDenial" },
1828         { 3, "securityError" },
1829         { 0, NULL}
1830 };
1831 static per_choice_t DisengageRejectReason_choice[] = {
1832         { 0, "notRegistered", ASN1_EXTENSION_ROOT,
1833                 dissect_h225_NULL },
1834         { 1, "requestToDropOther", ASN1_EXTENSION_ROOT,
1835                 dissect_h225_NULL },
1836         { 2, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
1837                 dissect_h225_NULL },
1838         { 3, "securityError", ASN1_NOT_EXTENSION_ROOT,
1839                 dissect_h225_SecurityErrors2 },
1840         { 0, NULL, 0, NULL }
1841 };
1842 static int
1843 dissect_h225_DisengageRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1844 {
1845         guint32 value;
1846         
1847         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_DisengageRejectReason, ett_h225_DisengageRejectReason, DisengageRejectReason_choice, "DisengageRejectReason", &value);
1848         h225_pi.reason = value;
1849         return offset;
1850 }
1851
1852
1853
1854
1855 const value_string InfoRequestNakReason_vals[] = {
1856         { 0, "notRegistered" },
1857         { 1, "securityDenial" },
1858         { 2, "undefinedReason" },
1859         { 3, "securityError" },
1860         { 0, NULL}
1861 };
1862 static per_choice_t InfoRequestNakReason_choice[] = {
1863         { 0, "notRegistered", ASN1_EXTENSION_ROOT,
1864                 dissect_h225_NULL },
1865         { 1, "securityDenial", ASN1_EXTENSION_ROOT,
1866                 dissect_h225_NULL },
1867         { 2, "undefinedReason", ASN1_EXTENSION_ROOT,
1868                 dissect_h225_NULL },
1869         { 3, "securityError", ASN1_NOT_EXTENSION_ROOT,
1870                 dissect_h225_SecurityErrors2 },
1871         { 0, NULL, 0, NULL }
1872 };
1873 static int
1874 dissect_h225_InfoRequestNakReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1875 {
1876         guint32 value;
1877         
1878         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_InfoRequestNakReason, ett_h225_InfoRequestNakReason, InfoRequestNakReason_choice, "InfoRequestNakReason", &value);
1879         h225_pi.reason = value;
1880         return offset;
1881 }
1882
1883
1884
1885 static const value_string SCRresult_vals[] = {
1886         { 0, "started" },
1887         { 1, "failed" },
1888         { 2, "stopped" },
1889         { 3, "notAvailable" },
1890         { 4, "neededFeatureNotSupported" },
1891         { 0, NULL}
1892 };
1893 static per_choice_t SCRresult_choice[] = {
1894         { 0, "started", ASN1_EXTENSION_ROOT,
1895                 dissect_h225_NULL },
1896         { 1, "failed", ASN1_EXTENSION_ROOT,
1897                 dissect_h225_NULL },
1898         { 2, "stopped", ASN1_EXTENSION_ROOT,
1899                 dissect_h225_NULL },
1900         { 3, "notAvailable", ASN1_EXTENSION_ROOT,
1901                 dissect_h225_NULL },
1902         { 4, "neededFeatureNotSupported", ASN1_EXTENSION_ROOT,
1903                 dissect_h225_NULL },
1904         { 0, NULL, 0, NULL }
1905 };
1906 static int
1907 dissect_h225_SCRresult(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1908 {
1909         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SCRresult, ett_h225_SCRresult, SCRresult_choice, "SCRresult", NULL);
1910         return offset;
1911 }
1912
1913 static int
1914 dissect_h225_object(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1915 {
1916         offset = dissect_per_object_identifier(tvb, offset, pinfo, tree,
1917                                 hf_h225_object,
1918                                 object);
1919         return offset;
1920 }
1921
1922 static int
1923 dissect_h225_t35CountryCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1924 {
1925         offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree,
1926                                 hf_h225_t35CountryCode, 0, 255,
1927                                 &t35CountryCode, NULL, FALSE);
1928         return offset;
1929 }
1930
1931
1932 static int
1933 dissect_h225_t35Extension(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1934 {
1935         offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree,
1936                                 hf_h225_t35Extension, 0, 255,
1937                                 &t35Extension, NULL, FALSE);
1938         return offset;
1939 }
1940
1941 static int
1942 dissect_h225_manufacturerCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1943 {
1944         offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree,
1945                                 hf_h225_manufacturerCode, 0, 65535,
1946                                 &manufacturerCode, NULL, FALSE);
1947         return offset;
1948 }
1949
1950 static per_sequence_t H221NonStandard_sequence[] = {
1951         { "t35CountryCode", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
1952                 dissect_h225_t35CountryCode },
1953         { "t35Extension", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
1954                 dissect_h225_t35Extension },
1955         { "manufacturerCode", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
1956                 dissect_h225_manufacturerCode },
1957         { NULL, 0, 0, NULL }
1958 };
1959 static int
1960 dissect_h225_h221NonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1961 {
1962         t35CountryCode = 0;
1963         t35Extension = 0;
1964         manufacturerCode = 0;
1965
1966         offset = dissect_per_sequence(tvb, offset, pinfo, tree,
1967                                 hf_h225_h221NonStandard,
1968                                 ett_h225_H221NonStandard, H221NonStandard_sequence);
1969
1970         h221NonStandard = ((t35CountryCode * 256) + t35Extension) * 65536 + manufacturerCode;
1971
1972         proto_tree_add_uint(tree, hf_h221Manufacturer, tvb, (offset>>3)-4,4,h221NonStandard);
1973
1974         return offset;
1975 }
1976
1977 static const value_string NonStandardIdentifier_vals[] = {
1978         { 0,    "object" },
1979         { 1,    "h221NonStandard" },
1980         { 0, NULL }
1981 };
1982 static per_choice_t NonStandardIdentifier_choice[] = {
1983         { 0,    "object", ASN1_EXTENSION_ROOT,
1984                 dissect_h225_object },
1985         { 1,    "h221NonStandard", ASN1_EXTENSION_ROOT,
1986                 dissect_h225_h221NonStandard },
1987         { 0, NULL, 0, NULL }
1988 };
1989 static int
1990 dissect_h225_nonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
1991 {
1992         guint32 value;
1993
1994         *object = '\0';
1995         h221NonStandard = 0;
1996
1997         offset = dissect_per_choice(tvb, offset, pinfo, tree,
1998                                 hf_h225_nonStandardIdentifier,
1999                                 ett_h225_NonStandardIdentifier, NonStandardIdentifier_choice, "NonStandardIdentifier",
2000                                 &value);
2001
2002         switch (value) {
2003                 case 0 :  /* object */
2004                         nsp_handle = dissector_get_string_handle(nsp_object_dissector_table, object);
2005                         break;
2006                 case 1 :  /* h221NonStandard */
2007                         nsp_handle = dissector_get_port_handle(nsp_h221_dissector_table, h221NonStandard);
2008                         break;
2009                 default :
2010                         nsp_handle = NULL;
2011     }
2012
2013         return offset;
2014 }
2015
2016 static int
2017 dissect_h225_nsp_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2018 {
2019         guint32 value_offset, value_len;
2020         tvbuff_t *next_tvb;
2021
2022         offset = dissect_per_octet_string(tvb, offset, pinfo, tree,
2023                                 hf_h225_nsp_data, -1, -1,
2024                                 &value_offset, &value_len);
2025
2026         if (value_len > 0) {
2027                 next_tvb = tvb_new_subset(tvb, value_offset, value_len, value_len);
2028                 call_dissector((nsp_handle)?nsp_handle:data_handle, next_tvb, pinfo, tree);
2029         }
2030
2031         return offset;
2032 }
2033
2034 static per_sequence_t NonStandardParameter_sequence[] = {
2035         { "nonStandardIdentifier", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2036                 dissect_h225_nonStandardIdentifier },
2037         { "data", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2038                 dissect_h225_nsp_data },
2039         { NULL, 0, 0, NULL }
2040 };
2041
2042 int
2043 dissect_h225_NonStandardParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index)
2044 {
2045         nsp_handle = NULL;
2046
2047         offset = dissect_per_sequence(tvb, offset, pinfo, tree,
2048                                 hf_index,
2049                                 ett_h225_NonStandardParameter, NonStandardParameter_sequence);
2050
2051         return offset;
2052 }
2053
2054
2055 static int
2056 dissect_h225_nonStandardData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2057 {
2058         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
2059                                 hf_h225_nonStandardData);
2060         return offset;
2061 }
2062
2063 static per_sequence_t GatekeeperInfo_sequence[] = {
2064         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2065                 dissect_h225_nonStandardData },
2066         { NULL, 0, 0, NULL }
2067 };
2068 static int
2069 dissect_h225_GatekeeperInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2070 {
2071         offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperInfo, ett_h225_GatekeeperInfo, GatekeeperInfo_sequence);
2072         return offset;
2073 }
2074
2075 static int
2076 dissect_h225_nonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2077 {
2078         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
2079                                 hf_h225_nonStandard);
2080         return offset;
2081 }
2082
2083 static const value_string SecurityServiceMode_vals[] = {
2084         { 0, "nonStandard" },
2085         { 1, "none" },
2086         { 2, "default" },
2087         { 0, NULL}
2088 };
2089 static per_choice_t SecurityServiceMode_choice[] = {
2090         { 0, "nonStandard", ASN1_EXTENSION_ROOT,
2091                 dissect_h225_nonStandard },
2092         { 1, "none", ASN1_EXTENSION_ROOT,
2093                 dissect_h225_NULL },
2094         { 2, "default", ASN1_EXTENSION_ROOT,
2095                 dissect_h225_NULL },
2096         { 0, NULL, 0, NULL }
2097 };
2098 static int
2099 dissect_h225_SecurityServiceMode_encryption(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2100 {
2101         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SecurityServiceMode_encryption, ett_h225_SecurityServiceMode_encryption, SecurityServiceMode_choice, "Encryption", NULL);
2102         return offset;
2103 }
2104 static int
2105 dissect_h225_SecurityServiceMode_authentication(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2106 {
2107         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SecurityServiceMode_authentication, ett_h225_SecurityServiceMode_authentication, SecurityServiceMode_choice, "Authentication", NULL);
2108         return offset;
2109 }
2110 static int
2111 dissect_h225_SecurityServiceMode_integrity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2112 {
2113         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SecurityServiceMode_integrity, ett_h225_SecurityServiceMode_integrity, SecurityServiceMode_choice, "Integrity", NULL);
2114         return offset;
2115 }
2116
2117
2118
2119 static per_sequence_t SecurityCapabilities_sequence[] = {
2120         { "nonStandard", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2121                 dissect_h225_nonStandard },
2122         { "encryption", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2123                 dissect_h225_SecurityServiceMode_encryption },
2124         { "authenticaton", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2125                 dissect_h225_SecurityServiceMode_authentication },
2126         { "integrity", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2127                 dissect_h225_SecurityServiceMode_integrity },
2128         { NULL, 0, 0, NULL }
2129 };
2130 static int
2131 dissect_h225_SecurityCapabilities_tls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2132 {
2133         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SecurityCapabilities_tls, ett_h225_SecurityCapabilities_tls, SecurityCapabilities_sequence);
2134         return offset;
2135 }
2136 static int
2137 dissect_h225_SecurityCapabilities_ipsec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2138 {
2139         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SecurityCapabilities_ipsec, ett_h225_SecurityCapabilities_ipsec, SecurityCapabilities_sequence);
2140         return offset;
2141 }
2142
2143
2144
2145
2146 static const value_string H245Security_vals[] = {
2147         { 0, "nonStandard" },
2148         { 1, "noSecurity" },
2149         { 2, "tls" },
2150         { 3, "ipsec" },
2151         { 0, NULL}
2152 };
2153 static per_choice_t H245Security_choice[] = {
2154         { 0, "nonStandard", ASN1_EXTENSION_ROOT,
2155                 dissect_h225_nonStandard },
2156         { 1, "noSecurity", ASN1_EXTENSION_ROOT,
2157                 dissect_h225_NULL },
2158         { 2, "tls", ASN1_EXTENSION_ROOT,
2159                 dissect_h225_SecurityCapabilities_tls },
2160         { 3, "ipsec", ASN1_EXTENSION_ROOT,
2161                 dissect_h225_SecurityCapabilities_ipsec },
2162         { 0, NULL, 0, NULL }
2163 };
2164 static int
2165 dissect_h225_H245Security(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2166 {
2167         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_H245Security, ett_h225_H245Security, H245Security_choice, "H245Security", NULL);
2168         return offset;
2169 }
2170
2171 static int
2172 dissect_h225_nonStandardUsageTypes_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2173 {
2174         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
2175                                 hf_h225_nonStandardUsageTypes_item);
2176         return offset;
2177 }
2178
2179 static int
2180 dissect_h225_nonStandardUsageTypes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2181 {
2182         offset = dissect_per_sequence_of(tvb, offset, pinfo, tree,
2183                                 hf_h225_nonStandardUsageTypes,
2184                                 ett_h225_T_nonStandardUsageTypes, dissect_h225_nonStandardUsageTypes_item);
2185         return offset;
2186 }
2187
2188
2189 static per_sequence_t RasUsageInfoTypes_sequence[] = {
2190         { "nonStandardUsageTypes", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2191                 dissect_h225_nonStandardUsageTypes },
2192         { "startTime", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2193                 dissect_h225_NULL },
2194         { "endTime", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2195                 dissect_h225_NULL },
2196         { "terminationCause", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2197                 dissect_h225_NULL },
2198         { NULL, 0, 0, NULL }
2199 };
2200 static int
2201 dissect_h225_RasUsageInfoTypes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2202 {
2203         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RasUsageInfoTypes, ett_h225_RasUsageInfoTypes, RasUsageInfoTypes_sequence);
2204         return offset;
2205 }
2206 static int
2207 dissect_h225_usageReportingCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2208 {
2209         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_usageReportingCapability, ett_h225_RasUsageInfoTypes, RasUsageInfoTypes_sequence);
2210         return offset;
2211 }
2212
2213
2214
2215 static int
2216 dissect_h225_BandWidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2217 {
2218         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2219                 tree, hf_h225_BandWidth, 0, 4294967295UL,
2220                 NULL, NULL, FALSE);
2221         return offset;
2222 }
2223
2224
2225
2226 static int
2227 dissect_h225_channelRate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2228 {
2229         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2230                 tree, hf_h225_channelRate, 0, 4294967295UL,
2231                 NULL, NULL, FALSE);
2232         return offset;
2233 }
2234
2235
2236
2237 static int
2238 dissect_h225_totalBandwidthRestriction(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2239 {
2240         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2241                 tree, hf_h225_totalBandwidthRestriction, 0, 4294967295UL,
2242                 NULL, NULL, FALSE);
2243         return offset;
2244 }
2245
2246
2247 static int
2248 dissect_h225_allowedBandWidth(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2249 {
2250         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2251                 tree, hf_h225_allowedBandWidth, 0, 4294967295UL,
2252                 NULL, NULL, FALSE);
2253         return offset;
2254 }
2255
2256
2257
2258 static int
2259 dissect_h225_channelMultiplier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2260 {
2261         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2262                 tree, hf_h225_channelMultiplier, 1, 256,
2263                 NULL, NULL, FALSE);
2264         return offset;
2265 }
2266
2267
2268 static per_sequence_t DataRate_sequence[] = {
2269         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2270                 dissect_h225_nonStandardData },
2271         { "channelRate", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2272                 dissect_h225_channelRate },
2273         { "channelMultiplier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2274                 dissect_h225_channelMultiplier },
2275         { NULL, 0, 0, NULL }
2276 };
2277 static int
2278 dissect_h225_DataRate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2279 {
2280         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_DataRate, ett_h225_DataRate, DataRate_sequence);
2281         return offset;
2282 }
2283 static int
2284 dissect_h225_gatewayDataRate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2285 {
2286         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_gatewayDataRate, ett_h225_DataRate, DataRate_sequence);
2287         return offset;
2288 }
2289
2290
2291 static int
2292 dissect_h225_dataRatesSupported(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2293 {
2294         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_dataRatesSupported, ett_h225_dataRatesSupported, dissect_h225_DataRate );
2295         return offset;
2296 }
2297
2298
2299 static per_sequence_t TerminalInfo_sequence[] = {
2300         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2301                 dissect_h225_nonStandardData },
2302         { NULL, 0, 0, NULL }
2303 };
2304 static int
2305 dissect_h225_TerminalInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2306 {
2307         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_TerminalInfo, ett_h225_TerminalInfo, TerminalInfo_sequence);
2308         return offset;
2309 }
2310
2311
2312 static int
2313 dissect_h225_h248Message(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2314 {
2315         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_h248Message, -1, -1, NULL, NULL);
2316         return offset;
2317 }
2318
2319
2320 static per_sequence_t StimulusControl_sequence[] = {
2321         { "nonStandard", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2322                 dissect_h225_nonStandard },
2323         { "isText", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2324                 dissect_h225_NULL },
2325         { "h248Message", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2326                 dissect_h225_h248Message},
2327         { NULL, 0, 0, NULL }
2328 };
2329 static int
2330 dissect_h225_StimulusControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2331 {
2332         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_StimulusControl, ett_h225_StimulusControl, StimulusControl_sequence);
2333         return offset;
2334 }
2335
2336
2337
2338
2339 static int
2340 dissect_h225_conferenceID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2341 {
2342         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_conferenceID, 16, 16, NULL, NULL);
2343         return offset;
2344 }
2345
2346
2347
2348 static int
2349 dissect_h225_replaceWithConferenceInvite(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2350 {
2351         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_replaceWithConferenceInvite, 16, 16, NULL, NULL);
2352         return offset;
2353 }
2354
2355
2356 static int
2357 dissect_h225_nonStandardReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2358 {
2359         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
2360                                 hf_h225_nonStandardReason);
2361         return offset;
2362 }
2363
2364 const value_string ReleaseCompleteReason_vals[] = {
2365         { 0, "noBandwidth" },
2366         { 1, "gatekeeperResources" },
2367         { 2, "unreachableDestination" },
2368         { 3, "destinationRejection" },
2369         { 4, "invalidRevision" },
2370         { 5, "noPermission" },
2371         { 6, "unreachableGatekeeper" },
2372         { 7, "gatewayResources" },
2373         { 8, "badFormatAddress" },
2374         { 9, "adaptiveBusy" },
2375         { 10, "inConf" },
2376         { 11, "undefinedReason" },
2377         { 12, "facilityCallDeflection" },
2378         { 13, "securityDenied" },
2379         { 14, "calledPartyNotRegistered" },
2380         { 15, "callerNotRegistered" },
2381         { 16, "newConnectionNeeded" },
2382         { 17, "nonStandardReason" },
2383         { 18, "replaceWithConferenceInvite" },
2384         { 19, "genericDataReason" },
2385         { 20, "neededFeatureNotSupported" },
2386         { 21, "tunnelledSignallingRejected" },
2387         { 22, "invalidCID" },
2388         { 23, "invalidCID" },
2389         { 24, "securityError" },
2390         { 25, "hopCountExceeded" },
2391         { 0, NULL}
2392 };
2393 static per_choice_t ReleaseCompleteReason_choice[] = {
2394         { 0, "noBandwidth", ASN1_EXTENSION_ROOT,
2395                 dissect_h225_NULL },
2396         { 1, "gatekeeperResources", ASN1_EXTENSION_ROOT,
2397                 dissect_h225_NULL },
2398         { 2, "unreachableDestination", ASN1_EXTENSION_ROOT,
2399                 dissect_h225_NULL },
2400         { 3, "destinationRejection", ASN1_EXTENSION_ROOT,
2401                 dissect_h225_NULL },
2402         { 4, "invalidRevision", ASN1_EXTENSION_ROOT,
2403                 dissect_h225_NULL },
2404         { 5, "noPermission", ASN1_EXTENSION_ROOT,
2405                 dissect_h225_NULL },
2406         { 6, "unreachableGatekeeper", ASN1_EXTENSION_ROOT,
2407                 dissect_h225_NULL },
2408         { 7, "gatewayResources", ASN1_EXTENSION_ROOT,
2409                 dissect_h225_NULL },
2410         { 8, "badFormatAddress", ASN1_EXTENSION_ROOT,
2411                 dissect_h225_NULL },
2412         { 9, "adaptiveBusy", ASN1_EXTENSION_ROOT,
2413                 dissect_h225_NULL },
2414         { 10, "inConf", ASN1_EXTENSION_ROOT,
2415                 dissect_h225_NULL },
2416         { 11, "undefinedReason", ASN1_EXTENSION_ROOT,
2417                 dissect_h225_NULL },
2418         { 12, "facilityCallDeflection", ASN1_NOT_EXTENSION_ROOT,
2419                 dissect_h225_NULL },
2420         { 13, "securityDenied", ASN1_NOT_EXTENSION_ROOT,
2421                 dissect_h225_NULL },
2422         { 14, "calledPartyNotRegistered", ASN1_NOT_EXTENSION_ROOT,
2423                 dissect_h225_NULL },
2424         { 15, "callerNotRegistered", ASN1_NOT_EXTENSION_ROOT,
2425                 dissect_h225_NULL },
2426         { 16, "newConnectionNeeded", ASN1_NOT_EXTENSION_ROOT,
2427                 dissect_h225_NULL },
2428         { 17, "nonStandardReason", ASN1_NOT_EXTENSION_ROOT,
2429                 dissect_h225_nonStandardReason },
2430         { 18, "replaceWithConferenceInvite", ASN1_NOT_EXTENSION_ROOT,
2431                 dissect_h225_replaceWithConferenceInvite },
2432         { 19, "genericDataReason", ASN1_NOT_EXTENSION_ROOT,
2433                 dissect_h225_NULL },
2434         { 20, "neededFeatureNotSupported", ASN1_NOT_EXTENSION_ROOT,
2435                 dissect_h225_NULL },
2436         { 21, "tunnelledSignallingRejected", ASN1_NOT_EXTENSION_ROOT,
2437                 dissect_h225_NULL },
2438         { 22, "invalidCID", ASN1_NOT_EXTENSION_ROOT,
2439                 dissect_h225_NULL },
2440         { 23, "invalidCID", ASN1_NOT_EXTENSION_ROOT,
2441                 dissect_h225_NULL },
2442         { 24, "securityError", ASN1_NOT_EXTENSION_ROOT,
2443                 dissect_h225_SecurityErrors },
2444         { 25, "hopCountExceeded", ASN1_NOT_EXTENSION_ROOT,
2445                 dissect_h225_NULL },
2446         { 0, NULL, 0, NULL }
2447 };
2448 static int
2449 dissect_h225_ReleaseCompleteReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2450 {
2451         guint32 value;
2452         
2453         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_ReleaseCompleteReason, ett_h225_ReleaseCompleteReason, ReleaseCompleteReason_choice, "ReleaseCompleteReason", &value);
2454         h225_pi.reason = value;
2455         return offset;
2456 }
2457
2458
2459
2460 static int
2461 dissect_h225_numberOfScnConnections(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2462 {
2463         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2464                 tree, hf_h225_numberOfScnConnections, 0, 65535,
2465                 NULL, NULL, FALSE);
2466         return offset;
2467 }
2468
2469 static per_sequence_t connectionParameters_sequence[] = {
2470         { "connectionType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2471                 dissect_h225_ScnConnectionType },
2472         { "numberOfScnConnections", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2473                 dissect_h225_numberOfScnConnections },
2474         { "connectionAggregation", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2475                 dissect_h225_ScnConnectionAggregation },
2476         { NULL, 0, 0, NULL }
2477 };
2478 static int
2479 dissect_h225_connectionParameters(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2480 {
2481         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_connectionParameters, ett_h225_connectionParameters, connectionParameters_sequence);
2482         return offset;
2483 }
2484
2485
2486
2487
2488 static int
2489 dissect_h225_RequestSeqNum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2490 {
2491         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2492                 tree, hf_h225_RequestSeqNum, 1, 65535,
2493                 &(h225_pi.requestSeqNum), NULL, FALSE);
2494         return offset;
2495 }
2496
2497 static per_sequence_t RasUsageSpecification_when_sequence[] = {
2498         { "start", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2499                 dissect_h225_NULL },
2500         { "end", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2501                 dissect_h225_NULL },
2502         { "inIrr", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2503                 dissect_h225_NULL },
2504         { NULL, 0, 0, NULL }
2505 };
2506 static int
2507 dissect_h225_RasUsageSpecification_when(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2508 {
2509         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RasUsageSpecification_when, ett_h225_RasUsageSpecification_when, RasUsageSpecification_when_sequence);
2510         return offset;
2511 }
2512
2513
2514
2515 static per_sequence_t RasUsageSpecification_callStartingPoint_sequence[] = {
2516         { "alerting", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2517                 dissect_h225_NULL },
2518         { "connect", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2519                 dissect_h225_NULL },
2520         { NULL, 0, 0, NULL }
2521 };
2522 static int
2523 dissect_h225_RasUsageSpecification_callStartingPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2524 {
2525         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RasUsageSpecification_callStartingPoint, ett_h225_RasUsageSpecification_callStartingPoint, RasUsageSpecification_callStartingPoint_sequence);
2526         return offset;
2527 }
2528
2529
2530
2531
2532 static per_sequence_t RasUsageSpecification_sequence[] = {
2533         { "when", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2534                 dissect_h225_RasUsageSpecification_when },
2535         { "callStartingPoint", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2536                 dissect_h225_RasUsageSpecification_callStartingPoint },
2537         { "required", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2538                 dissect_h225_RasUsageInfoTypes },
2539         { NULL, 0, 0, NULL }
2540 };
2541 static int
2542 dissect_h225_RasUsageSpecification(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2543 {
2544         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RasUsageSpecification, ett_h225_RasUsageSpecification, RasUsageSpecification_sequence);
2545         return offset;
2546 }
2547
2548
2549
2550
2551 static int
2552 dissect_h225_ipAddress_ip(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree)
2553 {
2554         /* byte aligned */
2555         if(offset&0x07){
2556                 offset=(offset&0xfffffff8)+8;
2557         }
2558         tvb_memcpy(tvb, (guint8 *)&ipv4_address, offset>>3, 4);
2559         proto_tree_add_ipv4(tree, hf_h225_ipAddress_ip, tvb, offset>>3, 4, ipv4_address);
2560         offset+=32;
2561         return offset;
2562 }
2563
2564
2565
2566 static int
2567 dissect_h225_ipAddress_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2568 {
2569         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2570                 tree, hf_h225_ipAddress_port, 0, 65535,
2571                 &ipv4_port, NULL, FALSE);
2572         return offset;
2573 }
2574
2575
2576
2577 static per_sequence_t ipAddress_sequence[] = {
2578         { "ip", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2579                 dissect_h225_ipAddress_ip },
2580         { "port", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2581                 dissect_h225_ipAddress_port },
2582         { NULL, 0, 0, NULL }
2583 };
2584 static int
2585 dissect_h225_ipAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2586 {
2587         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ipAddress, ett_h225_ipAddress, ipAddress_sequence);
2588         return offset;
2589 }
2590
2591
2592
2593 static const value_string routing_vals[] = {
2594         { 0, "strict" },
2595         { 1, "loose" },
2596         { 0, NULL}
2597 };
2598 static per_choice_t routing_choice[] = {
2599         { 0, "strict", ASN1_EXTENSION_ROOT,
2600                 dissect_h225_NULL },
2601         { 1, "loose", ASN1_EXTENSION_ROOT,
2602                 dissect_h225_NULL },
2603         { 0, NULL, 0, NULL }
2604 };
2605 static int
2606 dissect_h225_routing(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2607 {
2608         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_routing, ett_h225_routing, routing_choice, "routing", NULL);
2609         return offset;
2610 }
2611
2612
2613
2614
2615 static int
2616 dissect_h225_route(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2617 {
2618         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_route, ett_h225_route, dissect_h225_ipAddress_ip );
2619         return offset;
2620 }
2621
2622 static per_sequence_t ipSourceRoute_sequence[] = {
2623         { "ip", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2624                 dissect_h225_ipAddress_ip },
2625         { "port", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2626                 dissect_h225_ipAddress_port },
2627         { "route", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2628                 dissect_h225_route },
2629         { "routing", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2630                 dissect_h225_routing },
2631         { NULL, 0, 0, NULL }
2632 };
2633 static int
2634 dissect_h225_ipSourceRoute(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2635 {
2636         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ipSourceRoute, ett_h225_ipSourceRoute, ipSourceRoute_sequence);
2637         return offset;
2638 }
2639
2640
2641
2642
2643 static int
2644 dissect_h225_ipxNode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2645 {
2646         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_ipxNode, 6, 6, NULL, NULL);
2647         return offset;
2648 }
2649
2650
2651
2652 static int
2653 dissect_h225_ipxNetnum(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2654 {
2655         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_ipxNetnum, 4, 4, NULL, NULL);
2656         return offset;
2657 }
2658
2659
2660 static int
2661 dissect_h225_ipxPort(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2662 {
2663         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_ipxPort, 2, 2, NULL, NULL);
2664         return offset;
2665 }
2666
2667 static per_sequence_t ipxAddress_sequence[] = {
2668         { "node", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2669                 dissect_h225_ipxNode },
2670         { "netnum", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2671                 dissect_h225_ipxNetnum },
2672         { "port", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
2673                 dissect_h225_ipxPort },
2674         { NULL, 0, 0, NULL }
2675 };
2676 static int
2677 dissect_h225_ipxAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2678 {
2679         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ipxAddress, ett_h225_ipxAddress, ipxAddress_sequence);
2680         return offset;
2681 }
2682
2683
2684 static int
2685 dissect_h225_ipv6Address_ip(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2686 {
2687         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_ipv6Address_ip, 16, 16, NULL, NULL);
2688         return offset;
2689 }
2690
2691 static int
2692 dissect_h225_ipv6Address_port(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2693 {
2694         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2695                 tree, hf_h225_ipv6Address_port, 0, 65535,
2696                 NULL, NULL, FALSE);
2697         return offset;
2698 }
2699
2700
2701
2702 static per_sequence_t ip6Address_sequence[] = {
2703         { "ip", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2704                 dissect_h225_ipv6Address_ip },
2705         { "port", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2706                 dissect_h225_ipv6Address_port },
2707         { NULL, 0, 0, NULL }
2708 };
2709 static int
2710 dissect_h225_ip6Address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2711 {
2712         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ip6Address, ett_h225_ip6Address, ip6Address_sequence);
2713         return offset;
2714 }
2715
2716
2717
2718
2719 static int
2720 dissect_h225_netBios(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2721 {
2722         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_netBios, 16, 16, NULL, NULL);
2723         return offset;
2724 }
2725
2726
2727
2728
2729 static int
2730 dissect_h225_nsap(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2731 {
2732         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_nsap, 1, 20, NULL, NULL);
2733         return offset;
2734 }
2735
2736 static int
2737 dissect_h225_nonStandardAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2738 {
2739         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
2740                                 hf_h225_nonStandardAddress);
2741         return offset;
2742 }
2743
2744 static const value_string TransportAddress_vals[] = {
2745         { 0, "ipAddress" },
2746         { 1, "ipSourceRoute" },
2747         { 2, "ipxAddress" },
2748         { 3, "ip6Address" },
2749         { 4, "netBios" },
2750         { 5, "nsap" },
2751         { 6, "nonStandardAddress" },
2752         { 0, NULL}
2753 };
2754 static per_choice_t TransportAddress_choice[] = {
2755         { 0, "ipAddress", ASN1_EXTENSION_ROOT,
2756                 dissect_h225_ipAddress },
2757         { 1, "ipSourceRoute", ASN1_EXTENSION_ROOT,
2758                 dissect_h225_ipSourceRoute },
2759         { 2, "ipxAddress", ASN1_EXTENSION_ROOT,
2760                 dissect_h225_ipxAddress },
2761         { 3, "ip6Address", ASN1_EXTENSION_ROOT,
2762                 dissect_h225_ip6Address },
2763         { 4, "netBios", ASN1_EXTENSION_ROOT,
2764                 dissect_h225_netBios },
2765         { 5, "nsap", ASN1_EXTENSION_ROOT,
2766                 dissect_h225_nsap },
2767         { 6, "nonStandardAddress", ASN1_EXTENSION_ROOT,
2768                 dissect_h225_nonStandardAddress },
2769         { 0, NULL, 0, NULL }
2770 };
2771 static int
2772 dissect_h225_transportID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2773 {
2774         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_transportID, ett_h225_TransportAddress, TransportAddress_choice, "transportID", NULL);
2775         return offset;
2776 }
2777 static int
2778 dissect_h225_alternativeAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2779 {
2780         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_alternativeAddress, ett_h225_TransportAddress, TransportAddress_choice, "alternativeAddress", NULL);
2781         return offset;
2782 }
2783 static int
2784 dissect_h225_sourceCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2785 {
2786         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_sourceCallSignalAddress, ett_h225_TransportAddress, TransportAddress_choice, "sourceCallSignalAddress", NULL);
2787         return offset;
2788 }
2789 static int
2790 dissect_h225_CallSignalAddress2(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2791 {
2792         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CallSignalAddress2, ett_h225_TransportAddress, TransportAddress_choice, "CallSignalAddress2", NULL);
2793         return offset;
2794 }
2795 static int
2796 dissect_h225_destCallSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2797 {
2798         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_destCallSignalAddress, ett_h225_TransportAddress, TransportAddress_choice, "destCallSignalAddress", NULL);
2799         return offset;
2800 }
2801
2802 /* this is an indication of where h245 is spoken,  try to pick it up if
2803    it was ipv4 and register h245 there */
2804 static int
2805 dissect_h225_h245Address(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2806 {
2807         ipv4_address=0;
2808         ipv4_port=0;
2809
2810         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_h245Address, ett_h225_TransportAddress, TransportAddress_choice, "h245Address", NULL);
2811
2812         if((!pinfo->fd->flags.visited) && ipv4_address!=0 && ipv4_port!=0 && h245_handle){
2813                 address src_addr;
2814                 conversation_t *conv=NULL;
2815
2816                 src_addr.type=AT_IPv4;
2817                 src_addr.len=4;
2818                 src_addr.data=(const guint8 *)&ipv4_address;
2819
2820                 conv=find_conversation(&src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR_B|NO_PORT_B);
2821                 if(!conv){
2822                         conv=conversation_new(&src_addr, &src_addr, PT_TCP, ipv4_port, ipv4_port, NO_ADDR2|NO_PORT2);
2823                         conversation_set_dissector(conv, h245_handle);
2824                 }
2825         }
2826         return offset;
2827 }
2828 static int
2829 dissect_h225_sendAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2830 {
2831         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_sendAddress, ett_h225_TransportAddress, TransportAddress_choice, "sendAddress", NULL);
2832         return offset;
2833 }
2834 static int
2835 dissect_h225_recvAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2836 {
2837         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_recvAddress, ett_h225_TransportAddress, TransportAddress_choice, "recvAddress", NULL);
2838         return offset;
2839 }
2840 static int
2841 dissect_h225_rasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2842 {
2843         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_rasAddress, ett_h225_TransportAddress, TransportAddress_choice, "rasAddress", NULL);
2844         return offset;
2845 }
2846 static int
2847 dissect_h225_replyAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2848 {
2849         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_replyAddress, ett_h225_TransportAddress, TransportAddress_choice, "replyAddress", NULL);
2850         return offset;
2851 }
2852 int
2853 dissect_h225_TransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2854 {
2855         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_TransportAddress, ett_h225_TransportAddress, TransportAddress_choice, "TransportAddress", NULL);
2856         return offset;
2857 }
2858
2859
2860 static per_sequence_t TransportChannelInfo_sequence[] = {
2861         { "sendAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2862                 dissect_h225_sendAddress },
2863         { "recvAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2864                 dissect_h225_recvAddress },
2865         { NULL, 0, 0, NULL }
2866 };
2867 static int
2868 dissect_h225_rtpAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2869 {
2870         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_rtpAddress, ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);
2871         return offset;
2872 }
2873 static int
2874 dissect_h225_rtcpAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2875 {
2876         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_rtcpAddress, ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);
2877         return offset;
2878 }
2879 static int
2880 dissect_h225_h245(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2881 {
2882         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_h245, ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);
2883         return offset;
2884 }
2885 static int
2886 dissect_h225_callSignaling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2887 {
2888         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_callSignaling, ett_h225_TransportChannelInfo, TransportChannelInfo_sequence);
2889         return offset;
2890 }
2891
2892 static int
2893 dissect_h225_carrierName(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2894 {
2895         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_carrierName, 1, 128);
2896         return offset;
2897 }
2898
2899
2900
2901 static int
2902 dissect_h225_carrierIdentificationCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2903 {
2904         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_carrierIdentificationCode, 3, 4, NULL, NULL);
2905         return offset;
2906 }
2907
2908 static per_sequence_t CarrierInfo_sequence[] = {
2909         { "carrierIdentificationCode", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2910                 dissect_h225_carrierIdentificationCode },
2911         { "carrierName", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
2912                 dissect_h225_carrierName },
2913         { NULL, 0, 0, NULL }
2914 };
2915 static int
2916 dissect_h225_CarrierInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2917 {
2918         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CarrierInfo, ett_h225_CarrierInfo, CarrierInfo_sequence);
2919         return offset;
2920 }
2921
2922 static int
2923 dissect_h225_segment(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2924 {
2925         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
2926                 tree, hf_h225_segment, 0, 65535,
2927                 NULL, NULL, FALSE);
2928         return offset;
2929 }
2930
2931
2932 static const value_string InfoRequestResponseStatus_vals[] = {
2933         { 0, "complete" },
2934         { 1, "incomplete" },
2935         { 2, "segment" },
2936         { 3, "invalidCall" },
2937         { 0, NULL}
2938 };
2939 static per_choice_t InfoRequestResponseStatus_choice[] = {
2940         { 0, "complete", ASN1_EXTENSION_ROOT,
2941                 dissect_h225_NULL },
2942         { 1, "incomplete", ASN1_EXTENSION_ROOT,
2943                 dissect_h225_NULL },
2944         { 2, "segment", ASN1_EXTENSION_ROOT,
2945                 dissect_h225_segment },
2946         { 3, "invalidCall", ASN1_EXTENSION_ROOT,
2947                 dissect_h225_NULL },
2948         { 0, NULL, 0, NULL }
2949 };
2950 static int
2951 dissect_h225_InfoRequestResponseStatus(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2952 {
2953         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_InfoRequestResponseStatus, ett_h225_InfoRequestResponseStatus, InfoRequestResponseStatus_choice, "InfoRequestResponseStatus", NULL);
2954         return offset;
2955 }
2956
2957
2958
2959
2960 static int
2961 dissect_h225_guid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2962 {
2963         guint32 value_length;
2964         guint32 value_offset;
2965
2966         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_guid, 16, 16, &(value_offset), &(value_length));
2967
2968         /* save call guid */
2969         tvb_memcpy(tvb, h225_pi.guid, value_offset, value_length);
2970
2971         return offset;
2972 }
2973
2974 static per_sequence_t CallIdentifier_sequence[] = {
2975         { "guid", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
2976                 dissect_h225_guid },
2977         { NULL, 0, 0, NULL }
2978 };
2979 static int
2980 dissect_h225_CallIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2981 {
2982         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallIdentifier, ett_h225_CallIdentifier, CallIdentifier_sequence);
2983         return offset;
2984 }
2985
2986
2987 static int
2988 dissect_h225_globalCallId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2989 {
2990         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_globalCallId, 16, 16, NULL, NULL);
2991         return offset;
2992 }
2993
2994
2995 static int
2996 dissect_h225_algorithmOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
2997 {
2998         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_algorithmOID, NULL);
2999         return offset;
3000 }
3001
3002
3003 static int
3004 dissect_h225_threadId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3005 {
3006         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_threadId, 16, 16, NULL, NULL);
3007         return offset;
3008 }
3009
3010
3011 static per_sequence_t CallLinkage_sequence[] = {
3012         { "globalCallId", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3013                 dissect_h225_globalCallId },
3014         { "threadId", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3015                 dissect_h225_threadId },
3016         { NULL, 0, 0, NULL }
3017 };
3018 static int
3019 dissect_h225_CallLinkage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3020 {
3021         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallLinkage, ett_h225_CallLinkage, CallLinkage_sequence);
3022         return offset;
3023 }
3024
3025 static int 
3026 dissect_h225_authenticationCapability_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
3027   return dissect_h235_AuthenticationMechanism(tvb, offset, pinfo, tree, hf_h225_authenticationCapability_item);
3028
3029 static int
3030 dissect_h225_authenticationCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3031 {
3032         offset = dissect_per_sequence_of(tvb, offset, pinfo, tree,
3033                                 hf_h225_authenticationCapability,
3034                                 ett_h225_SEQUNCE_OF_AuthenticationMechanism, dissect_h225_authenticationCapability_item);
3035         return offset;
3036 }
3037
3038 static int
3039 dissect_h225_GatekeeperIdentifier(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
3040 {
3041         offset=dissect_per_BMPString(tvb, offset, pinfo, tree, hf_h225_GatekeeperIdentifier, 1, 128);
3042         return offset;
3043 }
3044
3045 static int
3046 dissect_h225_cleartoken(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3047 {
3048         offset = dissect_h235_ClearToken(tvb, offset, pinfo, tree, hf_h225_cleartoken);
3049         return offset;
3050 }
3051
3052 static int
3053 dissect_h225_tokens(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3054 {
3055         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_tokens, ett_h225_tokens, dissect_h225_cleartoken);
3056         return offset;
3057 }
3058
3059
3060 static int
3061 dissect_h225_timeStamp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3062 {
3063         return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_timeStamp);
3064 }
3065
3066 static int
3067 dissect_h225_token(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3068 {
3069         return dissect_h235_HASHEDxxx(tvb, offset, pinfo, tree, hf_h225_token);
3070 }
3071
3072 static per_sequence_t cryptoEPPwdHash_sequence[] = {
3073         { "alias", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3074                 dissect_h225_AliasAddress },
3075         { "timeStamp", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3076                 dissect_h225_timeStamp },
3077         { "token", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3078                 dissect_h225_token },
3079         { NULL, 0, 0, NULL }
3080 };
3081 static int
3082 dissect_h225_cryptoEPPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3083 {
3084         offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_cryptoEPPwdHash, ett_h225_T_cryptoEPPwdHash, cryptoEPPwdHash_sequence);
3085
3086         return offset;
3087 }
3088
3089 static per_sequence_t cryptoGKPwdHash_sequence[] = {
3090         { "gatekeeperId", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3091                 dissect_h225_GatekeeperIdentifier },
3092         { "timeStamp", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3093                 dissect_h225_timeStamp },
3094         { "token", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3095                 dissect_h225_token },
3096         { NULL, 0, 0, NULL }
3097 };
3098 static int
3099 dissect_h225_cryptoGKPwdHash(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3100 {
3101         offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_cryptoGKPwdHash, ett_h225_T_cryptoGKPwdHash, cryptoGKPwdHash_sequence);
3102
3103         return offset;
3104 }
3105
3106 static int
3107 dissect_h225_cryptoEPPwdEncr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3108 {
3109         return dissect_h235_ENCRYPTEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoEPPwdEncr);
3110 }
3111
3112 static int
3113 dissect_h225_cryptoGKPwdEncr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3114 {
3115         return dissect_h235_ENCRYPTEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoGKPwdEncr);
3116 }
3117
3118 static int
3119 dissect_h225_cryptoEPCert(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3120 {
3121         return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoEPCert);
3122 }
3123
3124 static int
3125 dissect_h225_cryptoGKCert(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3126 {
3127         return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoGKCert);
3128 }
3129
3130 static int
3131 dissect_h225_cryptoFastStart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3132 {
3133         return dissect_h235_SIGNEDxxx(tvb, offset, pinfo, tree, hf_h225_cryptoFastStart);
3134 }
3135
3136 static int
3137 dissect_h225_nestedcryptoToken(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) 
3138 {
3139         return dissect_h235_CryptoToken(tvb, offset, pinfo, tree, hf_h225_nestedcryptoToken);
3140 }
3141
3142 static const value_string CryptoH323Token_vals[] = {
3143         { 0, "cryptoEPPwdHash" },
3144         { 1, "cryptoGKPwdHash" },
3145         { 2, "cryptoEPPwdEncr" },
3146         { 3, "cryptoGKPwdEncr" },
3147         { 4, "cryptoEPCert" },
3148         { 5, "cryptoGKCert" },
3149         { 6, "cryptoFastStart" },
3150         { 7, "nestedcryptoToken" },
3151         { 0, NULL}
3152 };
3153 static per_choice_t CryptoH323Token_choice[] = {
3154         { 0, "cryptoEPPwdHash", ASN1_EXTENSION_ROOT,
3155                 dissect_h225_cryptoEPPwdHash },
3156         { 1, "cryptoGKPwdHash", ASN1_EXTENSION_ROOT,
3157                 dissect_h225_cryptoGKPwdHash },
3158         { 2, "cryptoEPPwdEncr", ASN1_EXTENSION_ROOT,
3159                 dissect_h225_cryptoEPPwdEncr },
3160         { 3, "cryptoGKPwdEncr", ASN1_EXTENSION_ROOT,
3161                 dissect_h225_cryptoGKPwdEncr },
3162         { 4, "cryptoEPCert", ASN1_EXTENSION_ROOT,
3163                 dissect_h225_cryptoEPCert },
3164         { 5, "cryptoGKCert", ASN1_EXTENSION_ROOT,
3165                 dissect_h225_cryptoGKCert },
3166         { 6, "cryptoFastStart", ASN1_EXTENSION_ROOT,
3167                 dissect_h225_cryptoFastStart },
3168         { 7, "nestedcryptoToken", ASN1_EXTENSION_ROOT,
3169                 dissect_h225_nestedcryptoToken },
3170         { 0, NULL, 0, NULL }
3171 };
3172 static int
3173 dissect_h225_CryptoH323Token(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3174 {
3175         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CryptoH323Token, ett_h225_CryptoH323Token, CryptoH323Token_choice, "CryptoH323Token", NULL);
3176
3177         return offset;
3178 }
3179 static int
3180 dissect_h225_CryptoH323Token_sequence_of(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3181 {
3182         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_CryptoH323Tokens, ett_h225_CryptoH323Tokens, dissect_h225_CryptoH323Token);
3183
3184         return offset;
3185 }
3186
3187 static int
3188 dissect_h225_needToRegister(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3189 {
3190         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_needToRegister, NULL, NULL);
3191         return offset;
3192 }
3193
3194 static int
3195 dissect_h225_priority(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3196 {
3197         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
3198                 tree, hf_h225_priority, 0, 127,
3199                 NULL, NULL, FALSE);
3200         return offset;
3201 }
3202
3203 static per_sequence_t AlternateGK_sequence[] = {
3204         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3205                 dissect_h225_rasAddress },
3206         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3207                 dissect_h225_GatekeeperIdentifier },
3208         { "needToRegister", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3209                 dissect_h225_needToRegister },
3210         { "priority", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3211                 dissect_h225_priority },
3212         { NULL, 0, 0, NULL }
3213 };
3214 static int
3215 dissect_h225_AlternateGK(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3216 {
3217         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AlternateGK, ett_h225_AlternateGK, AlternateGK_sequence);
3218         return offset;
3219 }
3220
3221 static int
3222 dissect_h225_alternateGatekeeper(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3223 {
3224         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_alternateGatekeeper, ett_h225_alternateGatekeeper, dissect_h225_AlternateGK);
3225         return offset;
3226 }
3227
3228 static int
3229 dissect_h225_altGKisPermanent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3230 {
3231         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_altGKisPermanent, NULL, NULL);
3232         return offset;
3233 }
3234
3235 static per_sequence_t AltGKInfo_sequence[] = {
3236         { "alternateGatekeeper", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3237                 dissect_h225_alternateGatekeeper },
3238         { "altGKisPermanent", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3239                 dissect_h225_altGKisPermanent },
3240         { NULL, 0, 0, NULL }
3241 };
3242 static int
3243 dissect_h225_AltGKInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3244 {
3245         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AltGKInfo, ett_h225_AltGKInfo, AltGKInfo_sequence);
3246         return offset;
3247 }
3248
3249 static int
3250 dissect_h225_annexE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3251 {
3252         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_annexE, ett_h225_annexE, dissect_h225_TransportAddress);
3253         return offset;
3254 }
3255
3256 static int
3257 dissect_h225_sctp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3258 {
3259         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_sctp, ett_h225_sctp, dissect_h225_TransportAddress);
3260         return offset;
3261 }
3262 static per_sequence_t AlternateTransportAddress_sequence[] = {
3263         { "annexE", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3264                 dissect_h225_annexE },
3265         { "sctp", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
3266                 dissect_h225_sctp },
3267         { NULL, 0, 0, NULL }
3268 };
3269 static int
3270 dissect_h225_AlternateTransportAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3271 {
3272         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AlternateTransportAddress, ett_h225_AlternateTransportAddress, AlternateTransportAddress_sequence);
3273         return offset;
3274 }
3275
3276 static int
3277 dissect_h225_callProceeding_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3278 {
3279         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_callProceeding_bool, NULL, NULL);
3280         return offset;
3281 }
3282 static int
3283 dissect_h225_setup_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3284 {
3285         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_setup_bool, NULL, NULL);
3286         return offset;
3287 }
3288 static int
3289 dissect_h225_connect_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3290 {
3291         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_connect_bool, NULL, NULL);
3292         return offset;
3293 }
3294 static int
3295 dissect_h225_alerting_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3296 {
3297         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_alerting_bool, NULL, NULL);
3298         return offset;
3299 }
3300 static int
3301 dissect_h225_information_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3302 {
3303         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_information_bool, NULL, NULL);
3304         return offset;
3305 }
3306 static int
3307 dissect_h225_releaseComplete_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3308 {
3309         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_releaseComplete_bool, NULL, NULL);
3310         return offset;
3311 }
3312 static int
3313 dissect_h225_facility_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3314 {
3315         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_facility_bool, NULL, NULL);
3316         return offset;
3317 }
3318 static int
3319 dissect_h225_progress_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3320 {
3321         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_progress_bool, NULL, NULL);
3322         return offset;
3323 }
3324 static int
3325 dissect_h225_empty_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3326 {
3327         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_empty_bool, NULL, NULL);
3328         return offset;
3329 }
3330 static int
3331 dissect_h225_status_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3332 {
3333         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_status_bool, NULL, NULL);
3334         return offset;
3335 }
3336 static int
3337 dissect_h225_statusInquiry_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3338 {
3339         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_statusInquiry_bool, NULL, NULL);
3340         return offset;
3341 }
3342 static int
3343 dissect_h225_setupAcknowledge_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3344 {
3345         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_setupAcknowledge_bool, NULL, NULL);
3346         return offset;
3347 }
3348 static int
3349 dissect_h225_notify_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3350 {
3351         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_notify_bool, NULL, NULL);
3352         return offset;
3353 }
3354
3355
3356 static per_sequence_t UUIEsRequested_sequence[] = {
3357         { "setup", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3358                 dissect_h225_setup_bool },
3359         { "callProceeding", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3360                 dissect_h225_callProceeding_bool },
3361         { "connect", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3362                 dissect_h225_connect_bool },
3363         { "alerting", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3364                 dissect_h225_alerting_bool },
3365         { "information", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3366                 dissect_h225_information_bool },
3367         { "releaseComplete", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3368                 dissect_h225_releaseComplete_bool },
3369         { "facility", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3370                 dissect_h225_facility_bool },
3371         { "progress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3372                 dissect_h225_progress_bool },
3373         { "empty", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3374                 dissect_h225_empty_bool },
3375         { "status", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3376                 dissect_h225_status_bool },
3377         { "statusInquiry", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3378                 dissect_h225_statusInquiry_bool },
3379         { "setupAcknowledge", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3380                 dissect_h225_setupAcknowledge_bool },
3381         { "notify", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3382                 dissect_h225_notify_bool },
3383         { NULL, 0, 0, NULL }
3384 };
3385 static int
3386 dissect_h225_UUIEsRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3387 {
3388         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_UUIEsRequested, ett_h225_UUIEsRequested, UUIEsRequested_sequence);
3389         return offset;
3390 }
3391
3392 static int
3393 dissect_h225_conferenceCalling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3394 {
3395         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_conferenceCalling, NULL, NULL);
3396         return offset;
3397 }
3398
3399
3400
3401 static int
3402 dissect_h225_threePartyService(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3403 {
3404         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_threePartyService, NULL, NULL);
3405         return offset;
3406 }
3407
3408
3409 static per_sequence_t Q954Details_sequence[] = {
3410         { "conferenceCalling", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3411                 dissect_h225_conferenceCalling },
3412         { "threePartyService", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3413                 dissect_h225_threePartyService },
3414         { NULL, 0, 0, NULL }
3415 };
3416 static int
3417 dissect_h225_Q954Info(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3418 {
3419         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_Q954Details, ett_h225_Q954Details, Q954Details_sequence);
3420         return offset;
3421 }
3422
3423 static int
3424 dissect_h225_q932Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3425 {
3426         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q932Full, NULL, NULL);
3427         return offset;
3428 }
3429
3430
3431 static int
3432 dissect_h225_q951Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3433 {
3434         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q951Full, NULL, NULL);
3435         return offset;
3436 }
3437
3438 static int
3439 dissect_h225_q952Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3440 {
3441         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q952Full, NULL, NULL);
3442         return offset;
3443 }
3444
3445 static int
3446 dissect_h225_q953Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3447 {
3448         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q953Full, NULL, NULL);
3449         return offset;
3450 }
3451
3452 static int
3453 dissect_h225_q955Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3454 {
3455         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q955Full, NULL, NULL);
3456         return offset;
3457 }
3458
3459 static int
3460 dissect_h225_q956Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3461 {
3462         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q956Full, NULL, NULL);
3463         return offset;
3464 }
3465
3466
3467 static int
3468 dissect_h225_q957Full(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3469 {
3470         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_q957Full, NULL, NULL);
3471         return offset;
3472 }
3473
3474 static per_sequence_t QseriesOptions_sequence[] = {
3475         { "q932Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3476                 dissect_h225_q932Full },
3477         { "q951Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3478                 dissect_h225_q951Full },
3479         { "q952Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3480                 dissect_h225_q952Full },
3481         { "q953Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3482                 dissect_h225_q953Full },
3483         { "q955Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3484                 dissect_h225_q955Full },
3485         { "q956Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3486                 dissect_h225_q956Full },
3487         { "q957Full", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3488                 dissect_h225_q957Full },
3489         { "q954Info", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3490                 dissect_h225_Q954Info },
3491         { NULL, 0, 0, NULL }
3492 };
3493 static int
3494 dissect_h225_callServices(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3495 {
3496         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_QseriesOptions, ett_h225_QseriesOptions, QseriesOptions_sequence);
3497         return offset;
3498 }
3499
3500 static int
3501 dissect_h225_cname(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3502 {
3503         offset=dissect_per_PrintableString(tvb, offset, pinfo, tree, hf_h225_cname, -1, -1);
3504         return offset;
3505 }
3506
3507
3508 static int
3509 dissect_h225_ssrc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3510 {
3511         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
3512                 tree, hf_h225_ssrc, 1, 4294967295UL,
3513                 NULL, NULL, FALSE);
3514         return offset;
3515 }
3516
3517
3518 static int
3519 dissect_h225_RTPsessionId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3520 {
3521         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
3522                 tree, hf_h225_RTPsessionId, 1, 255,
3523                 NULL, NULL, FALSE);
3524         return offset;
3525 }
3526
3527 static int
3528 dissect_h225_associatedSessionIds(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3529 {
3530         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_associatedSessionIds, ett_h225_associatedSessionIds, dissect_h225_RTPsessionId);
3531         return offset;
3532 }
3533 static per_sequence_t RTPSession_sequence[] = {
3534         { "rtpAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3535                 dissect_h225_rtpAddress },
3536         { "rtcpAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3537                 dissect_h225_rtcpAddress },
3538         { "cname", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3539                 dissect_h225_cname },
3540         { "ssrc", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3541                 dissect_h225_ssrc },
3542         { "sessionId", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3543                 dissect_h225_RTPsessionId },
3544         { "associatedSessionIds", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3545                 dissect_h225_associatedSessionIds },
3546         { "multicast", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
3547                 dissect_h225_NULL },
3548         { "bandwidth", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
3549                 dissect_h225_BandWidth },
3550         { NULL, 0, 0, NULL }
3551 };
3552 static int
3553 dissect_h225_RTPSession(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3554 {
3555         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RTPSession, ett_h225_RTPSession, RTPSession_sequence);
3556         return offset;
3557 }
3558
3559
3560 static int
3561 dissect_h225_ProtocolIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3562 {
3563         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_ProtocolIdentifier, NULL);
3564         return offset;
3565 }
3566
3567 static per_sequence_t StatusUUIE_sequence[] = {
3568         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3569                 dissect_h225_ProtocolIdentifier },
3570         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3571                 dissect_h225_CallIdentifier },
3572         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3573                 dissect_h225_tokens },
3574         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3575                 dissect_h225_CryptoH323Token_sequence_of },
3576         { NULL, 0, 0, NULL }
3577 };
3578 static int
3579 dissect_h225_StatusUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3580 {
3581         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_StatusUUIE, ett_h225_StatusUUIE, StatusUUIE_sequence);
3582         return offset;
3583 }
3584 static per_sequence_t StatusInquiryUUIE_sequence[] = {
3585         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3586                 dissect_h225_ProtocolIdentifier },
3587         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3588                 dissect_h225_CallIdentifier },
3589         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3590                 dissect_h225_tokens },
3591         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3592                 dissect_h225_CryptoH323Token_sequence_of },
3593         { NULL, 0, 0, NULL }
3594 };
3595 static int
3596 dissect_h225_StatusInquiryUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3597 {
3598         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_StatusInquiryUUIE, ett_h225_StatusInquiryUUIE, StatusInquiryUUIE_sequence);
3599         return offset;
3600 }
3601 static per_sequence_t SetupAcknowledgeUUIE_sequence[] = {
3602         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3603                 dissect_h225_ProtocolIdentifier },
3604         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3605                 dissect_h225_CallIdentifier },
3606         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3607                 dissect_h225_tokens },
3608         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3609                 dissect_h225_CryptoH323Token_sequence_of },
3610         { NULL, 0, 0, NULL }
3611 };
3612 static int
3613 dissect_h225_SetupAcknowledgeUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3614 {
3615         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SetupAcknowledgeUUIE, ett_h225_SetupAcknowledgeUUIE, SetupAcknowledgeUUIE_sequence);
3616         return offset;
3617 }
3618 static per_sequence_t NotifyUUIE_sequence[] = {
3619         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3620                 dissect_h225_ProtocolIdentifier },
3621         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3622                 dissect_h225_CallIdentifier },
3623         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3624                 dissect_h225_tokens },
3625         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3626                 dissect_h225_CryptoH323Token_sequence_of },
3627         { NULL, 0, 0, NULL }
3628 };
3629 static int
3630 dissect_h225_NotifyUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3631 {
3632         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_NotifyUUIE, ett_h225_NotifyUUIE, NotifyUUIE_sequence);
3633         return offset;
3634 }
3635
3636 static int
3637 dissect_h225_imsi(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3638 {
3639         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_imsi, 3, 16, "#*0123456789ABC", 15);
3640
3641         return offset;
3642 }
3643
3644
3645 static int
3646 dissect_h225_tmsi(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3647 {
3648         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_tmsi, 1, 4, NULL, NULL);
3649         return offset;
3650 }
3651
3652
3653 static int
3654 dissect_h225_msisdn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3655 {
3656         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_msisdn, 3, 16, "#*0123456789ABC", 15);
3657
3658         return offset;
3659 }
3660
3661
3662 static int
3663 dissect_h225_imei(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3664 {
3665         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_imei, 15, 16, "#*0123456789ABC", 15);
3666
3667         return offset;
3668 }
3669
3670 static int
3671 dissect_h225_hplmn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3672 {
3673         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_hplmn, 1, 4, "#*0123456789ABC", 15);
3674
3675         return offset;
3676 }
3677
3678 static int
3679 dissect_h225_vplmn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3680 {
3681         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_vplmn, 1, 4, "#*0123456789ABC", 15);
3682         return offset;
3683 }
3684
3685
3686 static per_sequence_t GSMUIM_sequence[] = {
3687         { "imsi", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3688                 dissect_h225_imsi },
3689         { "tmsi", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3690                 dissect_h225_tmsi },
3691         { "msisdn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3692                 dissect_h225_msisdn },
3693         { "imei", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3694                 dissect_h225_imei },
3695         { "hplmn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3696                 dissect_h225_hplmn },
3697         { "vplmn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3698                 dissect_h225_vplmn },
3699         { NULL, 0, 0, NULL }
3700 };
3701 static int
3702 dissect_h225_GSMUIM(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3703 {
3704         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GSMUIM, ett_h225_GSMUIM, GSMUIM_sequence);
3705         return offset;
3706 }
3707
3708 static int
3709 dissect_h225_sid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3710 {
3711         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_sid, 1, 4, "#*0123456789ABC", 15);
3712         return offset;
3713 }
3714
3715
3716 static int
3717 dissect_h225_mid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3718 {
3719         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_mid, 1, 4, "#*0123456789ABC", 15);
3720         return offset;
3721 }
3722
3723 static const value_string systemid_vals[] = {
3724         { 0, "sid" },
3725         { 1, "mid" },
3726         { 0, NULL}
3727 };
3728 static per_choice_t systemid_choice[] = {
3729         { 0, "sid", ASN1_EXTENSION_ROOT,
3730                 dissect_h225_sid },
3731         { 1, "mid", ASN1_EXTENSION_ROOT,
3732                 dissect_h225_mid },
3733         { 0, NULL, 0, NULL }
3734 };
3735 static int
3736 dissect_h225_systemid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3737 {
3738         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_systemid, ett_h225_systemid, systemid_choice, "systemid", NULL);
3739         return offset;
3740 }
3741
3742
3743
3744 static int
3745 dissect_h225_min(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3746 {
3747         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_mid, 3, 16, "#*0123456789ABC", 15);
3748         return offset;
3749 }
3750
3751
3752 static int
3753 dissect_h225_mdn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3754 {
3755         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_mdn, 3, 16, "#*0123456789ABC", 15);
3756         return offset;
3757 }
3758
3759 static int
3760 dissect_h225_esn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3761 {
3762         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_esn, 16, 16, "#*0123456789ABC", 15);
3763
3764         return offset;
3765 }
3766
3767 static int
3768 dissect_h225_mscid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3769 {
3770         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_mscid, 3, 16, "#*0123456789ABC", 15);
3771
3772         return offset;
3773 }
3774
3775
3776 static int
3777 dissect_h225_systemMyTypeCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3778 {
3779         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_systemMyTypeCode, 1, 1, NULL, NULL);
3780         return offset;
3781 }
3782
3783 static int
3784 dissect_h225_systemAccessType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3785 {
3786         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_systemAccessType, 1, 1, NULL, NULL);
3787         return offset;
3788 }
3789
3790 static int
3791 dissect_h225_qualificationInformationCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3792 {
3793         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_qualificationInformationCode, 1, 1, NULL, NULL);
3794         return offset;
3795 }
3796
3797 static int
3798 dissect_h225_sesn(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3799 {
3800         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_sesn, 16, 16, "#*0123456789ABC", 15);
3801         return offset;
3802 }
3803
3804
3805 static int
3806 dissect_h225_soc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3807 {
3808         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_soc, 3, 16, "#*0123456789ABC", 15);
3809
3810         return offset;
3811 }
3812
3813 static per_sequence_t ANSI41UIM_sequence[] = {
3814         { "imsi", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3815                 dissect_h225_imsi },
3816         { "min", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3817                 dissect_h225_min },
3818         { "mdn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3819                 dissect_h225_mdn },
3820         { "msisdn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3821                 dissect_h225_msisdn },
3822         { "esn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3823                 dissect_h225_esn },
3824         { "mscid", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3825                 dissect_h225_mscid },
3826         { "systemid", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3827                 dissect_h225_systemid },
3828         { "systemMyTypeCode", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3829                 dissect_h225_systemMyTypeCode },
3830         { "systemAccessType", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3831                 dissect_h225_systemAccessType },
3832         { "qualificationInformationCode", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3833                 dissect_h225_qualificationInformationCode },
3834         { "sesn", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3835                 dissect_h225_sesn },
3836         { "soc", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3837                 dissect_h225_soc },
3838         { NULL, 0, 0, NULL }
3839 };
3840 static int
3841 dissect_h225_ANSI41UIM(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3842 {
3843         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ANSI41UIM, ett_h225_ANSI41UIM, ANSI41UIM_sequence);
3844         return offset;
3845 }
3846
3847
3848 static const value_string MobileUIM_vals[] = {
3849         { 0, "ansi41uim" },
3850         { 1, "gsmuim" },
3851         { 0, NULL}
3852 };
3853 static per_choice_t MobileUIM_choice[] = {
3854         { 0, "ansi41uim", ASN1_EXTENSION_ROOT,
3855                 dissect_h225_ANSI41UIM },
3856         { 1, "gsmuim", ASN1_EXTENSION_ROOT,
3857                 dissect_h225_GSMUIM },
3858         { 0, NULL, 0, NULL }
3859 };
3860 static int
3861 dissect_h225_MobileUIM(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3862 {
3863         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_MobileUIM, ett_h225_MobileUIM, MobileUIM_choice, "MobileUIM", NULL);
3864         return offset;
3865 }
3866
3867
3868 static int
3869 dissect_h225_dataPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3870 {
3871         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_dataPartyNumber, 1, 128, "#*,0123456789", 13);
3872
3873         return offset;
3874 }
3875
3876 static int
3877 dissect_h225_telexPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3878 {
3879         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_telexPartyNumber, 1, 128, "#*,0123456789", 13);
3880         return offset;
3881 }
3882
3883
3884
3885 static int
3886 dissect_h225_nationalStandardPartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3887 {
3888         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_nationalStandardPartyNumber, 1, 128, "#*,0123456789", 13);
3889         return offset;
3890 }
3891
3892 static int
3893 dissect_h225_publicNumberDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3894 {
3895         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_publicNumberDigits, 1, 128, "#*,0123456789", 13);
3896         return offset;
3897 }
3898
3899
3900 static int
3901 dissect_h225_privateNumberDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3902 {
3903         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_privateNumberDigits, 1, 128, "#*,0123456789", 13);
3904         return offset;
3905 }
3906
3907
3908 static per_sequence_t e164Number_sequence[] = {
3909         { "publicTypeOfNumber", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3910                 dissect_h225_PublicTypeOfNumber },
3911         { "publicNumberDigits", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3912                 dissect_h225_publicNumberDigits },
3913         { NULL, 0, 0, NULL }
3914 };
3915 static int
3916 dissect_h225_e164Number(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3917 {
3918         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_e164Number, ett_h225_e164Number, e164Number_sequence);
3919         return offset;
3920 }
3921 static per_sequence_t privateNumber_sequence[] = {
3922         { "privateTypeOfNumber", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3923                 dissect_h225_PrivateTypeOfNumber },
3924         { "privateNumberDigits", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
3925                 dissect_h225_privateNumberDigits },
3926         { NULL, 0, 0, NULL }
3927 };
3928 static int
3929 dissect_h225_privateNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3930 {
3931         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_privateNumber, ett_h225_privateNumber, privateNumber_sequence);
3932         return offset;
3933 }
3934
3935 static const value_string PartyNumber_vals[] = {
3936         { 0, "e164Number" },
3937         { 1, "dataPartyNumber" },
3938         { 2, "telexPartyNumber" },
3939         { 3, "privateNumber" },
3940         { 4, "nationalStandardPartyNumber" },
3941         { 0, NULL}
3942 };
3943 static per_choice_t PartyNumber_choice[] = {
3944         { 0, "e164Number", ASN1_EXTENSION_ROOT,
3945                 dissect_h225_e164Number },
3946         { 1, "dataPartyNumber", ASN1_EXTENSION_ROOT,
3947                 dissect_h225_dataPartyNumber },
3948         { 2, "telexPartyNumber", ASN1_EXTENSION_ROOT,
3949                 dissect_h225_telexPartyNumber },
3950         { 3, "privateNumber", ASN1_EXTENSION_ROOT,
3951                 dissect_h225_privateNumber },
3952         { 4, "nationalStandardPartyNumber", ASN1_EXTENSION_ROOT,
3953                 dissect_h225_nationalStandardPartyNumber },
3954         { 0, NULL, 0, NULL }
3955 };
3956 static int
3957 dissect_h225_PartyNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3958 {
3959         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_PartyNumber, ett_h225_PartyNumber, PartyNumber_choice, "PartyNumber", NULL);
3960         return offset;
3961 }
3962 static int
3963 dissect_h225_startOfRange(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3964 {
3965         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_startOfRange, ett_h225_PartyNumber, PartyNumber_choice, "startOfRange", NULL);
3966         return offset;
3967 }
3968 static int
3969 dissect_h225_endOfRange(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3970 {
3971         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_endOfRange, ett_h225_PartyNumber, PartyNumber_choice, "endOfRange", NULL);
3972         return offset;
3973 }
3974
3975 static int
3976 dissect_h225_protocolType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3977 {
3978         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_protocolType, 1, 64);
3979         return offset;
3980 }
3981
3982 static int
3983 dissect_h225_protocolVariant(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3984 {
3985         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_protocolVariant, 1, 64);
3986         return offset;
3987 }
3988 static per_sequence_t TunnelledProtocolAlternateIdentifier_sequence[] = {
3989         { "protocolType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
3990                 dissect_h225_protocolType },
3991         { "protocolVariant", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
3992                 dissect_h225_protocolVariant },
3993         { NULL, 0, 0, NULL }
3994 };
3995 static int
3996 dissect_h225_TunnelledProtocolAlternateIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
3997 {
3998         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_TunnelledProtocolAlternateIdentifier, ett_h225_TunnelledProtocolAlternateIdentifier, TunnelledProtocolAlternateIdentifier_sequence);
3999         return offset;
4000 }
4001
4002 static int
4003 dissect_h225_dialedDigits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4004 {
4005         offset=dissect_per_restricted_character_string(tvb, offset, pinfo, tree, hf_h225_privateNumberDigits, 1, 128, "#,*0123456789", 13);
4006
4007         return offset;
4008 }
4009
4010 static int
4011 dissect_h225_h323Id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4012 {
4013         offset=dissect_per_BMPString(tvb, offset, pinfo, tree, hf_h225_h323ID, 1, 256);
4014         return offset;
4015 }
4016
4017 static int
4018 dissect_h225_urlId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4019 {
4020         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_urlId, 1, 512);
4021         return offset;
4022 }
4023
4024
4025 static int
4026 dissect_h225_emailId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4027 {
4028         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_emailId, 1, 512);
4029         return offset;
4030 }
4031
4032
4033 static const value_string AliasAddress_vals[] = {
4034         { 0, "dialedDigits" },
4035         { 1, "h323ID" },
4036         { 2, "urlID" },
4037         { 3, "transportID" },
4038         { 4, "emailID" },
4039         { 5, "partyNumber" },
4040         { 6, "mobileUIM" },
4041         { 0, NULL}
4042 };
4043 static per_choice_t AliasAddress_choice[] = {
4044         { 0, "dialedDigits", ASN1_EXTENSION_ROOT,
4045                 dissect_h225_dialedDigits },
4046         { 1, "h323ID", ASN1_EXTENSION_ROOT,
4047                 dissect_h225_h323Id },
4048         { 2, "urlID", ASN1_NOT_EXTENSION_ROOT,
4049                 dissect_h225_urlId },
4050         { 3, "transportID", ASN1_NOT_EXTENSION_ROOT,
4051                 dissect_h225_transportID },
4052         { 4, "emailID", ASN1_NOT_EXTENSION_ROOT,
4053                 dissect_h225_emailId },
4054         { 5, "partyNumber", ASN1_NOT_EXTENSION_ROOT,
4055                 dissect_h225_PartyNumber },
4056         { 6, "mobileUIM", ASN1_NOT_EXTENSION_ROOT,
4057                 dissect_h225_MobileUIM },
4058         { 0, NULL, 0, NULL }
4059 };
4060 int
4061 dissect_h225_AliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4062 {
4063         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_AliasAddress, ett_h225_AliasAddress, AliasAddress_choice, "AliasAddress", NULL);
4064         return offset;
4065 }
4066 static int
4067 dissect_h225_featureServerAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4068 {
4069         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_featureServerAlias, ett_h225_AliasAddress, AliasAddress_choice, "featureServerAlias", NULL);
4070         return offset;
4071 }
4072 static int
4073 dissect_h225_RemoteExtensionAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4074 {
4075         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_RemoteExtensionAddress, ett_h225_AliasAddress, AliasAddress_choice, "RemoteExtensionAddress", NULL);
4076         return offset;
4077 }
4078 static int
4079 dissect_h225_conferenceAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4080 {
4081         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_conferenceAlias, ett_h225_AliasAddress, AliasAddress_choice, "conferenceAlias", NULL);
4082         return offset;
4083 }
4084 static int
4085 dissect_h225_wildcard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4086 {
4087         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_wildcard, ett_h225_AliasAddress, AliasAddress_choice, "wildcard", NULL);
4088         return offset;
4089 }
4090 static int
4091 dissect_h225_prefix(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4092 {
4093         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_prefix, ett_h225_AliasAddress, AliasAddress_choice, "prefix", NULL);
4094         return offset;
4095 }
4096
4097 static per_sequence_t SupportedPrefix_sequence[] = {
4098         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4099                 dissect_h225_nonStandardData },
4100         { "prefix", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4101                 dissect_h225_prefix },
4102         { NULL, 0, 0, NULL }
4103 };
4104 static int
4105 dissect_h225_SupportedPrefix(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4106 {
4107         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SupportedPrefix, ett_h225_SupportedPrefix, SupportedPrefix_sequence);
4108         return offset;
4109 }
4110
4111 static int
4112 dissect_h225_SupportedPrefixes(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4113 {
4114         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_SupportedPrefixes, ett_h225_SupportedPrefixes, dissect_h225_SupportedPrefix);
4115         return offset;
4116 }
4117
4118
4119 static per_sequence_t H310Caps_sequence[] = {
4120         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4121                 dissect_h225_nonStandardData },
4122         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4123                 dissect_h225_dataRatesSupported },
4124         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4125                 dissect_h225_SupportedPrefixes },
4126         { NULL, 0, 0, NULL }
4127 };
4128 static int
4129 dissect_h225_H310Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4130 {
4131         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H310Caps, ett_h225_H310Caps, H310Caps_sequence);
4132         return offset;
4133 }
4134
4135
4136 static per_sequence_t H320Caps_sequence[] = {
4137         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4138                 dissect_h225_nonStandardData },
4139         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4140                 dissect_h225_dataRatesSupported },
4141         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4142                 dissect_h225_SupportedPrefixes },
4143         { NULL, 0, 0, NULL }
4144 };
4145 static int
4146 dissect_h225_H320Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4147 {
4148         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H320Caps, ett_h225_H320Caps, H320Caps_sequence);
4149         return offset;
4150 }
4151
4152
4153 static per_sequence_t H321Caps_sequence[] = {
4154         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4155                 dissect_h225_nonStandardData },
4156         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4157                 dissect_h225_dataRatesSupported },
4158         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4159                 dissect_h225_SupportedPrefixes },
4160         { NULL, 0, 0, NULL }
4161 };
4162 static int
4163 dissect_h225_H321Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4164 {
4165         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H321Caps, ett_h225_H321Caps, H321Caps_sequence);
4166         return offset;
4167 }
4168
4169
4170 static per_sequence_t H322Caps_sequence[] = {
4171         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4172                 dissect_h225_nonStandardData },
4173         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4174                 dissect_h225_dataRatesSupported },
4175         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4176                 dissect_h225_SupportedPrefixes },
4177         { NULL, 0, 0, NULL }
4178 };
4179 static int
4180 dissect_h225_H322Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4181 {
4182         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H322Caps, ett_h225_H322Caps, H322Caps_sequence);
4183         return offset;
4184 }
4185
4186
4187 static per_sequence_t H323Caps_sequence[] = {
4188         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4189                 dissect_h225_nonStandardData },
4190         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4191                 dissect_h225_dataRatesSupported },
4192         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4193                 dissect_h225_SupportedPrefixes },
4194         { NULL, 0, 0, NULL }
4195 };
4196 static int
4197 dissect_h225_H323Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4198 {
4199         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H323Caps, ett_h225_H323Caps, H323Caps_sequence);
4200         return offset;
4201 }
4202
4203
4204 static per_sequence_t H324Caps_sequence[] = {
4205         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4206                 dissect_h225_nonStandardData },
4207         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4208                 dissect_h225_dataRatesSupported },
4209         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4210                 dissect_h225_SupportedPrefixes },
4211         { NULL, 0, 0, NULL }
4212 };
4213 static int
4214 dissect_h225_H324Caps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4215 {
4216         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H324Caps, ett_h225_H324Caps, H324Caps_sequence);
4217         return offset;
4218 }
4219
4220
4221 static per_sequence_t VoiceCaps_sequence[] = {
4222         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4223                 dissect_h225_nonStandardData },
4224         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4225                 dissect_h225_dataRatesSupported },
4226         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4227                 dissect_h225_SupportedPrefixes },
4228         { NULL, 0, 0, NULL }
4229 };
4230 static int
4231 dissect_h225_VoiceCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4232 {
4233         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_VoiceCaps, ett_h225_VoiceCaps, VoiceCaps_sequence);
4234         return offset;
4235 }
4236
4237
4238 static per_sequence_t T120OnlyCaps_sequence[] = {
4239         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4240                 dissect_h225_nonStandardData },
4241         { "dataRatesSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4242                 dissect_h225_dataRatesSupported },
4243         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4244                 dissect_h225_SupportedPrefixes },
4245         { NULL, 0, 0, NULL }
4246 };
4247 static int
4248 dissect_h225_T120OnlyCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4249 {
4250         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_T120OnlyCaps, ett_h225_T120OnlyCaps, T120OnlyCaps_sequence);
4251         return offset;
4252 }
4253
4254 static per_sequence_t NonStandardProtocol_sequence[] = {
4255         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4256                 dissect_h225_nonStandardData },
4257         { "dataRatesSupported", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4258                 dissect_h225_dataRatesSupported },
4259         { "supportedPrefixes", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4260                 dissect_h225_SupportedPrefixes },
4261         { NULL, 0, 0, NULL }
4262 };
4263 static int
4264 dissect_h225_NonStandardProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4265 {
4266         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_NonStandardProtocol, ett_h225_NonStandardProtocol, NonStandardProtocol_sequence);
4267         return offset;
4268 }
4269
4270
4271 static per_sequence_t SIPCaps_sequence[] = {
4272         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4273                 dissect_h225_nonStandardData },
4274         { "dataRatesSupported", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4275                 dissect_h225_dataRatesSupported },
4276         { "supportedPrefixes", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4277                 dissect_h225_SupportedPrefixes },
4278         { NULL, 0, 0, NULL }
4279 };
4280 static int
4281 dissect_h225_SIPCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4282 {
4283         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SIPCaps, ett_h225_SIPCaps, SIPCaps_sequence);
4284         return offset;
4285 }
4286
4287 static per_sequence_t AddressPattern_range_sequence[] = {
4288         { "startOfRange", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
4289                 dissect_h225_startOfRange },
4290         { "endOfRange", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
4291                 dissect_h225_endOfRange },
4292         { NULL, 0, 0, NULL }
4293 };
4294 static int
4295 dissect_h225_AddressPattern_range(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4296 {
4297         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AddressPattern_range, ett_h225_AddressPattern_range, AddressPattern_range_sequence);
4298         return offset;
4299 }
4300
4301
4302 static const value_string AddressPattern_vals[] = {
4303         { 0, "wildcard" },
4304         { 1, "range" },
4305         { 0, NULL}
4306 };
4307 static per_choice_t AddressPattern_choice[] = {
4308         { 0, "wildcard", ASN1_EXTENSION_ROOT,
4309                 dissect_h225_wildcard },
4310         { 0, "range", ASN1_EXTENSION_ROOT,
4311                 dissect_h225_AddressPattern_range },
4312         { 0, NULL, 0, NULL }
4313 };
4314 static int
4315 dissect_h225_AddressPattern(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4316 {
4317         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_AddressPattern, ett_h225_AddressPattern, AddressPattern_choice, "AddressPattern", NULL);
4318         return offset;
4319 }
4320 static per_sequence_t ConferenceList_sequence[] = {
4321         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4322                 dissect_h225_conferenceID },
4323         { "conferenceAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4324                 dissect_h225_conferenceAlias },
4325         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4326                 dissect_h225_nonStandardData },
4327         { NULL, 0, 0, NULL }
4328 };
4329 static int
4330 dissect_h225_ConferenceList(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4331 {
4332         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ConferenceList, ett_h225_ConferenceList, ConferenceList_sequence);
4333         return offset;
4334 }
4335
4336 static int
4337 dissect_h225_conferences(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4338 {
4339         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_conferences, ett_h225_conferences, dissect_h225_ConferenceList);
4340         return offset;
4341 }
4342 static per_sequence_t T38FaxAnnexbOnlyCaps_sequence[] = {
4343         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4344                 dissect_h225_nonStandardData },
4345         { "dataRatesSupported", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4346                 dissect_h225_dataRatesSupported },
4347         { "supportedPrefixes", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4348                 dissect_h225_SupportedPrefixes },
4349         { "t38FaxProtocol", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4350                 dissect_h245_DataProtocolCapability },
4351         { "t38FaxProfile", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4352                 dissect_h245_T38FaxProfile },
4353         { NULL, 0, 0, NULL }
4354 };
4355 static int
4356 dissect_h225_T38FaxAnnexbOnlyCaps(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4357 {
4358         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_T38FaxAnnexbOnlyCaps, ett_h225_T38FaxAnnexbOnlyCaps, T38FaxAnnexbOnlyCaps_sequence);
4359         return offset;
4360 }
4361
4362
4363 static const value_string SupportedProtocols_vals[] = {
4364         { 0, "nonStandardData" },
4365         { 1, "h310" },
4366         { 2, "h320" },
4367         { 3, "h321" },
4368         { 4, "h322" },
4369         { 5, "h323" },
4370         { 6, "h324" },
4371         { 7, "voice" },
4372         { 8, "t120-only" },
4373         { 9, "nonStandardProtocol" },
4374         { 10, "t38FaxAnnexbOnly" },
4375         { 11, "sip" },
4376         { 0, NULL}
4377 };
4378 static per_choice_t SupportedProtocols_choice[] = {
4379         { 0, "nonStandardData", ASN1_EXTENSION_ROOT,
4380                 dissect_h225_nonStandardData },
4381         { 1, "h310", ASN1_EXTENSION_ROOT,
4382                 dissect_h225_H310Caps },
4383         { 2, "h320", ASN1_EXTENSION_ROOT,
4384                 dissect_h225_H320Caps },
4385         { 3, "h321", ASN1_EXTENSION_ROOT,
4386                 dissect_h225_H321Caps },
4387         { 4, "h322", ASN1_EXTENSION_ROOT,
4388                 dissect_h225_H322Caps },
4389         { 5, "h323", ASN1_EXTENSION_ROOT,
4390                 dissect_h225_H323Caps },
4391         { 6, "h324", ASN1_EXTENSION_ROOT,
4392                 dissect_h225_H324Caps },
4393         { 7, "voice", ASN1_EXTENSION_ROOT,
4394                 dissect_h225_VoiceCaps },
4395         { 8, "t120-only", ASN1_EXTENSION_ROOT,
4396                 dissect_h225_T120OnlyCaps },
4397         { 9, "nonStandardProtocol", ASN1_NOT_EXTENSION_ROOT,
4398                 dissect_h225_NonStandardProtocol },
4399         { 10, "t38FaxAnnexbOnly", ASN1_NOT_EXTENSION_ROOT,
4400                 dissect_h225_T38FaxAnnexbOnlyCaps },
4401         { 11, "sip", ASN1_NOT_EXTENSION_ROOT,
4402                 dissect_h225_SIPCaps },
4403         { 0, NULL, 0, NULL }
4404 };
4405 static int
4406 dissect_h225_SupportedProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4407 {
4408         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_SupportedProtocols, ett_h225_SupportedProtocols, SupportedProtocols_choice, "SupportedProtocols", NULL);
4409         return offset;
4410 }
4411
4412 static int
4413 dissect_h225_protocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4414 {
4415         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_protocol, ett_h225_protocol, dissect_h225_SupportedProtocols);
4416         return offset;
4417 }
4418
4419
4420
4421 static per_sequence_t GatewayInfo_sequence[] = {
4422         { "protocol", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4423                 dissect_h225_protocol },
4424         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4425                 dissect_h225_nonStandardData },
4426         { NULL, 0, 0, NULL }
4427 };
4428 static int
4429 dissect_h225_gateway(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4430 {
4431         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatewayInfo, ett_h225_GatewayInfo, GatewayInfo_sequence);
4432         return offset;
4433 }
4434 static per_sequence_t McuInfo_sequence[] = {
4435         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4436                 dissect_h225_nonStandardData },
4437         { "protocol", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4438                 dissect_h225_protocol },
4439         { NULL, 0, 0, NULL }
4440 };
4441 static int
4442 dissect_h225_mcu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4443 {
4444         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_McuInfo, ett_h225_McuInfo, McuInfo_sequence);
4445         return offset;
4446 }
4447
4448
4449 static int
4450 dissect_h225_tunnelledProtocolObjectID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4451 {
4452         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_tunnelledProtocolObjectID, tpID);
4453         return offset;
4454 }
4455
4456
4457 static const value_string TunnelledProtocol_id_vals[] = {
4458         { 0, "tunnelledProtocolObjectID" },
4459         { 1, "tunnelledProtocolAlternateID" },
4460         { 0, NULL }
4461 };
4462 static per_choice_t TunnelledProtocol_id_choice[] = {
4463         { 0, "tunnelledProtocolObjectID", ASN1_EXTENSION_ROOT,
4464                 dissect_h225_tunnelledProtocolObjectID },
4465         { 1, "tunnelledProtocolAlternateID", ASN1_EXTENSION_ROOT,
4466                 dissect_h225_TunnelledProtocolAlternateIdentifier },
4467         { 0, NULL, 0, NULL }
4468 };
4469 static int
4470 dissect_h225_TunnelledProtocol_id(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4471 {
4472         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_TunnelledProtocol_id, ett_h225_TunnelledProtocol_id, TunnelledProtocol_id_choice, "id", NULL);
4473         return offset;
4474 }
4475
4476 static int
4477 dissect_h225_TunnelledProtocol_subIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4478 {
4479         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_TunnelledProtocol_subIdentifier, 1, 64);
4480         return offset;
4481 }
4482 static per_sequence_t TunnelledProtocol_sequence[] = {
4483         { "id", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4484                 dissect_h225_TunnelledProtocol_id },
4485         { "subIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4486                 dissect_h225_TunnelledProtocol_subIdentifier },
4487         { NULL, 0, 0, NULL }
4488 };
4489 static int
4490 dissect_h225_TunnelledProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4491 {
4492         tpID[0] = '\0';
4493         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_TunnelledProtocol, ett_h225_TunnelledProtocol, TunnelledProtocol_sequence);
4494         tp_handle = dissector_get_string_handle(tp_dissector_table, tpID);
4495         return offset;
4496 }
4497 static int
4498 dissect_h225_TunnelledProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4499 {
4500         offset = dissect_per_sequence_of(tvb, offset, pinfo, tree,
4501                                 hf_h225_TunnelledProtocols,
4502                                 ett_h225_TunnelledProtocols, dissect_h225_TunnelledProtocol);
4503         return offset;
4504 }
4505
4506 static int
4507 dissect_h225_desiredTunnelledProtocol(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4508 {
4509         tpID[0] = '\0';
4510         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_desiredTunnelledProtocol, ett_h225_TunnelledProtocol, TunnelledProtocol_sequence);
4511         return offset;
4512 }
4513
4514
4515 static int
4516 dissect_h225_CicInfo_cic_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4517 {
4518         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_CicInfo_cic_item, 2, 4, NULL, NULL);
4519         return offset;
4520 }
4521
4522 static int
4523 dissect_h225_CicInfo_pointCode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4524 {
4525         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_CicInfo_pointCode, 2, 5, NULL, NULL);
4526         return offset;
4527 }
4528
4529 static int
4530 dissect_h225_CicInfo_cic(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4531 {
4532         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_CicInfo_cic, ett_h225_CicInfo_cic, dissect_h225_CicInfo_cic_item);
4533         return offset;
4534 }
4535
4536 static per_sequence_t CicInfo_sequence[] = {
4537         { "cic", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4538                 dissect_h225_CicInfo_cic },
4539         { "pointCode", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4540                 dissect_h225_CicInfo_pointCode },
4541         { NULL, 0, 0, NULL }
4542 };
4543 static int
4544 dissect_h225_CicInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4545 {
4546         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CicInfo, ett_h225_CicInfo, CicInfo_sequence);
4547         return offset;
4548 }
4549
4550 static int
4551 dissect_h225_GroupID_member_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4552 {
4553         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4554                 tree, hf_h225_GroupID_member_item, 0, 65535,
4555                 NULL, NULL, FALSE);
4556         return offset;
4557 }
4558
4559 static int
4560 dissect_h225_GroupID_member(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4561 {
4562         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_GroupID_member, ett_h225_GroupID_member, dissect_h225_GroupID_member_item);
4563         return offset;
4564 }
4565
4566 static int
4567 dissect_h225_GroupID_group(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4568 {
4569         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_GroupID_group, 1, 128);
4570         return offset;
4571 }
4572
4573 static per_sequence_t GroupID_sequence[] = {
4574         { "member", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4575                 dissect_h225_GroupID_member },
4576         { "group", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4577                 dissect_h225_GroupID_group },
4578         { NULL, 0, 0, NULL }
4579 };
4580 static int
4581 dissect_h225_GroupID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4582 {
4583         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GroupID, ett_h225_GroupID, GroupID_sequence);
4584         return offset;
4585 }
4586
4587 static per_sequence_t CircuitIdentifier_sequence[] = {
4588         { "cic", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4589                 dissect_h225_CicInfo },
4590         { "group", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4591                 dissect_h225_GroupID },
4592         { "carrier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4593                 dissect_h225_CarrierInfo },
4594         { NULL, 0, 0, NULL }
4595 };
4596 static int
4597 dissect_h225_sourceCircuitID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4598 {
4599         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_sourceCircuitID, ett_h225_CircuitIdentifier, CircuitIdentifier_sequence);
4600         return offset;
4601 }
4602 static int
4603 dissect_h225_destinationCircuitID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4604 {
4605         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_destinationCircuitID, ett_h225_CircuitIdentifier, CircuitIdentifier_sequence);
4606         return offset;
4607 }
4608
4609 static int
4610 dissect_h225_Generic_standard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4611 {
4612         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4613                 tree, hf_h225_Generic_standard, 0, 16383,
4614                 NULL, NULL, TRUE);
4615         return offset;
4616 }
4617
4618
4619 static int
4620 dissect_h225_Generic_oid(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4621 {
4622         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_Generic_oid, NULL);
4623         return offset;
4624 }
4625
4626
4627 static int
4628 dissect_h225_Generic_nonStandard(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4629 {
4630         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_Generic_nonStandard, 16, 16, NULL, NULL);
4631         return offset;
4632 }
4633
4634
4635 static const value_string GenericIdentifier_vals[] = {
4636         { 0, "standard" },
4637         { 1, "oid" },
4638         { 2, "nonStandard" },
4639         { 0, NULL}
4640 };
4641 static per_choice_t GenericIdentifier_choice[] = {
4642         { 0, "standard", ASN1_EXTENSION_ROOT,
4643                 dissect_h225_Generic_standard },
4644         { 1, "oid", ASN1_EXTENSION_ROOT,
4645                 dissect_h225_Generic_oid },
4646         { 2, "nonStandard", ASN1_EXTENSION_ROOT,
4647                 dissect_h225_Generic_nonStandard },
4648         { 0, NULL, 0, NULL }
4649 };
4650 static int
4651 dissect_h225_GenericIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4652 {
4653         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_GenericIdentifier, ett_h225_GenericIdentifier, GenericIdentifier_choice, "GenericIdentifier", NULL);
4654         return offset;
4655 }
4656
4657 static int dissect_h225_Content(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
4658
4659 static per_sequence_t EnumeratedParameter_sequence[] = {
4660         { "id", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4661                 dissect_h225_GenericIdentifier },
4662         { "content", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4663                 dissect_h225_Content },
4664         { NULL, 0, 0, NULL }
4665 };
4666 static int
4667 dissect_h225_EnumeratedParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4668 {
4669         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_EnumeratedParameter, ett_h225_EnumeratedParameter, EnumeratedParameter_sequence);
4670         return offset;
4671 }
4672
4673
4674 static int
4675 dissect_h225_parameters(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4676 {
4677         offset=dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_h225_parameters, ett_h225_parameters, dissect_h225_EnumeratedParameter, 1, 512);
4678         return offset;
4679 }
4680
4681 static per_sequence_t GenericData_sequence[] = {
4682         { "id", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4683                 dissect_h225_GenericIdentifier },
4684         { "parameters", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4685                 dissect_h225_parameters },
4686         { NULL, 0, 0, NULL }
4687 };
4688 static int
4689 dissect_h225_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4690 {
4691         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GenericData, ett_h225_GenericData, GenericData_sequence);
4692         return offset;
4693 }
4694 static int
4695 dissect_h225_genericData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4696 {
4697         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_genericData, ett_h225_genericData, dissect_h225_GenericData);
4698         return offset;
4699 }
4700 static int
4701 dissect_h225_FeatureDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4702 {
4703         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_FeatureDescriptor, ett_h225_GenericData, GenericData_sequence);
4704         return offset;
4705 }
4706
4707 static int
4708 dissect_h225_Content_raw(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4709 {
4710         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_Content_raw, -1, -1, NULL, NULL);
4711         return offset;
4712 }
4713
4714
4715 static int
4716 dissect_h225_Content_text(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4717 {
4718         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_Content_text, -1, -1);
4719         return offset;
4720 }
4721
4722
4723
4724
4725 static int
4726 dissect_h225_Content_unicode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4727 {
4728         offset=dissect_per_BMPString(tvb, offset, pinfo, tree, hf_h225_unicode, -1, -1);
4729         return offset;
4730 }
4731
4732
4733
4734 static int
4735 dissect_h225_Content_bool(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4736 {
4737         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_Content_bool, NULL, NULL);
4738         return offset;
4739 }
4740
4741
4742
4743 static int
4744 dissect_h225_Content_number8(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4745 {
4746         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4747                 tree, hf_h225_Content_number8, 0, 255,
4748                 NULL, NULL, FALSE);
4749         return offset;
4750 }
4751
4752 static int
4753 dissect_h225_number16(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4754 {
4755         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4756                 tree, hf_h225_number16, 0, 65535,
4757                 NULL, NULL, FALSE);
4758         return offset;
4759 }
4760
4761 static int
4762 dissect_h225_Content_number32(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4763 {
4764         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4765                 tree, hf_h225_Content_number32, 0, 4294967295UL,
4766                 NULL, NULL, FALSE);
4767         return offset;
4768 }
4769
4770 static int
4771 dissect_h225_Content_compound(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4772 {
4773         offset=dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_h225_Content_compound, ett_h225_Content_compound, dissect_h225_EnumeratedParameter, 1, 512);
4774         return offset;
4775 }
4776
4777 static int
4778 dissect_h225_Content_nested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4779 {
4780         offset=dissect_per_constrained_sequence_of(tvb, offset, pinfo, tree, hf_h225_Content_nested, ett_h225_Content_nested, dissect_h225_GenericData, 1, 16);
4781         return offset;
4782 }
4783
4784
4785
4786
4787
4788 static const value_string Content_vals[] = {
4789         { 0, "raw" },
4790         { 1, "text" },
4791         { 2, "unicode" },
4792         { 3, "bool" },
4793         { 4, "number8" },
4794         { 5, "number16" },
4795         { 6, "number32" },
4796         { 7, "id" },
4797         { 8, "alias" },
4798         { 9, "transport" },
4799         { 10, "compound" },
4800         { 11, "nested" },
4801         { 0, NULL}
4802 };
4803 static per_choice_t Content_choice[] = {
4804         { 0, "raw", ASN1_EXTENSION_ROOT,
4805                 dissect_h225_Content_raw },
4806         { 1, "text", ASN1_EXTENSION_ROOT,
4807                 dissect_h225_Content_text },
4808         { 2, "unicode", ASN1_EXTENSION_ROOT,
4809                 dissect_h225_Content_unicode },
4810         { 3, "bool", ASN1_EXTENSION_ROOT,
4811                 dissect_h225_Content_bool },
4812         { 4, "number8", ASN1_EXTENSION_ROOT,
4813                 dissect_h225_Content_number8 },
4814         { 5, "number16", ASN1_EXTENSION_ROOT,
4815                 dissect_h225_number16 },
4816         { 6, "number32", ASN1_EXTENSION_ROOT,
4817                 dissect_h225_Content_number32 },
4818         { 7, "id", ASN1_EXTENSION_ROOT,
4819                 dissect_h225_GenericIdentifier },
4820         { 8, "alias", ASN1_EXTENSION_ROOT,
4821                 dissect_h225_AliasAddress },
4822         { 9, "transport", ASN1_EXTENSION_ROOT,
4823                 dissect_h225_TransportAddress },
4824         { 10, "compound", ASN1_EXTENSION_ROOT,
4825                 dissect_h225_Content_compound },
4826         { 11, "nested", ASN1_EXTENSION_ROOT,
4827                 dissect_h225_Content_nested },
4828         { 0, NULL, 0, NULL }
4829 };
4830 static int
4831 dissect_h225_Content(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4832 {
4833         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_Content, ett_h225_Content, Content_choice, "Content", NULL);
4834         return offset;
4835 }
4836
4837
4838 static int
4839 dissect_h225_replacementFeatureSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4840 {
4841         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_replacementFeatureSet, NULL, NULL);
4842         return offset;
4843 }
4844
4845 static int
4846 dissect_h225_neededFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4847 {
4848         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_neededFeatures, ett_h225_neededFeatures, dissect_h225_FeatureDescriptor);
4849         return offset;
4850 }
4851
4852 static int
4853 dissect_h225_desiredFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4854 {
4855         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_desiredFeatures, ett_h225_desiredFeatures, dissect_h225_FeatureDescriptor);
4856         return offset;
4857 }
4858
4859 static int
4860 dissect_h225_supportedFeatures(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4861 {
4862         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_supportedFeatures, ett_h225_supportedFeatures, dissect_h225_FeatureDescriptor);
4863         return offset;
4864 }
4865
4866 static per_sequence_t FeatureSet_sequence[] = {
4867         { "replacementFeatureSet", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4868                 dissect_h225_replacementFeatureSet },
4869         { "neededFeatures", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4870                 dissect_h225_neededFeatures },
4871         { "desiredFeatures", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4872                 dissect_h225_desiredFeatures },
4873         { "supportedFeatures", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4874                 dissect_h225_supportedFeatures },
4875         { NULL, 0, 0, NULL }
4876 };
4877 static int
4878 dissect_h225_FeatureSet(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4879 {
4880         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_FeatureSet, ett_h225_FeatureSet, FeatureSet_sequence);
4881         return offset;
4882 }
4883
4884 static int
4885 dissect_h225_CallsAvailable_calls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4886 {
4887         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
4888                 tree, hf_h225_CallsAvailable_calls, 0, 4294967295UL,
4889                 NULL, NULL, FALSE);
4890         return offset;
4891 }
4892
4893
4894 static int
4895 dissect_h225_CallsAvailable_group(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4896 {
4897         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_CallsAvailable_group, 1, 128);
4898         return offset;
4899 }
4900
4901 static per_sequence_t CallsAvailable_sequence[] = {
4902         { "calls", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
4903                 dissect_h225_CallsAvailable_calls },
4904         { "group", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
4905                 dissect_h225_CallsAvailable_group },
4906         { "carrier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
4907                 dissect_h225_CarrierInfo },
4908         { NULL, 0, 0, NULL }
4909 };
4910 static int
4911 dissect_h225_CallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4912 {
4913         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallsAvailable, ett_h225_CallsAvailable, CallsAvailable_sequence);
4914         return offset;
4915 }
4916
4917 static int
4918 dissect_h225_voiceGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4919 {
4920         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_voiceGwCallsAvailable, ett_h225_voiceGwCallsAvailable, dissect_h225_CallsAvailable);
4921         return offset;
4922 }
4923
4924 static int
4925 dissect_h225_h310GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4926 {
4927         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h310GwCallsAvailable, ett_h225_h310GwCallsAvailable, dissect_h225_CallsAvailable);
4928         return offset;
4929 }
4930
4931 static int
4932 dissect_h225_h320GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4933 {
4934         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h320GwCallsAvailable, ett_h225_h320GwCallsAvailable, dissect_h225_CallsAvailable);
4935         return offset;
4936 }
4937
4938 static int
4939 dissect_h225_h321GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4940 {
4941         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h321GwCallsAvailable, ett_h225_h321GwCallsAvailable, dissect_h225_CallsAvailable);
4942         return offset;
4943 }
4944
4945 static int
4946 dissect_h225_h322GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4947 {
4948         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h322GwCallsAvailable, ett_h225_h322GwCallsAvailable, dissect_h225_CallsAvailable);
4949         return offset;
4950 }
4951
4952 static int
4953 dissect_h225_h323GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4954 {
4955         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h323GwCallsAvailable, ett_h225_h323GwCallsAvailable, dissect_h225_CallsAvailable);
4956         return offset;
4957 }
4958
4959 static int
4960 dissect_h225_h324GwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4961 {
4962         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h324GwCallsAvailable, ett_h225_h324GwCallsAvailable, dissect_h225_CallsAvailable);
4963         return offset;
4964 }
4965
4966 static int
4967 dissect_h225_t120OnlyGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4968 {
4969         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_t120OnlyGwCallsAvailable, ett_h225_t120OnlyGwCallsAvailable, dissect_h225_CallsAvailable);
4970         return offset;
4971 }
4972
4973 static int
4974 dissect_h225_t38FaxAnnexbOnlyGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4975 {
4976         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_t38FaxAnnexbOnlyGwCallsAvailable, ett_h225_t38FaxAnnexbOnlyGwCallsAvailable, dissect_h225_CallsAvailable);
4977         return offset;
4978 }
4979
4980 static int
4981 dissect_h225_terminalCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4982 {
4983         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_terminalCallsAvailable, ett_h225_terminalCallsAvailable, dissect_h225_CallsAvailable);
4984         return offset;
4985 }
4986
4987 static int
4988 dissect_h225_mcuCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4989 {
4990         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_mcuCallsAvailable, ett_h225_mcuCallsAvailable, dissect_h225_CallsAvailable);
4991         return offset;
4992 }
4993
4994 static int
4995 dissect_h225_sipGwCallsAvailable(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
4996 {
4997         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_sipGwCallsAvailable, ett_h225_sipGwCallsAvailable, dissect_h225_CallsAvailable);
4998         return offset;
4999 }
5000 static per_sequence_t CallCapacityInfo_sequence[] = {
5001         { "voiceGwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5002                 dissect_h225_voiceGwCallsAvailable },
5003         { "h310GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5004                 dissect_h225_h310GwCallsAvailable },
5005         { "h320GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5006                 dissect_h225_h320GwCallsAvailable },
5007         { "h321GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5008                 dissect_h225_h321GwCallsAvailable },
5009         { "h322GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5010                 dissect_h225_h322GwCallsAvailable },
5011         { "h323GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5012                 dissect_h225_h323GwCallsAvailable },
5013         { "h324GwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5014                 dissect_h225_h324GwCallsAvailable },
5015         { "t120OnlyGwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5016                 dissect_h225_t120OnlyGwCallsAvailable },
5017         { "t38FaxAnnexbOnlyGwCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5018                 dissect_h225_t38FaxAnnexbOnlyGwCallsAvailable },
5019         { "terminalCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5020                 dissect_h225_terminalCallsAvailable },
5021         { "mcuCallsAvailable", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5022                 dissect_h225_mcuCallsAvailable },
5023         { "sipGwCallsAvailable", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5024                 dissect_h225_sipGwCallsAvailable },
5025         { NULL, 0, 0, NULL }
5026 };
5027 static int
5028 dissect_h225_maximumCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5029 {
5030         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_maximumCallCapacity, ett_h225_CallCapacityInfo, CallCapacityInfo_sequence);
5031         return offset;
5032 }
5033 static int
5034 dissect_h225_currentCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5035 {
5036         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_currentCallCapacity, ett_h225_CallCapacityInfo, CallCapacityInfo_sequence);
5037         return offset;
5038 }
5039
5040 static per_sequence_t CallCapacity_sequence[] = {
5041         { "maximumCallCapacity", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5042                 dissect_h225_maximumCallCapacity },
5043         { "currentCallCapacity", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5044                 dissect_h225_currentCallCapacity },
5045         { NULL, 0, 0, NULL }
5046 };
5047 static int
5048 dissect_h225_CallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5049 {
5050         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallCapacity, ett_h225_CallCapacity, CallCapacity_sequence);
5051         return offset;
5052 }
5053
5054 static int
5055 dissect_h225_productID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5056 {
5057         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_productID, 1, 256, NULL, NULL);
5058         return offset;
5059 }
5060
5061 static int
5062 dissect_h225_versionID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5063 {
5064         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_versionID, 1, 256, NULL, NULL);
5065         return offset;
5066 }
5067
5068 static int
5069 dissect_h225_enterpriseNumber(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5070 {
5071         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_enterpriseNumber, NULL);
5072         return offset;
5073 }
5074
5075 static per_sequence_t VendorIdentifier_sequence[] = {
5076         { "vendor", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5077                 dissect_h225_h221NonStandard },
5078         { "productId", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5079                 dissect_h225_productID },
5080         { "versionId", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5081                 dissect_h225_versionID },
5082         { "enterpriseNumber", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5083                 dissect_h225_enterpriseNumber },
5084         { NULL, 0, 0, NULL }
5085 };
5086 static int
5087 dissect_h225_VendorIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5088 {
5089         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_VendorIdentifier, ett_h225_VendorIdentifier, VendorIdentifier_sequence);
5090         return offset;
5091 }
5092
5093
5094 static int
5095 dissect_h225_canReportCallCapacity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5096 {
5097         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canReportCallCapacity, NULL, NULL);
5098         return offset;
5099 }
5100
5101 static per_sequence_t CapacityReportingCapability_sequence[] = {
5102         { "canReportCallCapacity", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5103                 dissect_h225_canReportCallCapacity },
5104         { NULL, 0, 0, NULL }
5105 };
5106 static int
5107 dissect_h225_CapacityReportingCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5108 {
5109         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CapacityReportingCapability, ett_h225_CapacityReportingCapability, CapacityReportingCapability_sequence);
5110         return offset;
5111 }
5112
5113 static int
5114 dissect_h225_canDisplayAmountString(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5115 {
5116         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canDisplayAmountString, NULL, NULL);
5117         return offset;
5118 }
5119
5120 static int
5121 dissect_h225_canEnforceDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5122 {
5123         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canEnforceDurationLimit, NULL, NULL);
5124         return offset;
5125 }
5126
5127 static per_sequence_t CallCreditCapability_sequence[] = {
5128         { "canDisplayAmountString", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5129                 dissect_h225_canDisplayAmountString },
5130         { "canEnforceDurationLimit", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5131                 dissect_h225_canEnforceDurationLimit },
5132         { NULL, 0, 0, NULL }
5133 };
5134 static int
5135 dissect_h225_CallCreditCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5136 {
5137         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallCreditCapability, ett_h225_CallCreditCapability, CallCreditCapability_sequence);
5138         return offset;
5139 }
5140
5141 static int
5142 dissect_h225_BandwidthDetails_sender(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5143 {
5144         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_BandwidthDetails_sender, NULL, NULL);
5145         return offset;
5146 }
5147
5148 static int
5149 dissect_h225_BandwidthDetails_multicast(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5150 {
5151         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_BandwidthDetails_multicast, NULL, NULL);
5152         return offset;
5153 }
5154
5155 static per_sequence_t BandwidthDetails_sequence[] = {
5156         { "sender", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5157                 dissect_h225_BandwidthDetails_sender },
5158         { "multicast", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5159                 dissect_h225_BandwidthDetails_multicast },
5160         { "bandwidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5161                 dissect_h225_BandWidth },
5162         { "rtcpAddresses", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5163                 dissect_h225_rtcpAddress },
5164         { NULL, 0, 0, NULL }
5165 };
5166 static int
5167 dissect_h225_BandwidthDetails(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5168 {
5169         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_BandwidthDetails, ett_h225_BandwidthDetails, BandwidthDetails_sequence);
5170         return offset;
5171 }
5172
5173 static int
5174 dissect_h225_releaseCompleteCauseIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5175 {
5176         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_releaseCompleteCauseIE, 2, 32, NULL, NULL);
5177         return offset;
5178 }
5179
5180 static const value_string CallTerminationCause_vals[] = {
5181         { 0, "releaseCompleteReason" },
5182         { 1, "releaseCompleteCauseIE" },
5183         { 0, NULL}
5184 };
5185 static per_choice_t CallTerminationCause_choice[] = {
5186         { 0, "releaseCompleteReason", ASN1_EXTENSION_ROOT,
5187                 dissect_h225_ReleaseCompleteReason },
5188         { 1, "releaseCompleteCauseIE", ASN1_EXTENSION_ROOT,
5189                 dissect_h225_releaseCompleteCauseIE },
5190         { 0, NULL, 0, NULL }
5191 };
5192 static int
5193 dissect_h225_CallTerminationCause(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5194 {
5195         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_CallTerminationCause, ett_h225_CallTerminationCause, CallTerminationCause_choice, "CallTerminationCause", NULL);
5196         return offset;
5197 }
5198
5199 static per_sequence_t CircuitInfo_sequence[] = {
5200         { "sourceCircuitID", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5201                 dissect_h225_sourceCircuitID },
5202         { "destinationCircuitID", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5203                 dissect_h225_destinationCircuitID },
5204         { "genericData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5205                 dissect_h225_genericData },
5206         { NULL, 0, 0, NULL }
5207 };
5208 static int
5209 dissect_h225_CircuitInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5210 {
5211         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CircuitInfo, ett_h225_CircuitInfo, CircuitInfo_sequence);
5212         return offset;
5213 }
5214
5215 static int
5216 dissect_h225_fastStart_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5217 {
5218         guint32 length;
5219         guint32 newoffset;
5220
5221         offset=dissect_per_length_determinant(tvb, offset, pinfo, tree, hf_h225_fastStart_item_length, &length);
5222         newoffset=offset + (length<<3); /* please note that offset is in bits in
5223                                            PER dissectors, but the item length
5224                                            is in octets */
5225         offset=dissect_h245_OpenLogicalChannel(tvb, offset, pinfo, tree);
5226
5227         contains_faststart = TRUE;
5228
5229         return newoffset;
5230 }
5231
5232 static int
5233 dissect_h225_fastStart(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5234 {
5235         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_fastStart, ett_h225_fastStart, dissect_h225_fastStart_item);
5236         return offset;
5237 }
5238
5239 static int
5240 dissect_h225_fastConnectRefused(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5241 {
5242         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_fastConnectRefused, NULL, NULL);
5243         return offset;
5244 }
5245
5246 static per_sequence_t InformationUUIE_sequence[] = {
5247         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5248                 dissect_h225_ProtocolIdentifier },
5249         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5250                 dissect_h225_CallIdentifier },
5251         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5252                 dissect_h225_tokens },
5253         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5254                 dissect_h225_CryptoH323Token_sequence_of },
5255         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5256                 dissect_h225_fastStart },
5257         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5258                 dissect_h225_fastConnectRefused },
5259         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5260                 dissect_h225_CircuitInfo },
5261         { NULL, 0, 0, NULL }
5262 };
5263 static int
5264 dissect_h225_InformationUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5265 {
5266         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_InformationUUIE, ett_h225_InformationUUIE, InformationUUIE_sequence);
5267         return offset;
5268 }
5269
5270 static int
5271 dissect_h225_routeCallToSCN(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5272 {
5273         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_routeCallToSCN, ett_h225_routeCallToSCN, dissect_h225_PartyNumber);
5274         return offset;
5275 }
5276
5277 const value_string AdmissionRejectReason_vals[] = {
5278         { 0, "calledPartyNotRegistered" },
5279         { 1, "invalidPermission" },
5280         { 2, "requestDenied" },
5281         { 3, "undefinedReason" },
5282         { 4, "callerNotRegistered" },
5283         { 5, "routeCallToGatekeeper" },
5284         { 6, "invalidEndpointIdentifier" },
5285         { 7, "resourceUnavailable" },
5286         { 8, "securityDenial" },
5287         { 9, "qosControlNotSupported" },
5288         { 10, "incompleteAddress" },
5289         { 11, "aliasesInconsistent" },
5290         { 12, "routeCallToSCN" },
5291         { 13, "exceedsCallCapacity" },
5292         { 14, "collectDestination" },
5293         { 15, "collectPIN" },
5294         { 16, "genericDataReason" },
5295         { 17, "neededFeatureNotSupported" },
5296         { 18, "securityErrors" },
5297         { 19, "securityDHmismatch" },
5298         { 20, "noRouteToDestination" },
5299         { 21, "unallocatedNumber" },
5300         { 0, NULL}
5301 };
5302 static per_choice_t AdmissionRejectReason_choice[] = {
5303         { 0, "calledPartyNotRegistered", ASN1_EXTENSION_ROOT,
5304                 dissect_h225_NULL },
5305         { 1, "invalidPermission", ASN1_EXTENSION_ROOT,
5306                 dissect_h225_NULL },
5307         { 2, "requestDenied", ASN1_EXTENSION_ROOT,
5308                 dissect_h225_NULL },
5309         { 3, "undefinedReason", ASN1_EXTENSION_ROOT,
5310                 dissect_h225_NULL },
5311         { 4, "callerNotRegistered", ASN1_EXTENSION_ROOT,
5312                 dissect_h225_NULL },
5313         { 5, "routeCallToGatekeeper", ASN1_EXTENSION_ROOT,
5314                 dissect_h225_NULL },
5315         { 6, "invalidEndpointIdentifier", ASN1_EXTENSION_ROOT,
5316                 dissect_h225_NULL },
5317         { 7, "resourceUnavailable", ASN1_EXTENSION_ROOT,
5318                 dissect_h225_NULL },
5319         { 8, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
5320                 dissect_h225_NULL },
5321         { 9, "qosControlNotSupported", ASN1_NOT_EXTENSION_ROOT,
5322                 dissect_h225_NULL },
5323         { 10, "incompleteAddress", ASN1_NOT_EXTENSION_ROOT,
5324                 dissect_h225_NULL },
5325         { 11, "aliasesInconsistent", ASN1_NOT_EXTENSION_ROOT,
5326                 dissect_h225_NULL },
5327         { 12, "routeCallToSCN", ASN1_NOT_EXTENSION_ROOT,
5328                 dissect_h225_routeCallToSCN },
5329         { 13, "exceedsCallCapacity", ASN1_NOT_EXTENSION_ROOT,
5330                 dissect_h225_NULL },
5331         { 14, "collectDestination", ASN1_NOT_EXTENSION_ROOT,
5332                 dissect_h225_NULL },
5333         { 15, "collectPIN", ASN1_NOT_EXTENSION_ROOT,
5334                 dissect_h225_NULL },
5335         { 16, "genericDataReason", ASN1_NOT_EXTENSION_ROOT,
5336                 dissect_h225_NULL },
5337         { 17, "neededFeatureNotSupported", ASN1_NOT_EXTENSION_ROOT,
5338                 dissect_h225_NULL },
5339         { 18, "securityErrors", ASN1_NOT_EXTENSION_ROOT,
5340                 dissect_h225_SecurityErrors2 },
5341         { 19, "securityDHmismatch", ASN1_NOT_EXTENSION_ROOT,
5342                 dissect_h225_NULL },
5343         { 20, "noRouteToDestination", ASN1_NOT_EXTENSION_ROOT,
5344                 dissect_h225_NULL },
5345         { 21, "unallocatedNumber", ASN1_NOT_EXTENSION_ROOT,
5346                 dissect_h225_NULL },
5347         { 0, NULL, 0, NULL }
5348 };
5349 static int
5350 dissect_h225_AdmissionRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5351 {
5352         guint32 value;
5353         
5354         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_AdmissionRejectReason, ett_h225_AdmissionRejectReason, AdmissionRejectReason_choice, "AdmissionRejectReason", &value);
5355         h225_pi.reason = value;
5356         return offset;
5357 }
5358
5359 static int
5360 dissect_h225_isoAlgorithm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5361 {
5362         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_isoAlgorithm, NULL);
5363         return offset;
5364 }
5365
5366 static const value_string EncryptIntAlg_vals[] = {
5367         { 0, "nonStandard" },
5368         { 1, "isoAlgorithm" },
5369         { 0, NULL}
5370 };
5371 static per_choice_t EncryptIntAlg_choice[] = {
5372         { 0, "nonStandard", ASN1_EXTENSION_ROOT,
5373                 dissect_h225_nonStandard },
5374         { 1, "isoAlgorithm", ASN1_EXTENSION_ROOT,
5375                 dissect_h225_isoAlgorithm },
5376         { 0, NULL, 0, NULL }
5377 };
5378 static int
5379 dissect_h225_hMAC_iso10118_2_s(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5380 {
5381         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_2_s, ett_h225_EncryptIntAlg, EncryptIntAlg_choice, "hMAC_iso10118_2_s", NULL);
5382         return offset;
5383 }
5384 static int
5385 dissect_h225_hMAC_iso10118_2_l(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5386 {
5387         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_2_l, ett_h225_EncryptIntAlg, EncryptIntAlg_choice, "hMAC_iso10118_2_l", NULL);
5388         return offset;
5389 }
5390
5391 static int
5392 dissect_h225_hMAC_iso10118_3(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5393 {
5394         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_hMAC_iso10118_3, NULL);
5395         return offset;
5396 }
5397
5398
5399 static const value_string NonIsoIntegrityMechanism_vals[] = {
5400         { 0, "hMAC-MD5" },
5401         { 1, "hMAC_iso10118_2_s" },
5402         { 2, "hMAC_iso10118_2_l" },
5403         { 3, "hMAC_iso10118_3" },
5404         { 0, NULL}
5405 };
5406 static per_choice_t NonIsoIntegrityMechanism_choice[] = {
5407         { 0, "hMAC-MD5", ASN1_EXTENSION_ROOT,
5408                 dissect_h225_NULL },
5409         { 1, "hMAC_iso10118_2_s", ASN1_EXTENSION_ROOT,
5410                 dissect_h225_hMAC_iso10118_2_s },
5411         { 2, "hMAC_iso10118_2_l", ASN1_EXTENSION_ROOT,
5412                 dissect_h225_hMAC_iso10118_2_l },
5413         { 3, "hMAC_iso10118_3", ASN1_EXTENSION_ROOT,
5414                 dissect_h225_hMAC_iso10118_3 },
5415         { 0, NULL, 0, NULL }
5416 };
5417 static int
5418 dissect_h225_NonIsoIntegrityMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5419 {
5420         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_NonIsoIntegrityMechanism, ett_h225_NonIsoIntegrityMechanism, NonIsoIntegrityMechanism_choice, "NonIsoIntegrityMechanism", NULL);
5421         return offset;
5422 }
5423
5424 static int
5425 dissect_h225_iso9797(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5426 {
5427         offset=dissect_per_object_identifier(tvb, offset, pinfo, tree, hf_h225_iso9797, NULL);
5428         return offset;
5429 }
5430
5431 static const value_string IntegrityMechanism_vals[] = {
5432         { 0, "nonStandard" },
5433         { 1, "digSig" },
5434         { 2, "iso9797" },
5435         { 3, "nonIsoIM" },
5436         { 0, NULL}
5437 };
5438 static per_choice_t IntegrityMechanism_choice[] = {
5439         { 0, "nonStandard", ASN1_EXTENSION_ROOT,
5440                 dissect_h225_nonStandard },
5441         { 1, "digSig", ASN1_EXTENSION_ROOT,
5442                 dissect_h225_NULL },
5443         { 2, "iso9797", ASN1_EXTENSION_ROOT,
5444                 dissect_h225_iso9797 },
5445         { 3, "nonIsoIM", ASN1_EXTENSION_ROOT,
5446                 dissect_h225_NonIsoIntegrityMechanism },
5447         { 0, NULL, 0, NULL }
5448 };
5449 static int
5450 dissect_h225_IntegrityMechanism(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5451 {
5452         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_IntegrityMechanism, ett_h225_IntegrityMechanism, IntegrityMechanism_choice, "IntegrityMechanism", NULL);
5453         return offset;
5454 }
5455
5456 const value_string LocationRejectReason_vals[] = {
5457         { 0, "notRegistered" },
5458         { 1, "invalidPermission" },
5459         { 2, "requestDenied" },
5460         { 3, "undefinedReason" },
5461         { 4, "securityDenial" },
5462         { 5, "aliasesInconsistent" },
5463         { 6, "routeCalltoSCN" },
5464         { 7, "resourceUnavailable" },
5465         { 8, "genericDataReason" },
5466         { 9, "neededFeatureNotSupported" },
5467         {10, "hopCountExceeded" },
5468         {11, "incompleteAddress" },
5469         {12, "securityError" },
5470         {13, "securityDHmismatch" },
5471         {14, "noRouteToDestination" },
5472         {15, "unallocatedNumber" },
5473         { 0, NULL}
5474 };
5475 static per_choice_t LocationRejectReason_choice[] = {
5476         { 0, "notRegistered", ASN1_EXTENSION_ROOT,
5477                 dissect_h225_NULL },
5478         { 1, "invalidPermission", ASN1_EXTENSION_ROOT,
5479                 dissect_h225_NULL },
5480         { 2, "requestDenied", ASN1_EXTENSION_ROOT,
5481                 dissect_h225_NULL },
5482         { 3, "undefinedReason", ASN1_EXTENSION_ROOT,
5483                 dissect_h225_NULL },
5484         { 4, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
5485                 dissect_h225_NULL },
5486         { 5, "aliasesInconsistent", ASN1_NOT_EXTENSION_ROOT,
5487                 dissect_h225_NULL },
5488         { 6, "routeCalltoSCN", ASN1_NOT_EXTENSION_ROOT,
5489                 dissect_h225_routeCallToSCN },
5490         { 7, "resourceUnavailable", ASN1_NOT_EXTENSION_ROOT,
5491                 dissect_h225_NULL },
5492         { 8, "genericDataReason", ASN1_NOT_EXTENSION_ROOT,
5493                 dissect_h225_NULL },
5494         { 9, "neededFeatureNotSupported", ASN1_NOT_EXTENSION_ROOT,
5495                 dissect_h225_NULL },
5496         {10, "hopCountExceeded", ASN1_NOT_EXTENSION_ROOT,
5497                 dissect_h225_NULL },
5498         {11, "incompleteAddress", ASN1_NOT_EXTENSION_ROOT,
5499                 dissect_h225_NULL },
5500         {12, "securityError", ASN1_NOT_EXTENSION_ROOT,
5501                 dissect_h225_SecurityErrors2 },
5502         {13, "securityDHmismatch", ASN1_NOT_EXTENSION_ROOT,
5503                 dissect_h225_NULL },
5504         {14, "noRouteToDestination", ASN1_NOT_EXTENSION_ROOT,
5505                 dissect_h225_NULL },
5506         {15, "unallocatedNumber", ASN1_NOT_EXTENSION_ROOT,
5507                 dissect_h225_NULL },
5508         { 0, NULL, 0, NULL }
5509 };
5510 static int
5511 dissect_h225_LocationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5512 {
5513         guint32 value;
5514         
5515         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_LocationRejectReason, ett_h225_LocationRejectReason, LocationRejectReason_choice, "LocationRejectReason", &value);
5516         h225_pi.reason = value;
5517         return offset;
5518 }
5519
5520
5521 static int
5522 dissect_h225_EndpointType_set(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5523 {
5524 PER_NOT_DECODED_YET("EndpointType_set");
5525         return offset;
5526 }
5527
5528 static int
5529 dissect_h225_mc(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5530 {
5531         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_mc, NULL, NULL);
5532         return offset;
5533 }
5534
5535 static int
5536 dissect_h225_undefinedNode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5537 {
5538         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_undefinedNode, NULL, NULL);
5539         return offset;
5540 }
5541
5542
5543 static per_sequence_t EndPointType_sequence[] = {
5544         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5545                 dissect_h225_nonStandardData },
5546         { "vendor", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5547                 dissect_h225_VendorIdentifier },
5548         { "gatekeeper", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5549                 dissect_h225_GatekeeperInfo },
5550         { "gateway", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5551                 dissect_h225_gateway },
5552         { "mcu", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5553                 dissect_h225_mcu },
5554         { "terminal", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5555                 dissect_h225_TerminalInfo },
5556         { "mc", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5557                 dissect_h225_mc },
5558         { "undefinedNode", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5559                 dissect_h225_undefinedNode },
5560         { "set", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5561                 dissect_h225_EndpointType_set },
5562         { "supportedTunnelledProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5563                 dissect_h225_TunnelledProtocols },
5564         { NULL, 0, 0, NULL }
5565 };
5566 static int
5567 dissect_h225_EndPointType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5568 {
5569         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_EndPointType, ett_h225_EndPointType, EndPointType_sequence);
5570         return offset;
5571 }
5572 static int
5573 dissect_h225_destinationType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5574 {
5575         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_destinationType, ett_h225_EndPointType, EndPointType_sequence);
5576         return offset;
5577 }
5578 static int
5579 dissect_h225_terminalType(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5580 {
5581         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_terminalType, ett_h225_EndPointType, EndPointType_sequence);
5582         return offset;
5583 }
5584 static int
5585 dissect_h225_sourceInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5586 {
5587         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_sourceInfo, ett_h225_EndPointType, EndPointType_sequence);
5588         return offset;
5589 }
5590 static int
5591 dissect_h225_destinationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5592 {
5593         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_destinationInfo, ett_h225_EndPointType, EndPointType_sequence);
5594         return offset;
5595 }
5596
5597 static int
5598 dissect_h225_multipleCalls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5599 {
5600         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_multipleCalls, NULL, NULL);
5601         return offset;
5602 }
5603
5604 static int
5605 dissect_h225_maintainConnection(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5606 {
5607         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_maintainConnection, NULL, NULL);
5608         return offset;
5609 }
5610 static per_sequence_t CallProceedingUUIE_sequence[] = {
5611         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5612                 dissect_h225_ProtocolIdentifier },
5613         { "destinationInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5614                 dissect_h225_destinationInfo },
5615         { "h245Address", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5616                 dissect_h225_h245Address },
5617         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5618                 dissect_h225_CallIdentifier },
5619         { "h245SecurityMode", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5620                 dissect_h225_H245Security },
5621         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5622                 dissect_h225_tokens },
5623         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5624                 dissect_h225_CryptoH323Token_sequence_of },
5625         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5626                 dissect_h225_fastStart },
5627         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5628                 dissect_h225_multipleCalls },
5629         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5630                 dissect_h225_maintainConnection },
5631         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5632                 dissect_h225_NULL },
5633         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5634                 dissect_h225_FeatureSet },
5635         { NULL, 0, 0, NULL }
5636 };
5637 static int
5638 dissect_h225_CallProceedingUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5639 {
5640         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallProceedingUUIE, ett_h225_CallProceedingUUIE, CallProceedingUUIE_sequence);
5641         return offset;
5642 }
5643
5644 static per_sequence_t CapacityReportingSpecification_when_sequence[] = {
5645         { "callStart", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5646                 dissect_h225_NULL },
5647         { "callEnd", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5648                 dissect_h225_NULL },
5649         { NULL, 0, 0, NULL }
5650 };
5651 static int
5652 dissect_h225_CapacityReportingSpecification_when(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5653 {
5654         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CapacityReportingSpecification_when, ett_h225_CapacityReportingSpecification_when, CapacityReportingSpecification_when_sequence);
5655         return offset;
5656 }
5657
5658 static per_sequence_t CapacityReportingSpecification_sequence[] = {
5659         { "when", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5660                 dissect_h225_CapacityReportingSpecification_when },
5661         { NULL, 0, 0, NULL }
5662 };
5663 static int
5664 dissect_h225_CapacityReportingSpecification(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5665 {
5666         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CapacityReportingSpecification, ett_h225_CapacityReportingSpecification, CapacityReportingSpecification_sequence);
5667         return offset;
5668 }
5669 static per_sequence_t ProgressUUIE_sequence[] = {
5670         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5671                 dissect_h225_ProtocolIdentifier },
5672         { "destinationInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5673                 dissect_h225_destinationInfo },
5674         { "h245Address", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5675                 dissect_h225_h245Address },
5676         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5677                 dissect_h225_CallIdentifier },
5678         { "h245SecurityMode", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5679                 dissect_h225_H245Security },
5680         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5681                 dissect_h225_tokens },
5682         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5683                 dissect_h225_CryptoH323Token_sequence_of },
5684         { "fastStart", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5685                 dissect_h225_fastStart },
5686         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5687                 dissect_h225_multipleCalls },
5688         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5689                 dissect_h225_maintainConnection },
5690         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5691                 dissect_h225_NULL },
5692         { NULL, 0, 0, NULL }
5693 };
5694 static int
5695 dissect_h225_ProgressUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5696 {
5697         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ProgressUUIE, ett_h225_ProgressUUIE, ProgressUUIE_sequence);
5698         return offset;
5699 }
5700
5701
5702 static int
5703 dissect_h225_destExtraCallInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5704 {
5705         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_destExtraCallInfo, ett_h225_destExtraCallInfo, dissect_h225_AliasAddress);
5706         return offset;
5707 }
5708
5709 static int
5710 dissect_h225_remoteExtensionAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5711 {
5712         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_remoteExtensionAddress, ett_h225_remoteExtensionAddress, dissect_h225_AliasAddress);
5713         return offset;
5714 }
5715
5716
5717 static int
5718 dissect_h225_aliasAddress_sequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5719 {
5720         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_aliasAddress_sequence, ett_h225_aliasAddress_sequence, dissect_h225_AliasAddress);
5721         return offset;
5722 }
5723
5724 static int
5725 dissect_h225_rasAddress_sequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5726 {
5727         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_rasAddress_sequence, ett_h225_rasAddress_sequence, dissect_h225_TransportAddress);
5728         return offset;
5729 }
5730
5731 static int
5732 dissect_h225_callSignalAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5733 {
5734         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_callSignalAddress, ett_h225_callSignalAddress, dissect_h225_TransportAddress);
5735         return offset;
5736 }
5737
5738
5739 static per_sequence_t EndPoint_sequence[] = {
5740         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5741                 dissect_h225_nonStandardData },
5742         { "aliasAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5743                 dissect_h225_aliasAddress_sequence },
5744         { "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5745                 dissect_h225_callSignalAddress },
5746         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5747                 dissect_h225_rasAddress_sequence },
5748         { "endpointType", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5749                 dissect_h225_EndPointType },
5750         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5751                 dissect_h225_tokens },
5752         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5753                 dissect_h225_CryptoH323Token_sequence_of },
5754         { "priority", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5755                 dissect_h225_priority },
5756         { "remoteExtensionAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5757                 dissect_h225_remoteExtensionAddress },
5758         { "destExtraCallInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5759                 dissect_h225_destExtraCallInfo },
5760         { "alternateTransportAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5761                 dissect_h225_AlternateTransportAddress },
5762         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5763                 dissect_h225_CircuitInfo },
5764         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5765                 dissect_h225_FeatureSet },
5766         { NULL, 0, 0, NULL }
5767 };
5768 static int
5769 dissect_h225_EndPoint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5770 {
5771         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_EndPoint, ett_h225_EndPoint, EndPoint_sequence);
5772         return offset;
5773 }
5774
5775
5776 static int
5777 dissect_h225_icv(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5778 {
5779 PER_NOT_DECODED_YET("icv");
5780         return offset;
5781 }
5782
5783 static per_sequence_t ICV_sequence[] = {
5784         { "algorithmOID", ASN1_NO_EXTENSIONS, ASN1_OPTIONAL,
5785                 dissect_h225_algorithmOID },
5786         { "icv", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
5787                 dissect_h225_icv },
5788         { NULL, 0, 0, NULL }
5789 };
5790 static int
5791 dissect_h225_ICV(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5792 {
5793         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ICV, ett_h225_ICV, ICV_sequence);
5794         return offset;
5795 }
5796
5797 static per_sequence_t BandwidthConfirm_sequence[] = {
5798         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5799                 dissect_h225_RequestSeqNum },
5800         { "bandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5801                 dissect_h225_BandWidth },
5802         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5803                 dissect_h225_nonStandardData },
5804         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5805                 dissect_h225_tokens },
5806         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5807                 dissect_h225_CryptoH323Token_sequence_of },
5808         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5809                 dissect_h225_ICV },
5810         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5811                 dissect_h225_CallCapacity },
5812         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5813                 dissect_h225_genericData },
5814         { NULL, 0, 0, NULL }
5815 };
5816 static int
5817 dissect_h225_BandwidthConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5818 {
5819         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_BandwidthConfirm, ett_h225_BandwidthConfirm, BandwidthConfirm_sequence);
5820         return offset;
5821 }
5822
5823
5824 static per_sequence_t UnregistrationConfirm_sequence[] = {
5825         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5826                 dissect_h225_RequestSeqNum },
5827         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5828                 dissect_h225_nonStandardData },
5829         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5830                 dissect_h225_tokens },
5831         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5832                 dissect_h225_CryptoH323Token_sequence_of },
5833         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5834                 dissect_h225_ICV },
5835         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5836                 dissect_h225_genericData },
5837         { NULL, 0, 0, NULL }
5838 };
5839 static int
5840 dissect_h225_UnregistrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5841 {
5842         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_UnregistrationConfirm, ett_h225_UnregistrationConfirm, UnregistrationConfirm_sequence);
5843         return offset;
5844 }
5845 static per_sequence_t NonStandardMessage_sequence[] = {
5846         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5847                 dissect_h225_RequestSeqNum },
5848         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5849                 dissect_h225_nonStandardData },
5850         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5851                 dissect_h225_tokens },
5852         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5853                 dissect_h225_CryptoH323Token_sequence_of },
5854         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5855                 dissect_h225_ICV },
5856         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5857                 dissect_h225_FeatureSet },
5858         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5859                 dissect_h225_genericData },
5860         { NULL, 0, 0, NULL }
5861 };
5862 static int
5863 dissect_h225_NonStandardMessage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5864 {
5865         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_NonStandardMessage, ett_h225_NonStandardMessage, NonStandardMessage_sequence);
5866         return offset;
5867 }
5868
5869
5870 static per_sequence_t InfoRequestAck_sequence[] = {
5871         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5872                 dissect_h225_RequestSeqNum },
5873         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5874                 dissect_h225_nonStandardData },
5875         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5876                 dissect_h225_tokens },
5877         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5878                 dissect_h225_CryptoH323Token_sequence_of },
5879         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5880                 dissect_h225_ICV },
5881         { NULL, 0, 0, NULL }
5882 };
5883 static int
5884 dissect_h225_InfoRequestAck(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5885 {
5886         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_InfoRequestAck, ett_h225_InfoRequestAck, InfoRequestAck_sequence);
5887         return offset;
5888 }
5889 static per_sequence_t InfoRequestNak_sequence[] = {
5890         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5891                 dissect_h225_RequestSeqNum },
5892         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5893                 dissect_h225_nonStandardData },
5894         { "nakReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5895                 dissect_h225_InfoRequestNakReason },
5896         { "altGKInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5897                 dissect_h225_AltGKInfo },
5898         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5899                 dissect_h225_tokens },
5900         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5901                 dissect_h225_CryptoH323Token_sequence_of },
5902         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5903                 dissect_h225_ICV },
5904         { NULL, 0, 0, NULL }
5905 };
5906 static int
5907 dissect_h225_InfoRequestNak(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5908 {
5909         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_InfoRequestNak, ett_h225_InfoRequestNak, InfoRequestNak_sequence);
5910         return offset;
5911 }
5912
5913 static per_sequence_t ResourcesAvailableConfirm_sequence[] = {
5914         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5915                 dissect_h225_RequestSeqNum },
5916         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5917                 dissect_h225_ProtocolIdentifier },
5918         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5919                 dissect_h225_nonStandardData },
5920         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5921                 dissect_h225_tokens },
5922         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5923                 dissect_h225_CryptoH323Token_sequence_of },
5924         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5925                 dissect_h225_ICV },
5926         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5927                 dissect_h225_genericData },
5928         { NULL, 0, 0, NULL }
5929 };
5930 static int
5931 dissect_h225_ResourcesAvailableConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5932 {
5933         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ResourcesAvailableConfirm, ett_h225_ResourcesAvailableConfirm, ResourcesAvailableConfirm_sequence);
5934         return offset;
5935 }
5936
5937
5938
5939 static int
5940 dissect_h225_integrity(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5941 {
5942         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_integrity, ett_h225_integrity, dissect_h225_IntegrityMechanism);
5943         return offset;
5944 }
5945
5946
5947 static int
5948 dissect_h225_algorithmOIDs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5949 {
5950         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_algorithmOIDs, ett_h225_algorithmOIDs, dissect_h225_algorithmOID);
5951         return offset;
5952 }
5953
5954
5955 static int
5956 dissect_h225_alternateEndpoints(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5957 {
5958         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_alternateEndpoints, ett_h225_alternateEndpoints, dissect_h225_EndPoint);
5959         return offset;
5960 }
5961
5962
5963
5964 static int
5965 dissect_h225_endpointAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
5966 {
5967         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_endpointAlias, ett_h225_endpointAlias, dissect_h225_AliasAddress);
5968         return offset;
5969 }
5970
5971
5972 static per_sequence_t GatekeeperRequest_sequence[] = {
5973         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5974                 dissect_h225_RequestSeqNum },
5975         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5976                 dissect_h225_ProtocolIdentifier },
5977         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5978                 dissect_h225_nonStandardData },
5979         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5980                 dissect_h225_rasAddress },
5981         { "endpointType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
5982                 dissect_h225_EndPointType },
5983         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5984                 dissect_h225_GatekeeperIdentifier },
5985         { "callServices", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5986                 dissect_h225_callServices },
5987         { "endpointAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
5988                 dissect_h225_endpointAlias },
5989         { "alternateEndpoints", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5990                 dissect_h225_alternateEndpoints },
5991         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5992                 dissect_h225_tokens },
5993         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5994                 dissect_h225_CryptoH323Token_sequence_of },
5995         { "authenticationCapability", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5996                 dissect_h225_authenticationCapability },
5997         { "algorithmOIDs", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
5998                 dissect_h225_algorithmOIDs },
5999         { "integrity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6000                 dissect_h225_integrity },
6001         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6002                 dissect_h225_ICV },
6003         { "supportsAltGK", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6004                 dissect_h225_NULL },
6005         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6006                 dissect_h225_FeatureSet },
6007         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6008                 dissect_h225_genericData },
6009         { NULL, 0, 0, NULL }
6010 };
6011 static int
6012 dissect_h225_GatekeeperRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6013 {
6014         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperRequest, ett_h225_GatekeeperRequest, GatekeeperRequest_sequence);
6015         return offset;
6016 }
6017
6018 static per_sequence_t ServiceControlResponse_sequence[] = {
6019         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6020                 dissect_h225_RequestSeqNum },
6021         { "result", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6022                 dissect_h225_SCRresult },
6023         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6024                 dissect_h225_nonStandardData },
6025         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6026                 dissect_h225_tokens },
6027         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6028                 dissect_h225_CryptoH323Token_sequence_of },
6029         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6030                 dissect_h225_ICV },
6031         { "featureSet", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6032                 dissect_h225_FeatureSet },
6033         { "genericData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6034                 dissect_h225_genericData },
6035         { NULL, 0, 0, NULL }
6036 };
6037 static int
6038 dissect_h225_ServiceControlResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6039 {
6040         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ServiceControlResponse, ett_h225_ServiceControlResponse, ServiceControlResponse_sequence);
6041         return offset;
6042 }
6043
6044
6045
6046 static per_sequence_t DisengageReject_sequence[] = {
6047         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6048                 dissect_h225_RequestSeqNum },
6049         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6050                 dissect_h225_DisengageRejectReason },
6051         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6052                 dissect_h225_nonStandardData },
6053         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6054                 dissect_h225_AltGKInfo },
6055         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6056                 dissect_h225_tokens },
6057         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6058                 dissect_h225_CryptoH323Token_sequence_of },
6059         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6060                 dissect_h225_ICV },
6061         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6062                 dissect_h225_genericData },
6063         { NULL, 0, 0, NULL }
6064 };
6065 static int
6066 dissect_h225_DisengageReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6067 {
6068         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_DisengageReject, ett_h225_DisengageReject, DisengageReject_sequence);
6069         return offset;
6070 }
6071
6072
6073
6074 static per_sequence_t BandwidthReject_sequence[] = {
6075         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6076                 dissect_h225_RequestSeqNum },
6077         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6078                 dissect_h225_BandRejectReason },
6079         { "allowedBandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6080                 dissect_h225_allowedBandWidth },
6081         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6082                 dissect_h225_nonStandardData },
6083         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6084                 dissect_h225_AltGKInfo },
6085         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6086                 dissect_h225_tokens },
6087         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6088                 dissect_h225_CryptoH323Token_sequence_of },
6089         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6090                 dissect_h225_ICV },
6091         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6092                 dissect_h225_genericData },
6093         { NULL, 0, 0, NULL }
6094 };
6095 static int
6096 dissect_h225_BandwidthReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6097 {
6098         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_BandwidthReject, ett_h225_BandwidthReject, BandwidthReject_sequence);
6099         return offset;
6100 }
6101
6102
6103
6104 static per_sequence_t UnregistrationReject_sequence[] = {
6105         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6106                 dissect_h225_RequestSeqNum },
6107         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6108                 dissect_h225_UnregRejectReason },
6109         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6110                 dissect_h225_nonStandardData },
6111         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6112                 dissect_h225_AltGKInfo },
6113         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6114                 dissect_h225_tokens },
6115         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6116                 dissect_h225_CryptoH323Token_sequence_of },
6117         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6118                 dissect_h225_ICV },
6119         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6120                 dissect_h225_genericData },
6121         { NULL, 0, 0, NULL }
6122 };
6123 static int
6124 dissect_h225_UnregistrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6125 {
6126         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_UnregistrationReject, ett_h225_UnregistrationReject, UnregistrationReject_sequence);
6127         return offset;
6128 }
6129
6130
6131 static int
6132 dissect_h225_endpointAliasPattern(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6133 {
6134         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_endpointAliasPattern, ett_h225_endpointAliasPattern, dissect_h225_AddressPattern);
6135         return offset;
6136 }
6137
6138 static int
6139 dissect_h225_EndpointIdentifier(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6140 {
6141         offset=dissect_per_BMPString(tvb, offset, pinfo, tree, hf_h225_EndpointIdentifier, 1, 128);
6142         return offset;
6143 }
6144
6145 static per_sequence_t UnregistrationRequest_sequence[] = {
6146         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6147                 dissect_h225_RequestSeqNum },
6148         { "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6149                 dissect_h225_callSignalAddress },
6150         { "endpointAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6151                 dissect_h225_endpointAlias },
6152         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6153                 dissect_h225_nonStandardData },
6154         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6155                 dissect_h225_EndpointIdentifier },
6156         { "alternateEndpoints", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6157                 dissect_h225_alternateEndpoints },
6158         { "gatekeeperIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6159                 dissect_h225_GatekeeperIdentifier },
6160         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6161                 dissect_h225_tokens },
6162         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6163                 dissect_h225_CryptoH323Token_sequence_of },
6164         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6165                 dissect_h225_ICV },
6166         { "reason", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6167                 dissect_h225_UnregRequestReason },
6168         { "endpointAliasPattern", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6169                 dissect_h225_endpointAliasPattern },
6170         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6171                 dissect_h225_SupportedPrefixes },
6172         { "alternateGatekeeper", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6173                 dissect_h225_alternateGatekeeper },
6174         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6175                 dissect_h225_genericData },
6176         { NULL, 0, 0, NULL }
6177 };
6178 static int
6179 dissect_h225_UnregistrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6180 {
6181         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_UnregistrationRequest, ett_h225_UnregistrationRequest, UnregistrationRequest_sequence);
6182         return offset;
6183 }
6184
6185
6186 static int
6187 dissect_h225_terminalAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6188 {
6189         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_terminalAlias, ett_h225_terminalAlias, dissect_h225_AliasAddress);
6190         return offset;
6191 }
6192
6193
6194
6195 static int
6196 dissect_h225_terminalAliasPattern(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6197 {
6198         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_terminalAliasPattern, ett_h225_terminalAliasPattern, dissect_h225_AddressPattern);
6199         return offset;
6200 }
6201
6202
6203 static per_sequence_t invalidTerminalAliases_sequence[] = {
6204         { "terminalAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6205                 dissect_h225_terminalAlias },
6206         { "terminalAliasPattern", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6207                 dissect_h225_terminalAliasPattern },
6208         { "supportedPrefixes", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6209                 dissect_h225_SupportedPrefixes },
6210         { NULL, 0, 0, NULL }
6211 };
6212 static int
6213 dissect_h225_invalidTerminalAliases(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6214 {
6215         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_invalidTerminalAliases, ett_h225_invalidTerminalAliases, invalidTerminalAliases_sequence);
6216         return offset;
6217 }
6218
6219
6220
6221
6222
6223
6224 static int
6225 dissect_h225_duplicateAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6226 {
6227         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_duplicateAlias, ett_h225_duplicateAlias, dissect_h225_AliasAddress);
6228         return offset;
6229 }
6230
6231
6232
6233
6234
6235 const value_string RegistrationRejectReason_vals[] = {
6236         { 0, "discoveryRequired" },
6237         { 1, "invalidRevision" },
6238         { 2, "invalidCallSignalAddress" },
6239         { 3, "invalidRASAddress" },
6240         { 4, "duplicateAlias" },
6241         { 5, "invalidTerminalType" },
6242         { 6, "undefinedReason" },
6243         { 7, "transportNotSupported" },
6244         { 8, "transportQOSNotSupported" },
6245         { 9, "resourceUnavailable" },
6246         { 10, "invalidAlias" },
6247         { 11, "securityDenial" },
6248         { 12, "fullRegistrationRequired" },
6249         { 13, "additiveRegistrationNotSupported" },
6250         { 14, "invalidTerminalAliases" },
6251         { 15, "genericDataReason" },
6252         { 16, "neededFeatureNotSupported" },
6253         { 17, "securityError" },
6254         { 0, NULL}
6255 };
6256 static per_choice_t RegistrationRejectReason_choice[] = {
6257         { 0, "discoveryRequired", ASN1_EXTENSION_ROOT,
6258                 dissect_h225_NULL },
6259         { 1, "invalidRevision", ASN1_EXTENSION_ROOT,
6260                 dissect_h225_NULL },
6261         { 2, "invalidCallSignalAddress", ASN1_EXTENSION_ROOT,
6262                 dissect_h225_NULL },
6263         { 3, "invalidRASAddress", ASN1_EXTENSION_ROOT,
6264                 dissect_h225_NULL },
6265         { 4, "duplicateAlias", ASN1_EXTENSION_ROOT,
6266                 dissect_h225_duplicateAlias },
6267         { 5, "invalidTerminalType", ASN1_EXTENSION_ROOT,
6268                 dissect_h225_NULL },
6269         { 6, "undefinedReason", ASN1_EXTENSION_ROOT,
6270                 dissect_h225_NULL },
6271         { 7, "transportNotSupported", ASN1_EXTENSION_ROOT,
6272                 dissect_h225_NULL },
6273         { 8, "transportQOSNotSupported", ASN1_NOT_EXTENSION_ROOT,
6274                 dissect_h225_NULL },
6275         { 9, "resourceUnavailable", ASN1_NOT_EXTENSION_ROOT,
6276                 dissect_h225_NULL },
6277         { 10, "invalidAlias", ASN1_NOT_EXTENSION_ROOT,
6278                 dissect_h225_NULL },
6279         { 11, "securityDenial", ASN1_NOT_EXTENSION_ROOT,
6280                 dissect_h225_NULL },
6281         { 12, "fullRegistrationRequired", ASN1_NOT_EXTENSION_ROOT,
6282                 dissect_h225_NULL },
6283         { 13, "additiveRegistrationNotSupported", ASN1_NOT_EXTENSION_ROOT,
6284                 dissect_h225_NULL },
6285         { 14, "invalidTerminalAliases", ASN1_NOT_EXTENSION_ROOT,
6286                 dissect_h225_invalidTerminalAliases },
6287         { 15, "genericDataReason", ASN1_NOT_EXTENSION_ROOT,
6288                 dissect_h225_NULL },
6289         { 16, "neededFeatureNotSupported", ASN1_NOT_EXTENSION_ROOT,
6290                 dissect_h225_NULL },
6291         { 17, "securityError", ASN1_NOT_EXTENSION_ROOT,
6292                 dissect_h225_SecurityErrors },
6293         { 0, NULL, 0, NULL }
6294 };
6295 static int
6296 dissect_h225_RegistrationRejectReason(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6297 {
6298         guint32 value;
6299         
6300         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_RegistrationRejectReason, ett_h225_RegistrationRejectReason, RegistrationRejectReason_choice, "RegistrationRejectReason", &value);
6301         h225_pi.reason = value;
6302         return offset;
6303 }
6304
6305
6306
6307
6308
6309
6310 static per_sequence_t RegistrationReject_sequence[] = {
6311         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6312                 dissect_h225_RequestSeqNum },
6313         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6314                 dissect_h225_ProtocolIdentifier },
6315         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6316                 dissect_h225_nonStandardData },
6317         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6318                 dissect_h225_RegistrationRejectReason },
6319         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6320                 dissect_h225_GatekeeperIdentifier },
6321         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6322                 dissect_h225_AltGKInfo },
6323         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6324                 dissect_h225_tokens },
6325         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6326                 dissect_h225_CryptoH323Token_sequence_of },
6327         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6328                 dissect_h225_ICV },
6329         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6330                 dissect_h225_FeatureSet },
6331         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6332                 dissect_h225_genericData },
6333         { NULL, 0, 0, NULL }
6334 };
6335 static int
6336 dissect_h225_RegistrationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6337 {
6338         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RegistrationReject, ett_h225_RegistrationReject, RegistrationReject_sequence);
6339         return offset;
6340 }
6341
6342
6343 static per_sequence_t GatekeeperReject_sequence[] = {
6344         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6345                 dissect_h225_RequestSeqNum },
6346         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6347                 dissect_h225_ProtocolIdentifier },
6348         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6349                 dissect_h225_nonStandardData },
6350         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6351                 dissect_h225_GatekeeperIdentifier },
6352         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6353                 dissect_h225_GatekeeperRejectReason },
6354         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6355                 dissect_h225_AltGKInfo },
6356         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6357                 dissect_h225_tokens },
6358         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6359                 dissect_h225_CryptoH323Token_sequence_of },
6360         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6361                 dissect_h225_ICV },
6362         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6363                 dissect_h225_FeatureSet },
6364         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6365                 dissect_h225_genericData },
6366         { NULL, 0, 0, NULL }
6367 };
6368 static int
6369 dissect_h225_GatekeeperReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6370 {
6371         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperReject, ett_h225_GatekeeperReject, GatekeeperReject_sequence);
6372         return offset;
6373 }
6374
6375
6376
6377 static int
6378 dissect_h225_almostOutOfResources(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6379 {
6380         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_almostOutOfResources, NULL, NULL);
6381         return offset;
6382 }
6383
6384
6385 static int
6386 dissect_h225_protocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6387 {
6388         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_protocols, ett_h225_protocols, dissect_h225_SupportedProtocols);
6389         return offset;
6390 }
6391
6392 static per_sequence_t ResourcesAvailableIndicate_sequence[] = {
6393         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6394                 dissect_h225_RequestSeqNum },
6395         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6396                 dissect_h225_ProtocolIdentifier },
6397         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6398                 dissect_h225_nonStandardData },
6399         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6400                 dissect_h225_EndpointIdentifier },
6401         { "protocols", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6402                 dissect_h225_protocols },
6403         { "almostOutOfResources", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6404                 dissect_h225_almostOutOfResources },
6405         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6406                 dissect_h225_tokens },
6407         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6408                 dissect_h225_CryptoH323Token_sequence_of },
6409         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6410                 dissect_h225_ICV },
6411         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6412                 dissect_h225_CallCapacity },
6413         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6414                 dissect_h225_genericData },
6415         { NULL, 0, 0, NULL }
6416 };
6417 static int
6418 dissect_h225_ResourcesAvailableIndicate(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6419 {
6420         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ResourcesAvailableIndicate, ett_h225_ResourcesAvailableIndicate, ResourcesAvailableIndicate_sequence);
6421         return offset;
6422 }
6423
6424
6425 static int
6426 dissect_h225_amountString(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6427 {
6428 PER_NOT_DECODED_YET("amountString");
6429         return offset;
6430 }
6431
6432
6433
6434 static int
6435 dissect_h225_callDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6436 {
6437         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6438                 tree, hf_h225_callDurationLimit, 1, 4294967295UL,
6439                 NULL, NULL, FALSE);
6440         return offset;
6441 }
6442
6443
6444 static int
6445 dissect_h225_enforceCallDurationLimit(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6446 {
6447         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_enforceCallDurationLimit, NULL, NULL);
6448         return offset;
6449 }
6450
6451
6452 static per_sequence_t CallCreditServiceControl_sequence[] = {
6453         { "amountString", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6454                 dissect_h225_amountString },
6455         { "billingMode", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6456                 dissect_h225_billingMode },
6457         { "callDurationLimit", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6458                 dissect_h225_callDurationLimit },
6459         { "enforceCallDurationLimit", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6460                 dissect_h225_enforceCallDurationLimit },
6461         { "callStartingPoint", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6462                 dissect_h225_CCSCcallStartingPoint },
6463         { NULL, 0, 0, NULL }
6464 };
6465 static int
6466 dissect_h225_CallCreditServiceControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6467 {
6468         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_CallCreditServiceControl, ett_h225_CallCreditServiceControl, CallCreditServiceControl_sequence);
6469         return offset;
6470 }
6471
6472
6473
6474 static const value_string ScreeningIndicator_vals[] = {
6475         { 0, "userProvidedNotScreened" },
6476         { 1, "userProvidedVerifiedAndPassed" },
6477         { 2, "userProvidedVerifiedAndFailed" },
6478         { 3, "networkProvided" },
6479         { 0, NULL },
6480 };
6481
6482 static int
6483 dissect_h225_ScreeningIndicator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6484 {
6485         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6486                 tree, hf_h225_ScreeningIndicator, 0, 3,
6487                 NULL, NULL, TRUE);
6488         return offset;
6489 }
6490
6491 static per_sequence_t ExtendedAliasAddress_sequence[] = {
6492         { "address", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6493                 dissect_h225_AliasAddress },
6494         { "presentationIndicator", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6495                 dissect_h225_PresentationIndicator },
6496         { "screeningIndicator", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6497                 dissect_h225_ScreeningIndicator },
6498         { NULL, 0, 0, NULL }
6499 };
6500 static int
6501 dissect_h225_ExtendedAliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6502 {
6503         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ExtendedAliasAddress, ett_h225_ExtendedAliasAddress, ExtendedAliasAddress_sequence);
6504         return offset;
6505 }
6506
6507
6508
6509
6510 static int
6511 dissect_h225_messageNotUnderstood(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6512 {
6513         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_messageNotUnderstood, -1, -1, NULL, NULL);
6514         return offset;
6515 }
6516
6517 static per_sequence_t UnknownMessageResponse_sequence[] = {
6518         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6519                 dissect_h225_RequestSeqNum },
6520         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6521                 dissect_h225_tokens },
6522         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6523                 dissect_h225_CryptoH323Token_sequence_of },
6524         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6525                 dissect_h225_ICV },
6526         { "messageNotUnderstood", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6527                 dissect_h225_messageNotUnderstood },
6528         { NULL, 0, 0, NULL }
6529 };
6530 static int
6531 dissect_h225_UnknownMessageResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6532 {
6533         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_UnknownMessageResponse, ett_h225_UnknownMessageResponse, UnknownMessageResponse_sequence);
6534         return offset;
6535 }
6536
6537 static int
6538 dissect_h225_CallReferenceValue(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6539 {
6540         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6541                 tree, hf_h225_CallReferenceValue, 0, 65535,
6542                 NULL, NULL, FALSE);
6543         return offset;
6544 }
6545
6546
6547
6548
6549 static int
6550 dissect_h225_canMapSrcAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6551 {
6552         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canMapSrcAlias, NULL, NULL);
6553         return offset;
6554 }
6555
6556 static int
6557 dissect_h225_desiredProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6558 {
6559         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_desiredProtocols, ett_h225_desiredProtocols, dissect_h225_SupportedProtocols);
6560         return offset;
6561 }
6562
6563 static int
6564 dissect_h225_willSupplyUUIEs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6565 {
6566         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_willSupplyUUIEs, NULL, NULL);
6567         return offset;
6568 }
6569
6570
6571 static int
6572 dissect_h225_destAlternatives(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6573 {
6574         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_destAlternatives, ett_h225_destAlternatives, dissect_h225_EndPoint);
6575         return offset;
6576 }
6577
6578 static int
6579 dissect_h225_srcAlternatives(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6580 {
6581         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_srcAlternatives, ett_h225_srcAlternatives, dissect_h225_EndPoint);
6582         return offset;
6583 }
6584
6585 static int
6586 dissect_h225_canMapAlias(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6587 {
6588         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canMapAlias, NULL, NULL);
6589         return offset;
6590 }
6591
6592
6593 static int
6594 dissect_h225_answerCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6595 {
6596         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_answerCall, NULL, NULL);
6597         return offset;
6598 }
6599
6600
6601 static int
6602 dissect_h225_activeMC(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6603 {
6604         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_activeMC, NULL, NULL);
6605         return offset;
6606 }
6607
6608
6609 static int
6610 dissect_h225_srcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6611 {
6612         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_srcInfo, ett_h225_srcInfo, dissect_h225_AliasAddress);
6613         return offset;
6614 }
6615
6616 static int
6617 dissect_h225_DestinationInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6618 {
6619         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_DestinationInfo, ett_h225_DestinationInfo, dissect_h225_AliasAddress);
6620         return offset;
6621 }
6622
6623
6624
6625
6626
6627
6628 static per_sequence_t AdmissionRequest_sequence[] = {
6629         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6630                 dissect_h225_RequestSeqNum },
6631         { "callType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6632                 dissect_h225_CallType },
6633         { "callModel", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6634                 dissect_h225_CallModel },
6635         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6636                 dissect_h225_EndpointIdentifier },
6637         { "DestinationInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6638                 dissect_h225_DestinationInfo },
6639         { "destCallSignalAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6640                 dissect_h225_destCallSignalAddress },
6641         { "destExtraCallInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6642                 dissect_h225_destExtraCallInfo },
6643         { "srcInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6644                 dissect_h225_srcInfo },
6645         { "sourceCallSignalAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6646                 dissect_h225_sourceCallSignalAddress },
6647         { "bandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6648                 dissect_h225_BandWidth },
6649         { "callReferenceValue", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6650                 dissect_h225_CallReferenceValue },
6651         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6652                 dissect_h225_nonStandardData },
6653         { "callServices", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6654                 dissect_h225_callServices },
6655         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6656                 dissect_h225_conferenceID },
6657         { "activeMC", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6658                 dissect_h225_activeMC },
6659         { "answerCall", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6660                 dissect_h225_answerCall },
6661         { "canMapAlias", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6662                 dissect_h225_canMapAlias },
6663         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6664                 dissect_h225_CallIdentifier },
6665         { "srcAlternatives", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6666                 dissect_h225_srcAlternatives },
6667         { "destAlternatives", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6668                 dissect_h225_destAlternatives },
6669         { "gatekeeperIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6670                 dissect_h225_GatekeeperIdentifier },
6671         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6672                 dissect_h225_tokens },
6673         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6674                 dissect_h225_CryptoH323Token_sequence_of },
6675         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6676                 dissect_h225_ICV },
6677         { "transportQOS", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6678                 dissect_h225_TransportQOS },
6679         { "willSupplyUUIEs", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6680                 dissect_h225_willSupplyUUIEs },
6681         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6682                 dissect_h225_CallLinkage },
6683         { "gatewayDataRate", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6684                 dissect_h225_gatewayDataRate },
6685         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6686                 dissect_h225_CallCapacity },
6687         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6688                 dissect_h225_CircuitInfo },
6689         { "desiredProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6690                 dissect_h225_desiredProtocols },
6691         { "desiredTunnelledProtocol", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6692                 dissect_h225_desiredTunnelledProtocol },
6693         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6694                 dissect_h225_FeatureSet },
6695         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6696                 dissect_h225_genericData },
6697         { "canMapSrcAlias", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6698                 dissect_h225_canMapSrcAlias },
6699         { NULL, 0, 0, NULL }
6700 };
6701 static int
6702 dissect_h225_AdmissionRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6703 {
6704         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AdmissionRequest, ett_h225_AdmissionRequest, AdmissionRequest_sequence);
6705         return offset;
6706 }
6707
6708
6709
6710 static int
6711 dissect_h225_nextSegmentRequested(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6712 {
6713         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6714                 tree, hf_h225_nextSegmentRequested, 0, 65535,
6715                 NULL, NULL, FALSE);
6716         return offset;
6717 }
6718
6719 static per_sequence_t InfoRequest_sequence[] = {
6720         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6721                 dissect_h225_RequestSeqNum },
6722         { "callReferenceValue", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6723                 dissect_h225_CallReferenceValue },
6724         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6725                 dissect_h225_nonStandardData },
6726         { "replyAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6727                 dissect_h225_replyAddress },
6728         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6729                 dissect_h225_CallIdentifier },
6730         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6731                 dissect_h225_tokens },
6732         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6733                 dissect_h225_CryptoH323Token_sequence_of },
6734         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6735                 dissect_h225_ICV },
6736         { "uuiesRequested", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6737                 dissect_h225_UUIEsRequested },
6738         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6739                 dissect_h225_CallLinkage },
6740         { "usageInfoRequested", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6741                 dissect_h225_RasUsageInfoTypes },
6742         { "segmentedResponseSupported", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6743                 dissect_h225_NULL },
6744         { "nextSegmentRequested", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6745                 dissect_h225_nextSegmentRequested },
6746         { "capacityInfoRequested", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6747                 dissect_h225_NULL },
6748         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6749                 dissect_h225_genericData },
6750         { NULL, 0, 0, NULL }
6751 };
6752 static int
6753 dissect_h225_InfoRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6754 {
6755         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_InfoRequest, ett_h225_InfoRequest, InfoRequest_sequence);
6756         return offset;
6757 }
6758
6759
6760 static int
6761 dissect_h225_delay(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6762 {
6763         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6764                 tree, hf_h225_delay, 1, 65535,
6765                 NULL, NULL, FALSE);
6766         return offset;
6767 }
6768
6769 static per_sequence_t RequestInProgress_sequence[] = {
6770         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6771                 dissect_h225_RequestSeqNum },
6772         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6773                 dissect_h225_nonStandardData },
6774         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6775                 dissect_h225_tokens },
6776         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6777                 dissect_h225_CryptoH323Token_sequence_of },
6778         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6779                 dissect_h225_ICV },
6780         { "delay", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6781                 dissect_h225_delay },
6782         { NULL, 0, 0, NULL }
6783 };
6784 static int
6785 dissect_h225_RequestInProgress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6786 {
6787         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RequestInProgress, ett_h225_RequestInProgress, RequestInProgress_sequence);
6788         return offset;
6789 }
6790
6791 static int
6792 dissect_h225_H248SignalsDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6793 {
6794         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_H248SignalsDescriptor, -1, -1, NULL, NULL);
6795         return offset;
6796 }
6797
6798
6799 static int
6800 dissect_h225_url(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6801 {
6802         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_url, 0, 512);
6803         return offset;
6804 }
6805
6806
6807 static const value_string ServiceControlDescriptor_vals[] = {
6808         { 0, "url" },
6809         { 1, "signal" },
6810         { 2, "nonStandard" },
6811         { 3, "callCreditServiceControl" },
6812         { 0, NULL}
6813 };
6814 static per_choice_t ServiceControlDescriptor_choice[] = {
6815         { 0, "url", ASN1_EXTENSION_ROOT,
6816                 dissect_h225_url },
6817         { 1, "signal", ASN1_EXTENSION_ROOT,
6818                 dissect_h225_H248SignalsDescriptor },
6819         { 2, "nonStandard", ASN1_EXTENSION_ROOT,
6820                 dissect_h225_nonStandard },
6821         { 3, "callCreditServiceControl", ASN1_EXTENSION_ROOT,
6822                 dissect_h225_CallCreditServiceControl },
6823         { 0, NULL, 0, NULL }
6824 };
6825 static int
6826 dissect_h225_ServiceControlDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6827 {
6828         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_ServiceControlDescriptor, ett_h225_ServiceControlDescriptor, ServiceControlDescriptor_choice, "ServiceControlDescriptor", NULL);
6829         return offset;
6830 }
6831
6832
6833
6834 static int
6835 dissect_h225_sessionId(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6836 {
6837         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
6838                 tree, hf_h225_sessionId, 0, 255,
6839                 NULL, NULL, FALSE);
6840         return offset;
6841 }
6842
6843 static per_sequence_t ServiceControlSession_sequence[] = {
6844         { "sessionId", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6845                 dissect_h225_sessionId },
6846         { "contents", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6847                 dissect_h225_ServiceControlDescriptor },
6848         { "reason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6849                 dissect_h225_ServiceControlSession_reason },
6850         { NULL, 0, 0, NULL }
6851 };
6852 static int
6853 dissect_h225_ServiceControlSession(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6854 {
6855         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ServiceControlSession, ett_h225_ServiceControlSession, ServiceControlSession_sequence);
6856         return offset;
6857 }
6858
6859
6860
6861 static int
6862 dissect_h225_serviceControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6863 {
6864         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_serviceControl, ett_h225_serviceControl, dissect_h225_ServiceControlSession);
6865         return offset;
6866 }
6867
6868
6869 static int
6870 dissect_h225_alertingAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6871 {
6872         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_alertingAddress, ett_h225_alertingAddress, dissect_h225_AliasAddress);
6873         return offset;
6874 }
6875
6876
6877 static per_sequence_t AlertingUUIE_sequence[] = {
6878         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6879                 dissect_h225_ProtocolIdentifier },
6880         { "destinationInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6881                 dissect_h225_destinationInfo },
6882         { "h245Address", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6883                 dissect_h225_h245Address },
6884         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6885                 dissect_h225_CallIdentifier },
6886         { "h245SecurityMode", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6887                 dissect_h225_H245Security },
6888         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6889                 dissect_h225_tokens },
6890         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6891                 dissect_h225_CryptoH323Token_sequence_of  },
6892         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6893                 dissect_h225_fastStart },
6894         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6895                 dissect_h225_multipleCalls },
6896         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6897                 dissect_h225_maintainConnection },
6898         { "alertingAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6899                 dissect_h225_alertingAddress },
6900         { "presentationIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6901                 dissect_h225_PresentationIndicator },
6902         { "screeningIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6903                 dissect_h225_ScreeningIndicator },
6904         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6905                 dissect_h225_NULL },
6906         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6907                 dissect_h225_serviceControl },
6908         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6909                 dissect_h225_CallCapacity },
6910         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6911                 dissect_h225_FeatureSet },
6912         { NULL, 0, 0, NULL }
6913 };
6914 static int
6915 dissect_h225_AlertingUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6916 {
6917         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AlertingUUIE, ett_h225_AlertingUUIE, AlertingUUIE_sequence);
6918         return offset;
6919 }
6920
6921 static int
6922 dissect_h225_busyAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6923 {
6924         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_busyAddress, ett_h225_busyAddress, dissect_h225_AliasAddress);
6925         return offset;
6926 }
6927
6928
6929 static per_sequence_t ReleaseCompleteUUIE_sequence[] = {
6930         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6931                 dissect_h225_ProtocolIdentifier },
6932         { "reason", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6933                 dissect_h225_ReleaseCompleteReason },
6934         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6935                 dissect_h225_CallIdentifier },
6936         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6937                 dissect_h225_tokens },
6938         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6939                 dissect_h225_CryptoH323Token_sequence_of },
6940         { "busyAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6941                 dissect_h225_busyAddress },
6942         { "presentationIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6943                 dissect_h225_PresentationIndicator },
6944         { "screeningIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6945                 dissect_h225_ScreeningIndicator },
6946         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6947                 dissect_h225_CallCapacity },
6948         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6949                 dissect_h225_serviceControl },
6950         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6951                 dissect_h225_FeatureSet },
6952         { NULL, 0, 0, NULL }
6953 };
6954 static int
6955 dissect_h225_ReleaseCompleteUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6956 {
6957         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ReleaseCompleteUUIE, ett_h225_ReleaseCompleteUUIE, ReleaseCompleteUUIE_sequence);
6958         return offset;
6959 }
6960
6961 static int
6962 dissect_h225_alternativeAliasAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
6963 {
6964         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_alternativeAliasAddress, ett_h225_alternativeAliasAddress, dissect_h225_AliasAddress);
6965         return offset;
6966 }
6967
6968 static per_sequence_t FacilityUUIE_sequence[] = {
6969         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6970                 dissect_h225_ProtocolIdentifier },
6971         { "alternativeAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6972                 dissect_h225_alternativeAddress },
6973         { "alternativeAliasAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6974                 dissect_h225_alternativeAliasAddress },
6975         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
6976                 dissect_h225_conferenceID },
6977         { "reason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6978                 dissect_h225_FacilityReason },
6979         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6980                 dissect_h225_CallIdentifier },
6981         { "destExtraCallInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6982                 dissect_h225_destExtraCallInfo },
6983         { "remoteExtensionAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6984                 dissect_h225_RemoteExtensionAddress },
6985         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6986                 dissect_h225_tokens },
6987         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6988                 dissect_h225_CryptoH323Token_sequence_of },
6989         { "conferences", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6990                 dissect_h225_conferences },
6991         { "h245Address", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6992                 dissect_h225_h245Address },
6993         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
6994                 dissect_h225_fastStart },
6995         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6996                 dissect_h225_multipleCalls },
6997         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
6998                 dissect_h225_maintainConnection },
6999         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7000                 dissect_h225_NULL },
7001         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7002                 dissect_h225_serviceControl },
7003         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7004                 dissect_h225_CircuitInfo },
7005         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7006                 dissect_h225_FeatureSet },
7007         { "destinationInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7008                 dissect_h225_destinationInfo },
7009         { "h245SecurityMode", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7010                 dissect_h225_H245Security },
7011         { NULL, 0, 0, NULL }
7012 };
7013 static int
7014 dissect_h225_FacilityUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7015 {
7016         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_FacilityUUIE, ett_h225_FacilityUUIE, FacilityUUIE_sequence);
7017         return offset;
7018 }
7019
7020 static per_sequence_t AdmissionReject_sequence[] = {
7021         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7022                 dissect_h225_RequestSeqNum },
7023         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7024                 dissect_h225_AdmissionRejectReason },
7025         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7026                 dissect_h225_nonStandardData },
7027         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7028                 dissect_h225_AltGKInfo },
7029         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7030                 dissect_h225_tokens },
7031         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7032                 dissect_h225_CryptoH323Token_sequence_of },
7033         { "callSignalAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7034                 dissect_h225_callSignalAddress },
7035         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7036                 dissect_h225_ICV },
7037         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7038                 dissect_h225_serviceControl },
7039         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7040                 dissect_h225_FeatureSet },
7041         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7042                 dissect_h225_genericData },
7043         { NULL, 0, 0, NULL }
7044 };
7045 static int
7046 dissect_h225_AdmissionReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7047 {
7048         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AdmissionReject, ett_h225_AdmissionReject, AdmissionReject_sequence);
7049         return offset;
7050 }
7051
7052 static int
7053 dissect_h225_hopCount(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7054 {
7055         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
7056                 tree, hf_h225_hopCount, 1, 31,
7057                 NULL, NULL, FALSE);
7058         return offset;
7059 }
7060
7061
7062 static int
7063 dissect_h225_parallelH245Control_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7064 {
7065         tvbuff_t *h245_tvb;
7066         guint32 h245_offset=0;
7067         guint32 h245_len=0;
7068
7069         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, -1, -1, -1, &h245_offset, &h245_len);
7070
7071         if(h245_len){
7072                 gboolean save_info;
7073
7074                 /* dont update the INFO or PROTOCOL fields of the summary */
7075                 save_info=col_get_writable(pinfo->cinfo);
7076                 col_set_writable(pinfo->cinfo, FALSE);
7077                 h245_tvb = tvb_new_subset(tvb, h245_offset, h245_len, h245_len);
7078                 call_dissector(h245dg_handle, h245_tvb, pinfo, tree);
7079                 col_set_writable(pinfo->cinfo, save_info);
7080         }
7081
7082         return offset;
7083 }
7084
7085 static int
7086 dissect_h225_parallelH245Control(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7087 {
7088         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_parallelH245Control, ett_h225_parallelH245Control, dissect_h225_parallelH245Control_item);
7089         return offset;
7090 }
7091
7092 static int
7093 dissect_h225_language(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7094 {
7095         offset=dissect_per_IA5String(tvb, offset, pinfo, tree, hf_h225_language, 1, 32);
7096         return offset;
7097 }
7098
7099 static int
7100 dissect_h225_languages(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7101 {
7102         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_languages, ett_h225_languages, dissect_h225_language);
7103         return offset;
7104 }
7105
7106 static int
7107 dissect_h225_mediaWaitForConnect(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7108 {
7109         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_mediaWaitForConnect, NULL, NULL);
7110         return offset;
7111 }
7112
7113 static int
7114 dissect_h225_canOverlapSend(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7115 {
7116         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_canOverlapSend, NULL, NULL);
7117         return offset;
7118 }
7119
7120 static int
7121 dissect_h225_sourceAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7122 {
7123         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_sourceAddress, ett_h225_sourceAddress, dissect_h225_AliasAddress);
7124         return offset;
7125 }
7126
7127 static int
7128 dissect_h225_destinationAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7129 {
7130         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_destinationAddress, ett_h225_destinationAddress, dissect_h225_AliasAddress);
7131         return offset;
7132 }
7133
7134
7135 static int
7136 dissect_h225_destExtraCRV(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7137 {
7138         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_destExtraCRV, ett_h225_destExtraCRV, dissect_h225_CallReferenceValue);
7139         return offset;
7140 }
7141
7142 static int
7143 dissect_h225_h245SecurityCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7144 {
7145         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h245SecurityCapability, ett_h225_h245SecurityCapability, dissect_h225_H245Security);
7146         return offset;
7147 }
7148
7149 static int
7150 dissect_h225_additionalSourceAddresses(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7151 {
7152         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_additionalSourceAddresses, ett_h225_additionalSourceAddresses, dissect_h225_ExtendedAliasAddress);
7153         return offset;
7154 }
7155
7156
7157
7158 static per_sequence_t SetupUUIE_sequence[] = {
7159         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7160                 dissect_h225_ProtocolIdentifier },
7161         { "h245Address", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7162                 dissect_h225_h245Address },
7163         { "sourceAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7164                 dissect_h225_sourceAddress },
7165         { "sourceInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7166                 dissect_h225_sourceInfo },
7167         { "destinationAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7168                 dissect_h225_destinationAddress },
7169         { "destCallSignalAddress", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7170                 dissect_h225_destCallSignalAddress },
7171         { "destExtraCallInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7172                 dissect_h225_destExtraCallInfo },
7173         { "destExtraCRV", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7174                 dissect_h225_destExtraCRV },
7175         { "activeMC", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7176                 dissect_h225_activeMC },
7177         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7178                 dissect_h225_conferenceID },
7179         { "conferenceGoal", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7180                 dissect_h225_conferenceGoal },
7181         { "callServices", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7182                 dissect_h225_callServices },
7183         { "callType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7184                 dissect_h225_CallType },
7185         { "sourceCallSignalAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7186                 dissect_h225_sourceCallSignalAddress },
7187         { "RemoteExtensionAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7188                 dissect_h225_RemoteExtensionAddress },
7189         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7190                 dissect_h225_CallIdentifier },
7191         { "h245SecurityCapability", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7192                 dissect_h225_h245SecurityCapability },
7193         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7194                 dissect_h225_tokens },
7195         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7196                 dissect_h225_CryptoH323Token_sequence_of },
7197         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7198                 dissect_h225_fastStart },
7199         { "mediaWaitForConnect", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7200                 dissect_h225_mediaWaitForConnect },
7201         { "canOverlapSend", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7202                 dissect_h225_canOverlapSend },
7203         { "endpointIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7204                 dissect_h225_EndpointIdentifier },
7205         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7206                 dissect_h225_multipleCalls },
7207         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7208                 dissect_h225_maintainConnection },
7209         { "connectionParameters", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7210                 dissect_h225_connectionParameters },
7211         { "languages", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7212                 dissect_h225_languages },
7213         { "presentationIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7214                 dissect_h225_PresentationIndicator },
7215         { "screeningIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7216                 dissect_h225_ScreeningIndicator },
7217         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7218                 dissect_h225_serviceControl },
7219         { "symmetricOperationRequired", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7220                 dissect_h225_NULL },
7221         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7222                 dissect_h225_CallCapacity },
7223         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7224                 dissect_h225_CircuitInfo },
7225         { "desiredProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7226                 dissect_h225_desiredProtocols },
7227         { "neededFeatures", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7228                 dissect_h225_neededFeatures },
7229         { "desiredFeatures", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7230                 dissect_h225_desiredFeatures },
7231         { "supportedFeatures", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7232                 dissect_h225_supportedFeatures },
7233         { "parallelH245Control", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7234                 dissect_h225_parallelH245Control },
7235         { "additionalSourceAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7236                 dissect_h225_additionalSourceAddresses },
7237         { "hopCount", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7238                 dissect_h225_hopCount },
7239         { NULL, 0, 0, NULL }
7240 };
7241 static int
7242 dissect_h225_SetupUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7243 {
7244         contains_faststart = FALSE;
7245         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_SetupUUIE, ett_h225_SetupUUIE, SetupUUIE_sequence);
7246         return offset;
7247 }
7248
7249
7250 static int
7251 dissect_h225_connectedAddress(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7252 {
7253         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_connectedAddress, ett_h225_connectedAddress, dissect_h225_AliasAddress);
7254         return offset;
7255 }
7256
7257 static per_sequence_t ConnectUUIE_sequence[] = {
7258         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7259                 dissect_h225_ProtocolIdentifier },
7260         { "h245Address", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7261                 dissect_h225_h245Address },
7262         { "destinationInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7263                 dissect_h225_destinationInfo },
7264         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7265                 dissect_h225_conferenceID },
7266         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7267                 dissect_h225_CallIdentifier },
7268         { "h245SecurityMode", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7269                 dissect_h225_H245Security },
7270         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7271                 dissect_h225_tokens },
7272         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7273                 dissect_h225_CryptoH323Token_sequence_of },
7274         { "fastStart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7275                 dissect_h225_fastStart },
7276         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7277                 dissect_h225_multipleCalls },
7278         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7279                 dissect_h225_maintainConnection },
7280         { "languages", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7281                 dissect_h225_languages },
7282         { "connectedAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7283                 dissect_h225_connectedAddress },
7284         { "presentationIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7285                 dissect_h225_PresentationIndicator },
7286         { "screeningIndicator", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7287                 dissect_h225_ScreeningIndicator },
7288         { "fastConnectRefused", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7289                 dissect_h225_NULL },
7290         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7291                 dissect_h225_serviceControl },
7292         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7293                 dissect_h225_CallCapacity },
7294         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7295                 dissect_h225_FeatureSet },
7296         { NULL, 0, 0, NULL }
7297 };
7298 static int
7299 dissect_h225_ConnectUUIE(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7300 {
7301         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ConnectUUIE, ett_h225_ConnectUUIE, ConnectUUIE_sequence);
7302         return offset;
7303 }
7304
7305
7306 const value_string h323_message_body_vals[] = {
7307         { 0, "setup" },
7308         { 1, "callProceeding" },
7309         { 2, "connect" },
7310         { 3, "alerting" },
7311         { 4, "information" },
7312         { 5, "releaseComplete" },
7313         { 6, "facility" },
7314         { 7, "progress" },
7315         { 8, "empty" },
7316         { 9, "status" },
7317         { 10, "statusInquiry" },
7318         { 11, "setupAcknowledge" },
7319         { 12, "notify" },
7320         { 0, NULL}
7321 };
7322 static per_choice_t h323_message_body_choice[] = {
7323         { 0, "setup", ASN1_EXTENSION_ROOT,
7324                 dissect_h225_SetupUUIE },
7325         { 1, "callProceeding", ASN1_EXTENSION_ROOT,
7326                 dissect_h225_CallProceedingUUIE },
7327         { 2, "connect", ASN1_EXTENSION_ROOT,
7328                 dissect_h225_ConnectUUIE },
7329         { 3, "alerting", ASN1_EXTENSION_ROOT,
7330                 dissect_h225_AlertingUUIE },
7331         { 4, "information", ASN1_EXTENSION_ROOT,
7332                 dissect_h225_InformationUUIE },
7333         { 5, "releaseComplete", ASN1_EXTENSION_ROOT,
7334                 dissect_h225_ReleaseCompleteUUIE },
7335         { 6, "facility", ASN1_EXTENSION_ROOT,
7336                 dissect_h225_FacilityUUIE },
7337         { 7, "progress", ASN1_NOT_EXTENSION_ROOT,
7338                 dissect_h225_ProgressUUIE },
7339         { 8, "empty", ASN1_NOT_EXTENSION_ROOT,
7340                 dissect_h225_NULL },
7341         { 9, "status", ASN1_NOT_EXTENSION_ROOT,
7342                 dissect_h225_StatusUUIE },
7343         { 10, "statusInquiry", ASN1_NOT_EXTENSION_ROOT,
7344                 dissect_h225_StatusInquiryUUIE },
7345         { 11, "setupAcknowledge", ASN1_NOT_EXTENSION_ROOT,
7346                 dissect_h225_SetupAcknowledgeUUIE },
7347         { 12, "notify", ASN1_NOT_EXTENSION_ROOT,
7348                 dissect_h225_NotifyUUIE },
7349         { 0, NULL, 0, NULL }
7350 };
7351 static int
7352 dissect_h225_h323_message_body(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7353 {
7354         guint32 value;
7355
7356         contains_faststart = FALSE;
7357
7358         offset=dissect_per_choice(tvb, offset, pinfo, tree, hf_h225_h323_message_body, ett_h225_h323_message_body, h323_message_body_choice, "h323_message_body", &(value));
7359
7360         if (check_col(pinfo->cinfo, COL_INFO)){
7361                 col_append_fstr(pinfo->cinfo, COL_INFO, "CS: %s ",
7362                         val_to_str(value, h323_message_body_vals, "<unknown>"));
7363         }
7364
7365         if (h225_pi.msg_type == H225_CS) {
7366                 /* Don't override msg_tag value from IRR */
7367                 h225_pi.msg_tag = value;
7368         }
7369
7370         if (contains_faststart == TRUE )
7371         {
7372                 if (check_col(pinfo->cinfo, COL_INFO))
7373                 {
7374                         col_append_str(pinfo->cinfo, COL_INFO, "OpenLogicalChannel " );
7375                 }
7376         }
7377
7378         col_set_fence(pinfo->cinfo,COL_INFO);
7379
7380         return offset;
7381 }
7382
7383 static int
7384 dissect_h225_supportedProtocols(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7385 {
7386         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_supportedProtocols, ett_h225_supportedProtocols, dissect_h225_SupportedProtocols);
7387         return offset;
7388 }
7389
7390 static int
7391 dissect_h225_modifiedSrcInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7392 {
7393         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_modifiedSrcInfo, ett_h225_modifiedSrcInfo, dissect_h225_AliasAddress);
7394         return offset;
7395 }
7396
7397
7398 static per_sequence_t LocationConfirm_sequence[] = {
7399         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7400                 dissect_h225_RequestSeqNum },
7401         { "callSignalAddress2", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7402                 dissect_h225_CallSignalAddress2 },
7403         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7404                 dissect_h225_rasAddress },
7405         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7406                 dissect_h225_nonStandardData },
7407         { "DestinationInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7408                 dissect_h225_DestinationInfo },
7409         { "destExtraCallInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7410                 dissect_h225_destExtraCallInfo },
7411         { "destinationType", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7412                 dissect_h225_destinationType },
7413         { "remoteExtensionAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7414                 dissect_h225_remoteExtensionAddress },
7415         { "alternateEndpoints", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7416                 dissect_h225_alternateEndpoints },
7417         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7418                 dissect_h225_tokens },
7419         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7420                 dissect_h225_CryptoH323Token_sequence_of },
7421         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7422                 dissect_h225_ICV },
7423         { "alternateTransportAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7424                 dissect_h225_AlternateTransportAddress },
7425         { "supportedProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7426                 dissect_h225_supportedProtocols },
7427         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7428                 dissect_h225_multipleCalls },
7429         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7430                 dissect_h225_FeatureSet },
7431         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7432                 dissect_h225_genericData },
7433         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7434                 dissect_h225_CircuitInfo },
7435         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7436                 dissect_h225_serviceControl },
7437         { "modifiedSrcInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7438                 dissect_h225_modifiedSrcInfo },
7439         { "bandWidth", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7440                 dissect_h225_BandWidth },
7441         { NULL, 0, 0, NULL }
7442 };
7443 static int
7444 dissect_h225_LocationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7445 {
7446         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_LocationConfirm, ett_h225_LocationConfirm, LocationConfirm_sequence);
7447         return offset;
7448 }
7449
7450 static per_sequence_t LocationReject_sequence[] = {
7451         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7452                 dissect_h225_RequestSeqNum },
7453         { "rejectReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7454                 dissect_h225_LocationRejectReason },
7455         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7456                 dissect_h225_nonStandardData },
7457         { "altGKInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7458                 dissect_h225_AltGKInfo },
7459         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7460                 dissect_h225_tokens },
7461         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7462                 dissect_h225_CryptoH323Token_sequence_of },
7463         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7464                 dissect_h225_ICV },
7465         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7466                 dissect_h225_FeatureSet },
7467         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7468                 dissect_h225_genericData },
7469         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7470                 dissect_h225_serviceControl },
7471         { NULL, 0, 0, NULL }
7472 };
7473 static int
7474 dissect_h225_LocationReject(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7475 {
7476         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_LocationReject, ett_h225_LocationReject, LocationReject_sequence);
7477         return offset;
7478 }
7479
7480
7481 static int
7482 dissect_h225_answeredCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7483 {
7484         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_answeredCall, NULL, NULL);
7485         return offset;
7486 }
7487
7488 static per_sequence_t callSpecific_sequence[] = {
7489         { "callIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7490                 dissect_h225_CallIdentifier },
7491         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7492                 dissect_h225_conferenceID },
7493         { "answeredCall", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7494                 dissect_h225_answeredCall },
7495         { NULL, 0, 0, NULL }
7496 };
7497 static int
7498 dissect_h225_callSpecific(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7499 {
7500         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_callSpecific, ett_h225_callSpecific, callSpecific_sequence);
7501         return offset;
7502 }
7503
7504 static per_sequence_t ServiceControlIndication_sequence[] = {
7505         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7506                  dissect_h225_RequestSeqNum },
7507         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7508                 dissect_h225_nonStandardData },
7509         { "serviceControl", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7510                 dissect_h225_serviceControl },
7511         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7512                 dissect_h225_EndpointIdentifier },
7513         { "callSpecific", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7514                 dissect_h225_callSpecific },
7515         { "tokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7516                 dissect_h225_tokens },
7517         { "cryptoTokens", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7518                 dissect_h225_CryptoH323Token_sequence_of },
7519         { "integrityCheckValue", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7520                 dissect_h225_ICV },
7521         { "featureSet", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7522                 dissect_h225_FeatureSet },
7523         { "genericData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7524                 dissect_h225_genericData },
7525         { NULL, 0, 0, NULL }
7526 };
7527 static int
7528 dissect_h225_ServiceControlIndication(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7529 {
7530         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_ServiceControlIndication, ett_h225_ServiceControlIndication, ServiceControlIndication_sequence);
7531         return offset;
7532 }
7533
7534 static int
7535 dissect_h225_alertingTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7536 {
7537         return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_alertingTime);
7538         return offset;
7539 }
7540 static int
7541 dissect_h225_connectTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7542 {
7543         return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_connectTime);
7544         return offset;
7545 }
7546 static int
7547 dissect_h225_endTime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7548 {
7549         return dissect_h235_TimeStamp(tvb, offset, pinfo, tree, hf_h225_endTimeStamp);
7550         return offset;
7551 }
7552
7553 static int
7554 dissect_h225_nonStandardUsageFields_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7555 {
7556         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
7557                                 hf_h225_nonStandardUsageFields_item);
7558         return offset;
7559 }
7560
7561 static int
7562 dissect_h225_nonStandardUsageFields(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7563 {
7564         offset = dissect_per_sequence_of(tvb, offset, pinfo, tree,
7565                                 hf_h225_nonStandardUsageFields,
7566                                 ett_h225_T_nonStandardUsageFields, dissect_h225_nonStandardUsageFields_item);
7567         return offset;
7568 }
7569
7570
7571 static per_sequence_t RasUsageInformation_sequence[] = {
7572         { "nonStandardUsageFields", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7573                 dissect_h225_nonStandardUsageFields },
7574         { "alertingTime", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7575                 dissect_h225_alertingTime },
7576         { "connectTime", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7577                 dissect_h225_connectTime },
7578         { "endTime", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7579                 dissect_h225_endTime },
7580         { NULL, 0, 0, NULL }
7581 };
7582 static int
7583 dissect_h225_RasUsageInformation(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7584 {
7585         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RasUsageInformation, ett_h225_RasUsageInformation, RasUsageInformation_sequence);
7586         return offset;
7587 }
7588
7589
7590
7591 static int
7592 dissect_h225_TimeToLive(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7593 {
7594         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
7595                 tree, hf_h225_TimeToLive, 1, 4294967295UL,
7596                 NULL, NULL, FALSE);
7597         return offset;
7598 }
7599
7600 static int dissect_h225_authenticationMode(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
7601   /* XXX - asn2eth.py should use "int" for offset arguments and return values
7602      in more cases. */
7603   return dissect_h235_AuthenticationMechanism(tvb, offset, pinfo, tree, hf_h225_authenticationMode);
7604 }
7605
7606 static per_sequence_t GatekeeperConfirm_sequence[] = {
7607         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7608                 dissect_h225_RequestSeqNum },
7609         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7610                 dissect_h225_ProtocolIdentifier },
7611         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7612                 dissect_h225_nonStandardData },
7613         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7614                 dissect_h225_GatekeeperIdentifier },
7615         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7616                 dissect_h225_rasAddress },
7617         { "alternateGatekeeper", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7618                 dissect_h225_alternateGatekeeper },
7619         { "authenticationMode", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL, 
7620                 dissect_h225_authenticationMode },
7621         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7622                 dissect_h225_tokens },
7623         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7624                 dissect_h225_CryptoH323Token_sequence_of },
7625         { "algorithmOID", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7626                 dissect_h225_algorithmOID },
7627         { "integrity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7628                 dissect_h225_integrity },
7629         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7630                 dissect_h225_ICV },
7631         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7632                 dissect_h225_FeatureSet },
7633         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7634                 dissect_h225_genericData },
7635         { NULL, 0, 0, NULL }
7636 };
7637 static int
7638 dissect_h225_GatekeeperConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7639 {
7640         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_GatekeeperConfirm, ett_h225_GatekeeperConfirm, GatekeeperConfirm_sequence);
7641         return offset;
7642 }
7643
7644
7645
7646 static int
7647 dissect_h225_discoveryComplete(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7648 {
7649         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_discoveryComplete, NULL, NULL);
7650         return offset;
7651 }
7652
7653
7654 static int
7655 dissect_h225_keepAlive(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7656 {
7657         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_keepAlive, NULL, NULL);
7658         return offset;
7659 }
7660
7661
7662 static int
7663 dissect_h225_H248PackagesDescriptor(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7664 {
7665         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_H248PackagesDescriptor, -1, -1, NULL, NULL);
7666         return offset;
7667 }
7668
7669 static int
7670 dissect_h225_supportedH248Packages(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7671 {
7672         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_supportedH248Packages, ett_h225_supportedH248Packages, dissect_h225_H248PackagesDescriptor);
7673         return offset;
7674 }
7675
7676
7677 static per_sequence_t RegistrationRequest_sequence[] = {
7678         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7679                 dissect_h225_RequestSeqNum },
7680         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7681                 dissect_h225_ProtocolIdentifier },
7682         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7683                 dissect_h225_nonStandardData },
7684         { "discoveryComplete", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7685                 dissect_h225_discoveryComplete },
7686         { "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7687                 dissect_h225_callSignalAddress },
7688         { "rasAddress_sequence", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7689                 dissect_h225_rasAddress_sequence },
7690         { "terminalType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7691                 dissect_h225_terminalType },
7692         { "terminalAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7693                 dissect_h225_terminalAlias },
7694         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7695                 dissect_h225_GatekeeperIdentifier },
7696         { "endpointVendor", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7697                 dissect_h225_VendorIdentifier },
7698         { "alternateEndpoints", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7699                 dissect_h225_alternateEndpoints },
7700         { "timeToLive", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7701                 dissect_h225_TimeToLive },
7702         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7703                 dissect_h225_tokens },
7704         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7705                 dissect_h225_CryptoH323Token_sequence_of },
7706         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7707                 dissect_h225_ICV },
7708         { "keepAlive", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7709                 dissect_h225_keepAlive },
7710         { "endpointIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7711                 dissect_h225_EndpointIdentifier },
7712         { "willSupplyUUIEs", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7713                 dissect_h225_willSupplyUUIEs },
7714         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7715                 dissect_h225_maintainConnection },
7716         { "alternateTransportAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7717                 dissect_h225_AlternateTransportAddress },
7718         { "additiveRegistration", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7719                 dissect_h225_NULL },
7720         { "terminalAliasPattern", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7721                 dissect_h225_terminalAliasPattern },
7722         { "supportsAltGK", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7723                 dissect_h225_NULL },
7724         { "usageReportingCapability", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7725                 dissect_h225_usageReportingCapability },
7726         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7727                 dissect_h225_multipleCalls },
7728         { "supportedH248Packages", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7729                 dissect_h225_supportedH248Packages },
7730         { "callCreditCapability", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7731                 dissect_h225_CallCreditCapability },
7732         { "capacityReportingCapability", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7733                 dissect_h225_CapacityReportingCapability },
7734         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7735                 dissect_h225_CallCapacity },
7736         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7737                 dissect_h225_FeatureSet },
7738         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7739                 dissect_h225_genericData },
7740         { "restart", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7741                 dissect_h225_NULL },
7742         { "supportsACFSequences", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7743                 dissect_h225_NULL },
7744         { NULL, 0, 0, NULL }
7745 };
7746 static int
7747 dissect_h225_RegistrationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7748 {
7749         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RegistrationRequest, ett_h225_RegistrationRequest, RegistrationRequest_sequence);
7750         return offset;
7751 }
7752
7753
7754 static per_sequence_t DisengageConfirm_sequence[] = {
7755         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7756                 dissect_h225_RequestSeqNum },
7757         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7758                 dissect_h225_nonStandardData },
7759         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7760                 dissect_h225_tokens },
7761         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7762                 dissect_h225_CryptoH323Token_sequence_of },
7763         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7764                 dissect_h225_ICV },
7765         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7766                 dissect_h225_CallCapacity },
7767         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7768                 dissect_h225_CircuitInfo },
7769         { "usageInformation", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7770                 dissect_h225_RasUsageInformation },
7771         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7772                 dissect_h225_genericData },
7773         { NULL, 0, 0, NULL }
7774 };
7775 static int
7776 dissect_h225_DisengageConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7777 {
7778         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_DisengageConfirm, ett_h225_DisengageConfirm, DisengageConfirm_sequence);
7779         return offset;
7780 }
7781
7782
7783 static int
7784 dissect_h225_irrFrequency(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7785 {
7786         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
7787                 tree, hf_h225_irrFrequency, 1, 65535,
7788                 NULL, NULL, FALSE);
7789         return offset;
7790 }
7791
7792 static int
7793 dissect_h225_willRespondToIRR(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7794 {
7795         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_willRespondToIRR, NULL, NULL);
7796         return offset;
7797 }
7798
7799
7800 static int
7801 dissect_h225_usageSpec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7802 {
7803         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_usageSpec, ett_h225_usageSpec, dissect_h225_RasUsageSpecification);
7804         return offset;
7805 }
7806
7807 static per_sequence_t AdmissionConfirm_sequence[] = {
7808         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7809                 dissect_h225_RequestSeqNum },
7810         { "bandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7811                 dissect_h225_BandWidth },
7812         { "callModel", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7813                 dissect_h225_CallModel },
7814         { "destCallSignalAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7815                 dissect_h225_destCallSignalAddress },
7816         { "irrFrequency", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7817                 dissect_h225_irrFrequency },
7818         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7819                 dissect_h225_nonStandardData },
7820         { "DestinationInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7821                 dissect_h225_DestinationInfo },
7822         { "destExtraCallInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7823                 dissect_h225_destExtraCallInfo },
7824         { "destinationType", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7825                 dissect_h225_destinationType },
7826         { "remoteExtensionAddress", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7827                 dissect_h225_remoteExtensionAddress },
7828         { "alternateEndpoints", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7829                 dissect_h225_alternateEndpoints },
7830         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7831                 dissect_h225_tokens },
7832         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7833                 dissect_h225_CryptoH323Token_sequence_of },
7834         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7835                 dissect_h225_ICV },
7836         { "transportQOS", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7837                 dissect_h225_TransportQOS },
7838         { "willRespondToIRR", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7839                 dissect_h225_willRespondToIRR },
7840         { "uuiesRequested", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7841                 dissect_h225_UUIEsRequested },
7842         { "languages", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7843                 dissect_h225_languages },
7844         { "alternateTransportAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7845                 dissect_h225_AlternateTransportAddress },
7846         { "useSpecifiedTransport", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7847                 dissect_h225_UseSpecifiedTransport },
7848         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7849                 dissect_h225_CircuitInfo },
7850         { "usageSpec", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7851                 dissect_h225_usageSpec },
7852         { "supportedProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7853                 dissect_h225_supportedProtocols },
7854         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7855                 dissect_h225_serviceControl },
7856         { "multipleCalls", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7857                 dissect_h225_multipleCalls },
7858         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7859                 dissect_h225_FeatureSet },
7860         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7861                 dissect_h225_genericData },
7862         { "modifiedSrcInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7863                 dissect_h225_modifiedSrcInfo },
7864         { NULL, 0, 0, NULL }
7865 };
7866 static int
7867 dissect_h225_AdmissionConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7868 {
7869         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_AdmissionConfirm, ett_h225_AdmissionConfirm, AdmissionConfirm_sequence);
7870         return offset;
7871 }
7872
7873
7874 static per_sequence_t DisengageRequest_sequence[] = {
7875         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7876                 dissect_h225_RequestSeqNum },
7877         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7878                 dissect_h225_EndpointIdentifier },
7879         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7880                 dissect_h225_conferenceID },
7881         { "callReferenceValue", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7882                 dissect_h225_CallReferenceValue },
7883         { "disengageReason", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7884                 dissect_h225_DisengageReason },
7885         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7886                 dissect_h225_nonStandardData },
7887         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7888                 dissect_h225_CallIdentifier },
7889         { "gatekeeperIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7890                 dissect_h225_GatekeeperIdentifier },
7891         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7892                 dissect_h225_tokens },
7893         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7894                 dissect_h225_CryptoH323Token_sequence_of },
7895         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7896                 dissect_h225_ICV },
7897         { "answeredCall", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7898                 dissect_h225_answeredCall },
7899         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7900                 dissect_h225_CallLinkage },
7901         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7902                 dissect_h225_CallCapacity },
7903         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7904                 dissect_h225_CircuitInfo },
7905         { "usageInformation", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7906                 dissect_h225_RasUsageInformation },
7907         { "terminationCause", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7908                 dissect_h225_CallTerminationCause },
7909         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7910                 dissect_h225_serviceControl },
7911         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7912                 dissect_h225_genericData },
7913         { NULL, 0, 0, NULL }
7914 };
7915 static int
7916 dissect_h225_DisengageRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7917 {
7918         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_DisengageRequest, ett_h225_DisengageRequest, DisengageRequest_sequence);
7919         return offset;
7920 }
7921
7922
7923 static int
7924 dissect_h225_SourceInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7925 {
7926         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_SourceInfo, ett_h225_SourceInfo, dissect_h225_AliasAddress);
7927         return offset;
7928 }
7929
7930 static int
7931 dissect_h225_hopCount255(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7932 {
7933         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
7934                 tree, hf_h225_hopCount255, 1, 255,
7935                 NULL, NULL, FALSE);
7936         return offset;
7937 }
7938
7939 static int
7940 dissect_h225_sourceEndpointInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7941 {
7942         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_sourceEndpointInfo, ett_h225_sourceEndpointInfo, dissect_h225_AliasAddress);
7943         return offset;
7944 }
7945
7946 static per_sequence_t LocationRequest_sequence[] = {
7947         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7948                 dissect_h225_RequestSeqNum },
7949         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7950                 dissect_h225_EndpointIdentifier },
7951         { "DestinationInfo", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7952                 dissect_h225_DestinationInfo },
7953         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
7954                 dissect_h225_nonStandardData },
7955         { "replyAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7956                 dissect_h225_replyAddress },
7957         { "SourceInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7958                 dissect_h225_SourceInfo },
7959         { "canMapAlias", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7960                 dissect_h225_canMapAlias },
7961         { "gatekeeperIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7962                 dissect_h225_GatekeeperIdentifier },
7963         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7964                 dissect_h225_tokens },
7965         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7966                 dissect_h225_CryptoH323Token_sequence_of },
7967         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7968                 dissect_h225_ICV },
7969         { "desiredProtocols", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7970                 dissect_h225_desiredProtocols },
7971         { "desiredTunnelledProtocol", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7972                 dissect_h225_desiredTunnelledProtocol },
7973         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7974                 dissect_h225_FeatureSet },
7975         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7976                 dissect_h225_genericData },
7977         { "hopCount255", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7978                 dissect_h225_hopCount255 },
7979         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7980                 dissect_h225_CircuitInfo },
7981         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7982                 dissect_h225_CallIdentifier },
7983         { "bandWidth", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7984                 dissect_h225_BandWidth },
7985         { "sourceEndpointInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
7986                 dissect_h225_sourceEndpointInfo },
7987         { "canMapSrcAlias", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
7988                 dissect_h225_canMapSrcAlias },
7989         { NULL, 0, 0, NULL }
7990 };
7991 static int
7992 dissect_h225_LocationRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7993 {
7994         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_LocationRequest, ett_h225_LocationRequest, LocationRequest_sequence);
7995         return offset;
7996 }
7997
7998 static int
7999 dissect_h225_bandwidthDetails(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8000 {
8001         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_bandwidthDetails, ett_h225_bandwidthDetails, dissect_h225_BandwidthDetails);
8002         return offset;
8003 }
8004
8005 static per_sequence_t BandwidthRequest_sequence[] = {
8006         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8007                 dissect_h225_RequestSeqNum },
8008         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8009                 dissect_h225_EndpointIdentifier },
8010         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8011                 dissect_h225_conferenceID },
8012         { "callReferenceValue", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8013                 dissect_h225_CallReferenceValue },
8014         { "callType", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8015                 dissect_h225_CallType },
8016         { "bandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8017                 dissect_h225_BandWidth },
8018         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8019                 dissect_h225_nonStandardData },
8020         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8021                 dissect_h225_CallIdentifier },
8022         { "gatekeeperIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8023                 dissect_h225_GatekeeperIdentifier },
8024         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8025                 dissect_h225_tokens },
8026         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8027                 dissect_h225_CryptoH323Token_sequence_of },
8028         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8029                 dissect_h225_ICV },
8030         { "answeredCall", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8031                 dissect_h225_answeredCall },
8032         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8033                 dissect_h225_CallLinkage },
8034         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8035                 dissect_h225_CallCapacity },
8036         { "usageInformation", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8037                 dissect_h225_RasUsageInformation },
8038         { "bandwidthDetails", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8039                 dissect_h225_bandwidthDetails },
8040         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8041                 dissect_h225_genericData },
8042         { NULL, 0, 0, NULL }
8043 };
8044 static int
8045 dissect_h225_BandwidthRequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8046 {
8047         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_BandwidthRequest, ett_h225_BandwidthRequest, BandwidthRequest_sequence);
8048         return offset;
8049 }
8050
8051
8052 static int
8053 dissect_h225_admissionConfirmSequence(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8054 {
8055         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_admissionConfirmSequence, ett_h225_admissionConfirmSequence, dissect_h225_AdmissionConfirm);
8056         return offset;
8057 }
8058
8059
8060 static int
8061 dissect_h225_messageContent_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8062 {
8063         guint32 value_offset, value_len;
8064         tvbuff_t *next_tvb;
8065
8066         offset = dissect_per_octet_string(tvb, offset, pinfo, tree,
8067                                 hf_h225_messageContent_item, -1, -1,
8068                                 &value_offset, &value_len);
8069
8070         if (value_len > 0) {
8071                 next_tvb = tvb_new_subset(tvb, value_offset, value_len, value_len);
8072                 call_dissector((tp_handle)?tp_handle:data_handle, next_tvb, pinfo, tree);
8073         }
8074         return offset;
8075 }
8076
8077
8078 static int
8079 dissect_h225_messageContent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8080 {
8081         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_messageContent, ett_h225_messageContent, dissect_h225_messageContent_item);
8082         return offset;
8083 }
8084
8085
8086 static int
8087 dissect_h225_h4501SupplementaryService_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8088 {
8089         tvbuff_t *h4501_tvb;
8090         guint32 h4501_offset=0;
8091         guint32 h4501_len=0;
8092
8093         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, -1, -1, -1, &h4501_offset, &h4501_len);
8094
8095         if(h4501_len){
8096                 h4501_tvb = tvb_new_subset(tvb, h4501_offset, h4501_len, h4501_len);
8097                 call_dissector(h4501_handle, h4501_tvb, pinfo, tree);
8098         }
8099         return offset;
8100 }
8101
8102 static int
8103 dissect_h225_h4501SupplementaryService(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8104 {
8105         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h4501SupplementaryService, ett_h225_h4501SupplementaryService, dissect_h225_h4501SupplementaryService_item);
8106         return offset;
8107 }
8108
8109
8110 static per_sequence_t tunnelledSignallingMessage_sequence[] = {
8111         { "tunnelledProtocolID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8112                 dissect_h225_TunnelledProtocol },
8113         { "messageContent", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8114                 dissect_h225_messageContent },
8115         { "tunnellingRequired", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8116                 dissect_h225_NULL },
8117         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8118                 dissect_h225_nonStandardData },
8119         { NULL, 0, 0, NULL }
8120 };
8121 static int
8122 dissect_h225_tunnelledSignallingMessage(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8123 {
8124         tp_handle = NULL;
8125         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_tunnelledSignallingMessage, ett_h225_tunnelledSignallingMessage, tunnelledSignallingMessage_sequence);
8126         return offset;
8127 }
8128
8129
8130 static int
8131 dissect_h225_h245Tunneling(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8132 {
8133         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_h245Tunneling, NULL, NULL);
8134         return offset;
8135 }
8136
8137
8138 static int
8139 dissect_h225_h245Control_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8140 {
8141         tvbuff_t *h245_tvb;
8142         guint32 h245_offset=0;
8143         guint32 h245_len=0;
8144
8145         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, -1, -1, -1, &h245_offset, &h245_len);
8146
8147         if(h245_len){
8148                 h245_tvb = tvb_new_subset(tvb, h245_offset, h245_len, h245_len);
8149                 call_dissector(h245dg_handle, h245_tvb, pinfo, tree);
8150         }
8151
8152         return offset;
8153 }
8154
8155
8156 static int
8157 dissect_h225_h245Control(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8158 {
8159         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_h245Control, ett_h225_h245Control, dissect_h225_h245Control_item);
8160         return offset;
8161 }
8162
8163
8164 static int
8165 dissect_h225_nonStandardControl_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8166 {
8167         offset = dissect_h225_NonStandardParameter(tvb, offset, pinfo, tree,
8168                                 hf_h225_nonStandardControl_item);
8169         return offset;
8170 }
8171
8172 static int
8173 dissect_h225_nonStandardControl(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8174 {
8175         offset = dissect_per_sequence_of(tvb, offset, pinfo, tree,
8176                                 hf_h225_nonStandardControl,
8177                                 ett_h225_T_nonStandardControl, dissect_h225_nonStandardControl_item);
8178         return offset;
8179 }
8180
8181
8182 static per_sequence_t H323_UU_PDU_sequence[] = {
8183         { "h323_message_body", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8184                 dissect_h225_h323_message_body },
8185         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8186                 dissect_h225_nonStandardData },
8187         { "h4501SupplementaryService", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8188                 dissect_h225_h4501SupplementaryService },
8189         { "h245Tunneling", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8190                 dissect_h225_h245Tunneling },
8191         { "h245Control", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8192                 dissect_h225_h245Control },
8193         { "nonStandardControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8194                 dissect_h225_nonStandardControl },
8195         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8196                 dissect_h225_CallLinkage },
8197         { "tunnelledSignallingMessage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8198                 dissect_h225_tunnelledSignallingMessage },
8199         { "provisionalRespToH245Tunneling", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8200                 dissect_h225_NULL },
8201         { "stimulusControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8202                 dissect_h225_StimulusControl },
8203         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8204                 dissect_h225_genericData },
8205         { NULL, 0, 0, NULL }
8206 };
8207 static int
8208 dissect_h225_H323_UU_PDU(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8209 {
8210         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_H323_UU_PDU, ett_h225_H323_UU_PDU, H323_UU_PDU_sequence);
8211         return offset;
8212 }
8213
8214
8215 static int
8216 dissect_h225_makeCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8217 {
8218         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_makeCall, NULL, NULL);
8219         return offset;
8220 }
8221
8222 static int
8223 dissect_h225_useGKCallSignalAddressToMakeCall(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8224 {
8225         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_useGKCallSignalAddressToMakeCall, NULL, NULL);
8226         return offset;
8227 }
8228
8229
8230 static int
8231 dissect_h225_useGKCallSignalAddressToAnswer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8232 {
8233         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_useGKCallSignalAddressToAnswer, NULL, NULL);
8234         return offset;
8235 }
8236
8237 static per_sequence_t preGrantedARQ_sequence[] = {
8238         { "makeCall", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8239                 dissect_h225_makeCall },
8240         { "useGKCallSignalAddressToMakeCall", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8241                 dissect_h225_useGKCallSignalAddressToMakeCall },
8242         { "answerCall", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8243                 dissect_h225_answerCall },
8244         { "useGKCallSignalAddressToAnswer", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8245                 dissect_h225_useGKCallSignalAddressToAnswer },
8246         { "irrFrequencyInCall", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8247                 dissect_h225_irrFrequency },
8248         { "totalBandwidthRestriction", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8249                 dissect_h225_totalBandwidthRestriction },
8250         { "alternateTransportAddresses", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8251                 dissect_h225_AlternateTransportAddress },
8252         { "useSpecifiedTransport", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8253                 dissect_h225_UseSpecifiedTransport },
8254         { NULL, 0, 0, NULL }
8255 };
8256 static int
8257 dissect_h225_preGrantedARQ(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8258 {
8259         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_preGrantedARQ, ett_h225_preGrantedARQ, preGrantedARQ_sequence);
8260         return offset;
8261 }
8262
8263
8264
8265 static per_sequence_t RegistrationConfirm_sequence[] = {
8266         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8267                 dissect_h225_RequestSeqNum },
8268         { "protocolIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8269                 dissect_h225_ProtocolIdentifier },
8270         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8271                 dissect_h225_nonStandardData },
8272         { "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8273                 dissect_h225_callSignalAddress },
8274         { "terminalAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8275                 dissect_h225_terminalAlias },
8276         { "gatekeeperIdentifier", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8277                 dissect_h225_GatekeeperIdentifier },
8278         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8279                 dissect_h225_EndpointIdentifier },
8280         { "alternateGatekeeper", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8281                 dissect_h225_alternateGatekeeper },
8282         { "timeToLive", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8283                 dissect_h225_TimeToLive },
8284         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8285                 dissect_h225_tokens },
8286         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8287                 dissect_h225_CryptoH323Token_sequence_of },
8288         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8289                 dissect_h225_ICV },
8290         { "willRespondToIRR", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8291                 dissect_h225_willRespondToIRR },
8292         { "preGrantedARQ", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8293                 dissect_h225_preGrantedARQ },
8294         { "maintainConnection", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8295                 dissect_h225_maintainConnection },
8296         { "serviceControl", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8297                 dissect_h225_serviceControl },
8298         { "supportsAdditiveRegistration", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8299                 dissect_h225_NULL },
8300         { "terminalAliasPattern", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8301                 dissect_h225_terminalAliasPattern },
8302         { "supportedPrefixes", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8303                 dissect_h225_SupportedPrefixes },
8304         { "usageSpec", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8305                 dissect_h225_usageSpec },
8306         { "featureServerAlias", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8307                 dissect_h225_featureServerAlias },
8308         { "capacityReportingSpec", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8309                 dissect_h225_CapacityReportingSpecification },
8310         { "featureSet", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8311                 dissect_h225_FeatureSet },
8312         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8313                 dissect_h225_genericData },
8314         { NULL, 0, 0, NULL }
8315 };
8316 static int
8317 dissect_h225_RegistrationConfirm(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8318 {
8319         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_RegistrationConfirm, ett_h225_RegistrationConfirm, RegistrationConfirm_sequence);
8320         return offset;
8321 }
8322
8323
8324 static int
8325 dissect_h225_sent(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8326 {
8327         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_sent, NULL, NULL);
8328         return offset;
8329 }
8330
8331 static per_sequence_t pdu_item_sequence[] = {
8332         { "h323pdu", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
8333                 dissect_h225_H323_UU_PDU },
8334         { "sent", ASN1_NO_EXTENSIONS, ASN1_NOT_OPTIONAL,
8335                 dissect_h225_sent },
8336         { NULL, 0, 0, NULL }
8337 };
8338 static int
8339 dissect_h225_pdu_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8340 {
8341         gboolean save_info;
8342
8343         /* dont update the INFO or PROTOCOL fields of the summary */
8344         save_info=col_get_writable(pinfo->cinfo);
8345         col_set_writable(pinfo->cinfo, FALSE);
8346         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_pdu_item, ett_h225_pdu_item, pdu_item_sequence);
8347         col_set_writable(pinfo->cinfo, save_info);
8348         return offset;
8349 }
8350
8351
8352 static int
8353 dissect_h225_pdu(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8354 {
8355         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_pdu, ett_h225_pdu, dissect_h225_pdu_item);
8356         return offset;
8357 }
8358
8359
8360
8361 static int
8362 dissect_h225_originator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8363 {
8364         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_originator, NULL, NULL);
8365         return offset;
8366 }
8367
8368 static int
8369 dissect_h225_audio(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8370 {
8371         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_audio, ett_h225_audio, dissect_h225_RTPSession);
8372         return offset;
8373 }
8374
8375 static int
8376 dissect_h225_video(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8377 {
8378         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_video, ett_h225_video, dissect_h225_RTPSession);
8379         return offset;
8380 }
8381
8382 static int
8383 dissect_h225_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8384 {
8385         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_data, ett_h225_data, dissect_h225_RTPSession);
8386         return offset;
8387 }
8388
8389
8390 static int
8391 dissect_h225_substituteConfIDs(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8392 {
8393         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_substituteConfIDs, ett_h225_substituteConfIDs, dissect_h225_conferenceID);
8394         return offset;
8395 }
8396
8397
8398 static per_sequence_t perCallInfo_item_sequence[] = {
8399         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8400                 dissect_h225_nonStandardData },
8401         { "callReferenceValue", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8402                 dissect_h225_CallReferenceValue },
8403         { "conferenceID", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8404                 dissect_h225_conferenceID },
8405         { "originator", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8406                 dissect_h225_originator },
8407         { "audio", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8408                 dissect_h225_audio },
8409         { "video", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8410                 dissect_h225_video },
8411         { "data", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8412                 dissect_h225_data },
8413         { "h245", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8414                 dissect_h225_h245 },
8415         { "callSignaling", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8416                 dissect_h225_callSignaling },
8417         { "callType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8418                 dissect_h225_CallType },
8419         { "bandWidth", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8420                 dissect_h225_BandWidth },
8421         { "callModel", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8422                 dissect_h225_CallModel },
8423         { "callIdentifier", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8424                 dissect_h225_CallIdentifier },
8425         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8426                 dissect_h225_tokens },
8427         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8428                 dissect_h225_CryptoH323Token_sequence_of },
8429         { "substituteConfIDs", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8430                 dissect_h225_substituteConfIDs },
8431         { "pdu", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8432                 dissect_h225_pdu },
8433         { "callLinkage", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8434                 dissect_h225_CallLinkage },
8435         { "usageInformation", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8436                 dissect_h225_RasUsageInformation },
8437         { "circuitInfo", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8438                 dissect_h225_CircuitInfo },
8439         { NULL, 0, 0, NULL }
8440 };
8441 static int
8442 dissect_h225_perCallInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8443 {
8444         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_perCallInfo_item, ett_h225_perCallInfo_item, perCallInfo_item_sequence);
8445         return offset;
8446 }
8447
8448
8449
8450
8451 static int
8452 dissect_h225_perCallInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8453 {
8454         offset=dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_h225_perCallInfo, ett_h225_perCallInfo, dissect_h225_perCallInfo_item);
8455         return offset;
8456 }
8457
8458
8459
8460 static int
8461 dissect_h225_needResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8462 {
8463         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_needResponse, NULL, NULL);
8464         return offset;
8465 }
8466
8467
8468 static int
8469 dissect_h225_unsolicited(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8470 {
8471         offset=dissect_per_boolean(tvb, offset, pinfo, tree, hf_h225_unsolicited, NULL, NULL);
8472         return offset;
8473 }
8474
8475 static per_sequence_t InfoRequestResponse_sequence[] = {
8476         { "nonStandardData", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8477                 dissect_h225_nonStandardData },
8478         { "requestSeqNum", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8479                 dissect_h225_RequestSeqNum },
8480         { "endpointType", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8481                 dissect_h225_EndPointType },
8482         { "endpointIdentifier", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8483                 dissect_h225_EndpointIdentifier },
8484         { "rasAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8485                 dissect_h225_rasAddress },
8486         { "callSignalAddress", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8487                 dissect_h225_callSignalAddress },
8488         { "endpointAlias", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8489                 dissect_h225_endpointAlias },
8490         { "perCallInfo", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8491                 dissect_h225_perCallInfo },
8492         { "tokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8493                 dissect_h225_tokens },
8494         { "cryptoTokens", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8495                 dissect_h225_CryptoH323Token_sequence_of },
8496         { "integrityCheckValue", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8497                 dissect_h225_ICV },
8498         { "needResponse", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8499                 dissect_h225_needResponse },
8500         { "capacity", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8501                 dissect_h225_CallCapacity },
8502         { "irrStatus", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8503                 dissect_h225_InfoRequestResponseStatus },
8504         { "unsolicited", ASN1_NOT_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8505                 dissect_h225_unsolicited },
8506         { "genericData", ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL,
8507                 dissect_h225_genericData },
8508         { NULL, 0, 0, NULL }
8509 };
8510 static int
8511 dissect_h225_InfoRequestResponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8512 {
8513         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_InfoRequestResponse, ett_h225_InfoRequestResponse, InfoRequestResponse_sequence);
8514         return offset;
8515 }
8516
8517
8518
8519 static int
8520 dissect_h225_protocol_discriminator(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8521 {
8522         offset=dissect_per_constrained_integer(tvb, offset, pinfo,
8523                 tree, hf_h225_protocol_discriminator, 0, 255,
8524                 NULL, NULL, FALSE);
8525         return offset;
8526 }
8527
8528 static int
8529 dissect_h225_user_information(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8530 {
8531         offset=dissect_per_octet_string(tvb, offset, pinfo, tree, hf_h225_user_information, 1, 131, NULL, NULL);
8532         return offset;
8533 }
8534
8535 static per_sequence_t user_data_sequence[] = {
8536         { "protocol-discriminator", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8537                 dissect_h225_protocol_discriminator },
8538         { "user-information", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8539                 dissect_h225_user_information },
8540         { NULL, 0, 0, NULL }
8541 };
8542 static int
8543 dissect_h225_user_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
8544 {
8545         offset=dissect_per_sequence(tvb, offset, pinfo, tree, hf_h225_user_data, ett_h225_user_data, user_data_sequence);
8546         return offset;
8547 }
8548
8549
8550
8551
8552 const value_string RasMessage_vals[] = {
8553         { 0, "gatekeeperRequest" },
8554         { 1, "gatekeeperConfirm" },
8555         { 2, "gatekeeperReject" },
8556         { 3, "registrationRequest" },
8557         { 4, "registrationConfirm" },
8558         { 5, "registrationReject" },
8559         { 6, "unregistrationRequest" },
8560         { 7, "unregistrationConfirm" },
8561         { 8, "unregistrationReject" },
8562         { 9, "admissionRequest" },
8563         {10, "admissionConfirm" },
8564         {11, "admissionReject" },
8565         {12, "bandwidthRequest" },
8566         {13, "bandwidthConfirm" },
8567         {14, "bandwidthReject" },
8568         {15, "disengageRequest" },
8569         {16, "disengageConfirm" },
8570         {17, "disengageReject" },
8571         {18, "locationRequest" },
8572         {19, "locationConfirm" },
8573         {20, "locationReject" },
8574         {21, "infoRequest" },
8575         {22, "infoRequestResponse" },
8576         {23, "nonStandardMessage" },
8577         {24, "unknownMessageResponse" },
8578         {25, "requestInProgress" },
8579         {26, "resourcesAvailableIndicate" },
8580         {27, "resourcesAvailableConfirm" },
8581         {28, "infoRequestAck" },
8582         {29, "infoRequestNak" },
8583         {30, "serviceControlIndication" },
8584         {31, "serviceControlResponse" },
8585         {32, "admissionConfirmSequence" },
8586         { 0, NULL}
8587 };
8588 static per_choice_t RasMessage_choice[] = {
8589         { 0, "gatekeeperRequest", ASN1_EXTENSION_ROOT,
8590                 dissect_h225_GatekeeperRequest },
8591         { 1, "gatekeeperConfirm", ASN1_EXTENSION_ROOT,
8592                 dissect_h225_GatekeeperConfirm },
8593         { 2, "gatekeeperReject", ASN1_EXTENSION_ROOT,
8594                 dissect_h225_GatekeeperReject },
8595         { 3, "registrationRequest", ASN1_EXTENSION_ROOT,
8596                 dissect_h225_RegistrationRequest },
8597         { 4, "registrationConfirm", ASN1_EXTENSION_ROOT,
8598                 dissect_h225_RegistrationConfirm },
8599         { 5, "registrationReject", ASN1_EXTENSION_ROOT,
8600                 dissect_h225_RegistrationReject },
8601         { 6, "unregistrationRequest", ASN1_EXTENSION_ROOT,
8602                 dissect_h225_UnregistrationRequest },
8603         { 7, "unregistrationConfirm", ASN1_EXTENSION_ROOT,
8604                 dissect_h225_UnregistrationConfirm },
8605         { 8, "unregistrationReject", ASN1_EXTENSION_ROOT,
8606                 dissect_h225_UnregistrationReject },
8607         { 9, "admissionRequest", ASN1_EXTENSION_ROOT,
8608                 dissect_h225_AdmissionRequest },
8609         {10, "admissionConfirm", ASN1_EXTENSION_ROOT,
8610                 dissect_h225_AdmissionConfirm },
8611         {11, "admissionReject", ASN1_EXTENSION_ROOT,
8612                 dissect_h225_AdmissionReject },
8613         {12, "bandwidthRequest", ASN1_EXTENSION_ROOT,
8614                 dissect_h225_BandwidthRequest },
8615         {13, "bandwidthConfirm", ASN1_EXTENSION_ROOT,
8616                 dissect_h225_BandwidthConfirm },
8617         {14, "bandwidthReject", ASN1_EXTENSION_ROOT,
8618                 dissect_h225_BandwidthReject },
8619         {15, "disengageRequest", ASN1_EXTENSION_ROOT,
8620                 dissect_h225_DisengageRequest },
8621         {16, "disengageConfirm", ASN1_EXTENSION_ROOT,
8622                 dissect_h225_DisengageConfirm },
8623         {17, "disengageReject", ASN1_EXTENSION_ROOT,
8624                 dissect_h225_DisengageReject },
8625         {18, "locationRequest", ASN1_EXTENSION_ROOT,
8626                 dissect_h225_LocationRequest },
8627         {19, "locationConfirm", ASN1_EXTENSION_ROOT,
8628                 dissect_h225_LocationConfirm },
8629         {20, "locationReject", ASN1_EXTENSION_ROOT,
8630                 dissect_h225_LocationReject },
8631         {21, "infoRequest", ASN1_EXTENSION_ROOT,
8632                 dissect_h225_InfoRequest },
8633         {22, "infoRequestResponse", ASN1_EXTENSION_ROOT,
8634                 dissect_h225_InfoRequestResponse },
8635         {23, "nonStandardMessage", ASN1_EXTENSION_ROOT,
8636                 dissect_h225_NonStandardMessage },
8637         {24, "unknownMessageResponse", ASN1_EXTENSION_ROOT,
8638                 dissect_h225_UnknownMessageResponse },
8639         {25, "requestInProgress", ASN1_NOT_EXTENSION_ROOT,
8640                 dissect_h225_RequestInProgress },
8641         {26, "resourcesAvailableIndicate", ASN1_NOT_EXTENSION_ROOT,
8642                 dissect_h225_ResourcesAvailableIndicate },
8643         {27, "resourcesAvailableConfirm", ASN1_NOT_EXTENSION_ROOT,
8644                 dissect_h225_ResourcesAvailableConfirm },
8645         {28, "infoRequestAck", ASN1_NOT_EXTENSION_ROOT,
8646                 dissect_h225_InfoRequestAck },
8647         {29, "infoRequestNak", ASN1_NOT_EXTENSION_ROOT,
8648                 dissect_h225_InfoRequestNak },
8649         {30, "serviceControlIndication", ASN1_NOT_EXTENSION_ROOT,
8650                 dissect_h225_ServiceControlIndication },
8651         {31, "serviceControlResponse", ASN1_NOT_EXTENSION_ROOT,
8652                 dissect_h225_ServiceControlResponse },
8653         {32, "admissionConfirmSequence", ASN1_NOT_EXTENSION_ROOT,
8654                 dissect_h225_admissionConfirmSequence },
8655         { 0, NULL, 0, NULL }
8656 };
8657 static void
8658 dissect_h225_RasMessage(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
8659 {
8660         proto_item *it;
8661         proto_tree *tr;
8662         guint32 offset=0;
8663         guint32 value;
8664
8665         /* Init struct for collecting h225_packet_info */
8666         reset_h225_packet_info(&(h225_pi));
8667         h225_pi.msg_type = H225_RAS;
8668
8669         if (check_col(pinfo->cinfo, COL_PROTOCOL)){
8670                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.225.0");
8671         }
8672
8673         it=proto_tree_add_protocol_format(tree, proto_h225, tvb, 0, tvb_length(tvb), "H.225.0 RAS");
8674         tr=proto_item_add_subtree(it, ett_h225);
8675
8676         offset=dissect_per_choice(tvb, offset, pinfo, tr, hf_h225_RasMessage, ett_h225_RasMessage, RasMessage_choice, "RasMessage", &value);
8677
8678         if (check_col(pinfo->cinfo, COL_INFO)){
8679                 col_add_fstr(pinfo->cinfo, COL_INFO, "RAS: %s ",
8680                         val_to_str(value, RasMessage_vals, "<unknown>"));
8681         }
8682         h225_pi.msg_tag = value;
8683
8684         ras_call_matching(tvb, pinfo, tr, &(h225_pi));
8685
8686         tap_queue_packet(h225_tap, pinfo, &h225_pi);
8687 }
8688
8689
8690
8691
8692
8693
8694 static per_sequence_t H323_UserInformation_sequence[] = {
8695         { "h323_uu_pdu", ASN1_EXTENSION_ROOT, ASN1_NOT_OPTIONAL,
8696                 dissect_h225_H323_UU_PDU },
8697         { "user_data", ASN1_EXTENSION_ROOT, ASN1_OPTIONAL,
8698                 dissect_h225_user_data },
8699         { NULL, 0, 0, NULL }
8700 };
8701 static void
8702 dissect_h225_H323UserInformation(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
8703 {
8704         proto_item *it;
8705         proto_tree *tr;
8706         guint32 offset=0;
8707
8708         /* Init struct for collecting h225_packet_info */
8709         reset_h225_packet_info(&(h225_pi));
8710         h225_pi.msg_type = H225_CS;
8711
8712         if (check_col(pinfo->cinfo, COL_PROTOCOL)){
8713                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "H.225.0");
8714         }
8715         if (check_col(pinfo->cinfo, COL_INFO)){
8716                 col_clear(pinfo->cinfo, COL_INFO);
8717         }
8718
8719         it=proto_tree_add_protocol_format(tree, proto_h225, tvb, 0, tvb_length(tvb), "H.225.0 CS");
8720         tr=proto_item_add_subtree(it, ett_h225);
8721
8722         offset=dissect_per_sequence(tvb, offset, pinfo, tr, hf_h225_H323_UserInformation, ett_h225_H323_UserInformation, H323_UserInformation_sequence);
8723
8724         tap_queue_packet(h225_tap, pinfo, &h225_pi);
8725 }
8726
8727
8728
8729 void
8730 dissect_h225ras(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
8731 {
8732         dissect_tpkt_encap(tvb, pinfo, tree, h225_reassembly, h225ras_handle);
8733 }
8734
8735
8736
8737 void
8738 proto_register_h225(void)
8739 {
8740         static hf_register_info hf[] =
8741         {
8742         { &hf_h225_PresentationIndicator,
8743                 { "PresentationIndicator", "h225.PresentationIndicator", FT_UINT32, BASE_DEC,
8744                 VALS(PresentationIndicator_vals), 0, "PresentationIndicator choice", HFILL }},
8745         { &hf_h225_CryptoH323Token,
8746                 { "CryptoH323Token", "h225.CryptoH323Token", FT_UINT32, BASE_DEC,
8747                 VALS(CryptoH323Token_vals), 0, "CryptoH323Token choice", HFILL }},
8748         { &hf_h225_conferenceGoal,
8749                 { "conferenceGoal", "h225.conferenceGoal", FT_UINT32, BASE_DEC,
8750                 VALS(conferenceGoal_vals), 0, "conferenceGoal choice", HFILL }},
8751         { &hf_h225_ScnConnectionType,
8752                 { "ScnConnectionType", "h225.ScnConnectionType", FT_UINT32, BASE_DEC,
8753                 VALS(ScnConnectionType_vals), 0, "ScnConnectionType choice", HFILL }},
8754         { &hf_h225_ScnConnectionAggregation,
8755                 { "ScnConnectionAggregation", "h225.ScnConnectionAggregation", FT_UINT32, BASE_DEC,
8756                 VALS(ScnConnectionAggregation_vals), 0, "ScnConnectionAggregation choice", HFILL }},
8757         { &hf_h225_FacilityReason,
8758                 { "FacilityReason", "h225.FacilityReason", FT_UINT32, BASE_DEC,
8759                 VALS(FacilityReason_vals), 0, "FacilityReason choice", HFILL }},
8760         { &hf_h225_PublicTypeOfNumber,
8761                 { "PublicTypeOfNumber", "h225.PublicTypeOfNumber", FT_UINT32, BASE_DEC,
8762                 VALS(PublicTypeOfNumber_vals), 0, "PublicTypeOfNumber choice", HFILL }},
8763         { &hf_h225_PrivateTypeOfNumber,
8764                 { "PrivateTypeOfNumber", "h225.PrivateTypeOfNumber", FT_UINT32, BASE_DEC,
8765                 VALS(PrivateTypeOfNumber_vals), 0, "PrivateTypeOfNumber choice", HFILL }},
8766         { &hf_h225_UseSpecifiedTransport,
8767                 { "UseSpecifiedTransport", "h225.UseSpecifiedTransport", FT_UINT32, BASE_DEC,
8768                 VALS(UseSpecifiedTransport_vals), 0, "UseSpecifiedTransport choice", HFILL }},
8769         { &hf_h225_SecurityErrors,
8770                 { "SecurityErrors", "h225.SecurityErrors", FT_UINT32, BASE_DEC,
8771                 VALS(SecurityErrors_vals), 0, "SecurityErrors choice", HFILL }},
8772         { &hf_h225_SecurityErrors2,
8773                 { "SecurityErrors2", "h225.SecurityErrors2", FT_UINT32, BASE_DEC,
8774                 VALS(SecurityErrors2_vals), 0, "SecurityErrors2 choice", HFILL }},
8775         { &hf_h225_ServiceControlSession_reason,
8776                 { "ServiceControlSession_reason", "h225.ServiceControlSession_reason", FT_UINT32, BASE_DEC,
8777                 VALS(ServiceControlSession_reason_vals), 0, "ServiceControlSession_reason choice", HFILL }},
8778         { &hf_h225_billingMode,
8779                 { "billingMode", "h225.billingMode", FT_UINT32, BASE_DEC,
8780                 VALS(billingMode_vals), 0, "billingMode choice", HFILL }},
8781         { &hf_h225_CCSCcallStartingPoint,
8782                 { "CCSCcallStartingPoint", "h225.CCSCcallStartingPoint", FT_UINT32, BASE_DEC,
8783                 VALS(CCSCcallStartingPoint_vals), 0, "CCSCcallStartingPoint choice", HFILL }},
8784         { &hf_h225_GatekeeperRejectReason,
8785                 { "GatekeeperRejectReason", "h225.GatekeeperRejectReason", FT_UINT32, BASE_DEC,
8786                 VALS(GatekeeperRejectReason_vals), 0, "GatekeeperRejectReason choice", HFILL }},
8787         { &hf_h225_UnregRequestReason,
8788                 { "UnregRequestReason", "h225.UnregRequestReason", FT_UINT32, BASE_DEC,
8789                 VALS(UnregRequestReason_vals), 0, "UnregRequestReason choice", HFILL }},
8790         { &hf_h225_UnregRejectReason,
8791                 { "UnregRejectReason", "h225.UnregRejectReason", FT_UINT32, BASE_DEC,
8792                 VALS(UnregRejectReason_vals), 0, "UnregRejectReason choice", HFILL }},
8793         { &hf_h225_CallType,
8794                 { "CallType", "h225.CallType", FT_UINT32, BASE_DEC,
8795                 VALS(CallType_vals), 0, "CallType choice", HFILL }},
8796         { &hf_h225_CallModel,
8797                 { "CallModel", "h225.CallModel", FT_UINT32, BASE_DEC,
8798                 VALS(CallModel_vals), 0, "CallModel choice", HFILL }},
8799         { &hf_h225_TransportQOS,
8800                 { "TransportQOS", "h225.TransportQOS", FT_UINT32, BASE_DEC,
8801                 VALS(TransportQOS_vals), 0, "TransportQOS choice", HFILL }},
8802         { &hf_h225_BandRejectReason,
8803                 { "BandRejectReason", "h225.BandRejectReason", FT_UINT32, BASE_DEC,
8804                 VALS(BandRejectReason_vals), 0, "BandRejectReason choice", HFILL }},
8805         { &hf_h225_DisengageReason,
8806                 { "DisengageReason", "h225.DisengageReason", FT_UINT32, BASE_DEC,
8807                 VALS(DisengageReason_vals), 0, "DisengageReason choice", HFILL }},
8808         { &hf_h225_DisengageRejectReason,
8809                 { "DisengageRejectReason", "h225.DisengageRejectReason", FT_UINT32, BASE_DEC,
8810                 VALS(DisengageRejectReason_vals), 0, "DisengageRejectReason choice", HFILL }},
8811         { &hf_h225_InfoRequestNakReason,
8812                 { "InfoRequestNakReason", "h225.InfoRequestNakReason", FT_UINT32, BASE_DEC,
8813                 VALS(InfoRequestNakReason_vals), 0, "InfoRequestNakReason choice", HFILL }},
8814         { &hf_h225_SCRresult,
8815                 { "SCRresult", "h225.SCRresult", FT_UINT32, BASE_DEC,
8816                 VALS(SCRresult_vals), 0, "SCRresult choice", HFILL }},
8817         { &hf_h225_GatekeeperInfo,
8818                 { "GatekeeperInfo", "h225.GatekeeperInfo", FT_NONE, BASE_NONE,
8819                 NULL, 0, "GatekeeperInfo sequence", HFILL }},
8820         { &hf_h225_SecurityServiceMode_encryption,
8821                 { "Encryption", "h225.SecurityServiceMode_encryption", FT_UINT32, BASE_DEC,
8822                 VALS(SecurityServiceMode_vals), 0, "Encryption SecurityServiceMode choice", HFILL }},
8823         { &hf_h225_SecurityServiceMode_authentication,
8824                 { "Authentication", "h225.SecurityServiceMode_authentication", FT_UINT32, BASE_DEC,
8825                 VALS(SecurityServiceMode_vals), 0, "Authentication SecurityServiceMode choice", HFILL }},
8826         { &hf_h225_SecurityServiceMode_integrity,
8827                 { "Integrity", "h225.SecurityServiceMode_integrity", FT_UINT32, BASE_DEC,
8828                 VALS(SecurityServiceMode_vals), 0, "Integrity SecurityServiceMode choice", HFILL }},
8829         { &hf_h225_SecurityCapabilities_tls,
8830                 { "TLS", "h225.SecurityCapabilities.tls", FT_NONE, BASE_NONE,
8831                 NULL, 0, "TLS SecurityCapabilities sequence", HFILL }},
8832         { &hf_h225_SecurityCapabilities_ipsec,
8833                 { "IPSec", "h225.SecurityCapabilities.ipsec", FT_NONE, BASE_NONE,
8834                 NULL, 0, "IPSec SecurityCapabilities sequence", HFILL }},
8835         { &hf_h225_H245Security,
8836                 { "H245Security", "h225.H245Security", FT_UINT32, BASE_DEC,
8837                 VALS(H245Security_vals), 0, "H245Security choice", HFILL }},
8838         { &hf_h225_nonStandardUsageTypes,
8839                 { "nonStandardUsageTypes", "h225.nonStandardUsageTypes", FT_NONE, BASE_NONE,
8840                 NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
8841         { &hf_h225_nonStandardUsageTypes_item,
8842                 { "nonStandardUsageTypes", "h225.nonStandardUsageTypes_item", FT_NONE, BASE_NONE,
8843                 NULL, 0, "NonStandardParameter", HFILL }},
8844         { &hf_h225_route,
8845                 { "route", "h225.route", FT_NONE, BASE_NONE,
8846                 NULL, 0, "Source Routing route", HFILL }},
8847         { &hf_h225_RasUsageInfoTypes,
8848                 { "RasUsageInfoTypes", "h225.RasUsageInfoTypes", FT_NONE, BASE_NONE,
8849                 NULL, 0, "RasUsageInfoTypes sequence", HFILL }},
8850         { &hf_h225_usageReportingCapability,
8851                 { "usageReportingCapability", "h225.usageReportingCapability", FT_NONE, BASE_NONE,
8852                 NULL, 0, "usageReportingCapability sequence", HFILL }},
8853         { &hf_h225_BandWidth,
8854                 { "BandWidth", "h225.BandWidth", FT_UINT32, BASE_DEC,
8855                 NULL, 0, "BandWidth in units of 100bits", HFILL }},
8856         { &hf_h225_channelRate,
8857                 { "channelRate", "h225.channelRate", FT_UINT32, BASE_DEC,
8858                 NULL, 0, "channelRate in units of 100bits", HFILL }},
8859         { &hf_h225_totalBandwidthRestriction,
8860                 { "totalBandwidthRestriction", "h225.totalBandwidthRestriction", FT_UINT32, BASE_DEC,
8861                 NULL, 0, "totalBandwidthRestriction in units of 100bits", HFILL }},
8862         { &hf_h225_allowedBandWidth,
8863                 { "allowedBandWidth", "h225.allowedBandWidth", FT_UINT32, BASE_DEC,
8864                 NULL, 0, "allowedBandWidth in units of 100bits", HFILL }},
8865         { &hf_h225_channelMultiplier,
8866                 { "channelMultiplier", "h225.channelMultiplier", FT_UINT32, BASE_DEC,
8867                 NULL, 0, "channelMultiplier", HFILL }},
8868         { &hf_h225_DataRate,
8869                 { "DataRate", "h225.DataRate", FT_NONE, BASE_NONE,
8870                 NULL, 0, "DataRate sequence", HFILL }},
8871         { &hf_h225_gatewayDataRate,
8872                 { "gatewayDataRate", "h225.gatewayDataRate", FT_NONE, BASE_NONE,
8873                 NULL, 0, "gatewayDataRate sequence", HFILL }},
8874         { &hf_h225_dataRatesSupported,
8875                 { "dataRatesSupported", "h225.dataRatesSupported", FT_NONE, BASE_NONE,
8876                 NULL, 0, "dataRatesSupported sequence of", HFILL }},
8877         { &hf_h225_TerminalInfo,
8878                 { "TerminalInfo", "h225.TerminalInfo", FT_NONE, BASE_NONE,
8879                 NULL, 0, "TerminalInfo sequence", HFILL }},
8880         { &hf_h225_cname,
8881                 { "cname", "h225.cname", FT_STRING, BASE_NONE,
8882                 NULL, 0, "cname", HFILL }},
8883         { &hf_h225_h248Message,
8884                 { "h248Message", "h225.h248Message", FT_STRING, BASE_NONE,
8885                 NULL, 0, "h248Message", HFILL }},
8886         { &hf_h225_conferenceID,
8887                 { "conferenceID", "h225.conferenceID", FT_BYTES, BASE_HEX,
8888                 NULL, 0, "conferenceID", HFILL }},
8889         { &hf_h225_Generic_nonStandard,
8890                 { "nonStandard", "h225.Generic_nonStandard", FT_BYTES, BASE_HEX,
8891                 NULL, 0, "Generic_nonStandard", HFILL }},
8892         { &hf_h225_guid,
8893                 { "guid", "h225.guid", FT_BYTES, BASE_HEX,
8894                 NULL, 0, "guid", HFILL }},
8895         { &hf_h225_replaceWithConferenceInvite,
8896                 { "replaceWithConferenceInvite", "h225.replaceWithConferenceInvite", FT_BYTES, BASE_HEX,
8897                 NULL, 0, "replaceWithConferenceInvite", HFILL }},
8898         { &hf_h225_StimulusControl,
8899                 { "StimulusControl", "h225.StimulusControl", FT_NONE, BASE_NONE,
8900                 NULL, 0, "StimulusControl sequence", HFILL }},
8901         { &hf_h225_ReleaseCompleteReason,
8902                 { "ReleaseCompleteReason", "h225.ReleaseCompleteReason", FT_UINT32, BASE_DEC,
8903                 VALS(ReleaseCompleteReason_vals), 0, "ReleaseCompleteReason choice", HFILL }},
8904         { &hf_h225_numberOfScnConnections,
8905                 { "numberOfScnConnections", "h225.numberOfScnConnections", FT_UINT32, BASE_DEC,
8906                 NULL, 0, "numberOfScnConnections", HFILL }},
8907         { &hf_h225_connectionParameters,
8908                 { "connectionParameters", "h225.connectionParameters", FT_NONE, BASE_NONE,
8909                 NULL, 0, "connectionParameters sequence", HFILL }},
8910         { &hf_h225_RequestSeqNum,
8911                 { "RequestSeqNum", "h225.RequestSeqNum", FT_UINT32, BASE_DEC,
8912                 NULL, 0, "RequestSeqNum", HFILL }},
8913         { &hf_h225_RasUsageSpecification_when,
8914                 { "RasUsageSpecification_when", "h225.RasUsageSpecification_when", FT_NONE, BASE_NONE,
8915                 NULL, 0, "RasUsageSpecification_when sequence", HFILL }},
8916         { &hf_h225_RasUsageSpecification_callStartingPoint,
8917                 { "RasUsageSpecification_callStartingPoint", "h225.RasUsageSpecification_callStartingPoint", FT_NONE, BASE_NONE,
8918                 NULL, 0, "RasUsageSpecification_callStartingPoint sequence", HFILL }},
8919         { &hf_h225_RasUsageSpecification,
8920                 { "RasUsageSpecification", "h225.RasUsageSpecification", FT_NONE, BASE_NONE,
8921                 NULL, 0, "RasUsageSpecification sequence", HFILL }},
8922         { &hf_h225_ipAddress_ip,
8923                 { "IP", "h245.ipAddress.ip", FT_IPv4, BASE_NONE,
8924                 NULL, 0, "IPv4 Address", HFILL }},
8925         { &hf_h225_ipAddress_port,
8926                 { "Port", "h225.ipAddress.port", FT_UINT16, BASE_DEC,
8927                 NULL, 0, "Port number", HFILL }},
8928         { &hf_h225_ipAddress,
8929                 { "ipAddress", "h225.ipAddress", FT_NONE, BASE_NONE,
8930                 NULL, 0, "ipAddress sequence", HFILL }},
8931         { &hf_h225_routing,
8932                 { "routing", "h225.routing", FT_UINT32, BASE_DEC,
8933                 VALS(routing_vals), 0, "routing choice", HFILL }},
8934         { &hf_h225_ipSourceRoute,
8935                 { "ipSourceRoute", "h225.ipSourceRoute", FT_NONE, BASE_NONE,
8936                 NULL, 0, "ipSourceRoute sequence", HFILL }},
8937         { &hf_h225_ipxNode,
8938                 { "Node", "h225.ipx.node", FT_BYTES, BASE_HEX,
8939                 NULL, 0, "ipx node", HFILL }},
8940         { &hf_h225_ipxNetnum,
8941                 { "Netnum", "h225.ipx.netnum", FT_BYTES, BASE_HEX,
8942                 NULL, 0, "ipx netnum", HFILL }},
8943         { &hf_h225_ipxPort,
8944                 { "Port", "h225.ipx.port", FT_BYTES, BASE_HEX,
8945                 NULL, 0, "ipx port number", HFILL }},
8946         { &hf_h225_ipxAddress,
8947                 { "ipxAddress", "h225.ipxAddress", FT_NONE, BASE_NONE,
8948                 NULL, 0, "ipxAddress sequence", HFILL }},
8949         { &hf_h225_ipv6Address_ip,
8950                 { "IP", "h225.ipv6Address.ip", FT_BYTES, BASE_HEX,
8951                 NULL, 0, "ipv6 address", HFILL }},
8952         { &hf_h225_ipv6Address_port,
8953                 { "Port", "h225.ipv6Address.port", FT_UINT16, BASE_DEC,
8954                 NULL, 0, "Port number", HFILL }},
8955         { &hf_h225_ip6Address,
8956                 { "ip6Address", "h225.ip6Address", FT_NONE, BASE_NONE,
8957                 NULL, 0, "ip6Address sequence", HFILL }},
8958         { &hf_h225_netBios,
8959                 { "netBios", "h225.netBios", FT_BYTES, BASE_HEX,
8960                 NULL, 0, "netBios octet string", HFILL }},
8961         { &hf_h225_nsap,
8962                 { "nsap", "h225.nsap", FT_BYTES, BASE_HEX,
8963                 NULL, 0, "nsap octet string", HFILL }},
8964         { &hf_h225_rasAddress,
8965                 { "rasAddress", "h225.rasAddress", FT_UINT32, BASE_DEC,
8966                 VALS(TransportAddress_vals), 0, "rasAddress choice", HFILL }},
8967         { &hf_h225_TransportAddress,
8968                 { "TransportAddress", "h225.TransportAddress", FT_UINT32, BASE_DEC,
8969                 VALS(TransportAddress_vals), 0, "TransportAddress choice", HFILL }},
8970         { &hf_h225_replyAddress,
8971                 { "replyAddress", "h225.replyAddress", FT_UINT32, BASE_DEC,
8972                 VALS(TransportAddress_vals), 0, "replyAddress choice", HFILL }},
8973         { &hf_h225_h245Address,
8974                 { "h245Address", "h225.h245Address", FT_UINT32, BASE_DEC,
8975                 VALS(TransportAddress_vals), 0, "h245Address choice", HFILL }},
8976         { &hf_h225_destCallSignalAddress,
8977                 { "destCallSignalAddress", "h225.destCallSignalAddress", FT_UINT32, BASE_DEC,
8978                 VALS(TransportAddress_vals), 0, "destCallSignalAddress choice", HFILL }},
8979         { &hf_h225_sourceCallSignalAddress,
8980                 { "sourceCallSignalAddress", "h225.sourceCallSignalAddress", FT_UINT32, BASE_DEC,
8981                 VALS(TransportAddress_vals), 0, "sourceCallSignalAddress choice", HFILL }},
8982         { &hf_h225_CallSignalAddress2,
8983                 { "CallSignalAddress2", "h225.CallSignalAddress2", FT_UINT32, BASE_DEC,
8984                 VALS(TransportAddress_vals), 0, "CallSignalAddress2 choice", HFILL }},
8985         { &hf_h225_alternativeAddress,
8986                 { "alternativeAddress", "h225.alternativeAddress", FT_UINT32, BASE_DEC,
8987                 VALS(TransportAddress_vals), 0, "alternativeAddress choice", HFILL }},
8988         { &hf_h225_transportID,
8989                 { "transportID", "h225.transportID", FT_UINT32, BASE_DEC,
8990                 VALS(TransportAddress_vals), 0, "transportID choice", HFILL }},
8991         { &hf_h225_sendAddress,
8992                 { "sendAddress", "h225.sendAddress", FT_UINT32, BASE_DEC,
8993                 VALS(TransportAddress_vals), 0, "sendAddress choice", HFILL }},
8994         { &hf_h225_recvAddress,
8995                 { "recvAddress", "h225.recvAddress", FT_UINT32, BASE_DEC,
8996                 VALS(TransportAddress_vals), 0, "recvAddress choice", HFILL }},
8997         { &hf_h225_rtpAddress,
8998                 { "rtpAddress", "h225.rtpAddress", FT_NONE, BASE_NONE,
8999                 NULL, 0, "rtpAddress sequence", HFILL }},
9000         { &hf_h225_rtcpAddress,
9001                 { "rtcpAddress", "h225.rtcpAddress", FT_NONE, BASE_NONE,
9002                 NULL, 0, "rtcpAddress sequence", HFILL }},
9003         { &hf_h225_h245,
9004                 { "h245", "h225.h245", FT_NONE, BASE_NONE,
9005                 NULL, 0, "h245 sequence", HFILL }},
9006         { &hf_h225_callSignaling,
9007                 { "callSignaling", "h225.callSignaling", FT_NONE, BASE_NONE,
9008                 NULL, 0, "callSignaling sequence", HFILL }},
9009         { &hf_h225_carrierName,
9010                 { "carrierName", "h225.carrierName", FT_BYTES, BASE_HEX,
9011                 NULL, 0, "carrierName IA5String", HFILL }},
9012         { &hf_h225_carrierIdentificationCode,
9013                 { "carrierIdentificationCode", "h225.carrierIdentificationCode", FT_BYTES, BASE_HEX,
9014                 NULL, 0, "carrierIdentificationCode octet string", HFILL }},
9015         { &hf_h225_CarrierInfo,
9016                 { "CarrierInfo", "h225.CarrierInfo", FT_NONE, BASE_NONE,
9017                 NULL, 0, "CarrierInfo sequence", HFILL }},
9018         { &hf_h225_segment,
9019                 { "segment", "h225.segment", FT_UINT32, BASE_DEC,
9020                 NULL, 0, "segment", HFILL }},
9021         { &hf_h225_InfoRequestResponseStatus,
9022                 { "InfoRequestResponseStatus", "h225.InfoRequestResponseStatus", FT_UINT32, BASE_DEC,
9023                 VALS(InfoRequestResponseStatus_vals), 0, "InfoRequestResponseStatus choice", HFILL }},
9024         { &hf_h225_CallIdentifier,
9025                 { "CallIdentifier", "h225.CallIdentifier", FT_NONE, BASE_NONE,
9026                 NULL, 0, "CallIdentifier sequence", HFILL }},
9027         { &hf_h225_globalCallId,
9028                 { "globalCallId", "h225.globalCallId", FT_BYTES, BASE_HEX,
9029                 NULL, 0, "globalCallId octet string", HFILL }},
9030         { &hf_h225_threadId,
9031                 { "threadId", "h225.threadId", FT_BYTES, BASE_HEX,
9032                 NULL, 0, "threadId octet string", HFILL }},
9033         { &hf_h225_CallLinkage,
9034                 { "CallLinkage", "h225.CallLinkage", FT_NONE, BASE_NONE,
9035                 NULL, 0, "CallLinkage sequence", HFILL }},
9036         { &hf_h225_tokens,
9037                 { "tokens", "h225.tokens", FT_NONE, BASE_NONE,
9038                 NULL, 0, "tokens sequence of", HFILL }},
9039         { &hf_h225_CryptoH323Tokens,
9040                 { "CryptoH323Tokens", "h225.cryptoh323tokens", FT_NONE, BASE_NONE,
9041                 NULL, 0, "sequence of cryptoh323tokens", HFILL }},
9042         { &hf_h225_needToRegister,
9043                 { "needToRegister", "h225.needToRegister", FT_BOOLEAN, 8,
9044                 TFS(&tfs_needToRegister_bit), 0x01, "needToRegister boolean", HFILL }},
9045         { &hf_h225_priority,
9046                 { "priority", "h225.priority", FT_UINT32, BASE_DEC,
9047                 NULL, 0, "priority", HFILL }},
9048         { &hf_h225_AlternateGK,
9049                 { "AlternateGK", "h225.AlternateGK", FT_NONE, BASE_NONE,
9050                 NULL, 0, "AlternateGK sequence", HFILL }},
9051         { &hf_h225_alternateGatekeeper,
9052                 { "alternateGatekeeper", "h225.alternateGatekeeper", FT_NONE, BASE_NONE,
9053                 NULL, 0, "alternateGatekeeper sequence of", HFILL }},
9054         { &hf_h225_altGKisPermanent,
9055                 { "altGKisPermanent", "h225.altGKisPermanent", FT_BOOLEAN, 8,
9056                 TFS(&tfs_altGKisPermanent_bit), 0x01, "altGKisPermanent boolean", HFILL }},
9057         { &hf_h225_AltGKInfo,
9058                 { "AltGKInfo", "h225.AltGKInfo", FT_NONE, BASE_NONE,
9059                 NULL, 0, "AltGKInfo sequence", HFILL }},
9060         { &hf_h225_annexE,
9061                 { "annexE", "h225.annexE", FT_NONE, BASE_NONE,
9062                 NULL, 0, "annexE sequence of", HFILL }},
9063         { &hf_h225_sctp,
9064                 { "sctp", "h225.sctp", FT_NONE, BASE_NONE,
9065                 NULL, 0, "sctp sequence of", HFILL }},
9066         { &hf_h225_AlternateTransportAddress,
9067                 { "AlternateTransportAddress", "h225.AlternateTransportAddress", FT_NONE, BASE_NONE,
9068                 NULL, 0, "AlternateTransportAddress sequence", HFILL }},
9069         { &hf_h225_setup_bool,
9070                 { "setup_bool", "h225.setup_bool", FT_BOOLEAN, 8,
9071                 TFS(&tfs_setup_bool_bit), 0x01, "setup_bool boolean", HFILL }},
9072         { &hf_h225_callProceeding_bool,
9073                 { "callProceeding_bool", "h225.callProceeding_bool", FT_BOOLEAN, 8,
9074                 TFS(&tfs_callProceeding_bool_bit), 0x01, "callProceeding_bool boolean", HFILL }},
9075         { &hf_h225_connect_bool,
9076                 { "connect_bool", "h225.connect_bool", FT_BOOLEAN, 8,
9077                 TFS(&tfs_connect_bool_bit), 0x01, "connect_bool boolean", HFILL }},
9078         { &hf_h225_alerting_bool,
9079                 { "alerting_bool", "h225.alerting_bool", FT_BOOLEAN, 8,
9080                 TFS(&tfs_alerting_bool_bit), 0x01, "alerting_bool boolean", HFILL }},
9081         { &hf_h225_information_bool,
9082                 { "information_bool", "h225.information_bool", FT_BOOLEAN, 8,
9083                 TFS(&tfs_information_bool_bit), 0x01, "information_bool boolean", HFILL }},
9084         { &hf_h225_releaseComplete_bool,
9085                 { "releaseComplete_bool", "h225.releaseComplete_bool", FT_BOOLEAN, 8,
9086                 TFS(&tfs_releaseComplete_bool_bit), 0x01, "releaseComplete_bool boolean", HFILL }},
9087         { &hf_h225_facility_bool,
9088                 { "facility_bool", "h225.facility_bool", FT_BOOLEAN, 8,
9089                 TFS(&tfs_facility_bool_bit), 0x01, "facility_bool boolean", HFILL }},
9090         { &hf_h225_progress_bool,
9091                 { "progress_bool", "h225.progress_bool", FT_BOOLEAN, 8,
9092                 TFS(&tfs_progress_bool_bit), 0x01, "progress_bool boolean", HFILL }},
9093         { &hf_h225_empty_bool,
9094                 { "empty_bool", "h225.empty_bool", FT_BOOLEAN, 8,
9095                 TFS(&tfs_empty_bool_bit), 0x01, "empty_bool boolean", HFILL }},
9096         { &hf_h225_status_bool,
9097                 { "status_bool", "h225.status_bool", FT_BOOLEAN, 8,
9098                 TFS(&tfs_status_bool_bit), 0x01, "status_bool boolean", HFILL }},
9099         { &hf_h225_statusInquiry_bool,
9100                 { "statusInquiry_bool", "h225.statusInquiry_bool", FT_BOOLEAN, 8,
9101                 TFS(&tfs_statusInquiry_bool_bit), 0x01, "statusInquiry_bool boolean", HFILL }},
9102         { &hf_h225_setupAcknowledge_bool,
9103                 { "setupAcknowledge_bool", "h225.setupAcknowledge_bool", FT_BOOLEAN, 8,
9104                 TFS(&tfs_setupAcknowledge_bool_bit), 0x01, "setupAcknowledge_bool boolean", HFILL }},
9105         { &hf_h225_notify_bool,
9106                 { "notify_bool", "h225.notify_bool", FT_BOOLEAN, 8,
9107                 TFS(&tfs_notify_bool_bit), 0x01, "notify_bool boolean", HFILL }},
9108         { &hf_h225_UUIEsRequested,
9109                 { "UUIEsRequested", "h225.UUIEsRequested", FT_NONE, BASE_NONE,
9110                 NULL, 0, "UUIEsRequested sequence", HFILL }},
9111         { &hf_h225_conferenceCalling,
9112                 { "conferenceCalling", "h225.conferenceCalling", FT_BOOLEAN, 8,
9113                 TFS(&tfs_conferenceCalling_bit), 0x01, "conferenceCalling boolean", HFILL }},
9114         { &hf_h225_threePartyService,
9115                 { "threePartyService", "h225.threePartyService", FT_BOOLEAN, 8,
9116                 TFS(&tfs_threePartyService_bit), 0x01, "threePartyService boolean", HFILL }},
9117         { &hf_h225_Q954Details,
9118                 { "Q954Details", "h225.Q954Details", FT_NONE, BASE_NONE,
9119                 NULL, 0, "Q954Details sequence", HFILL }},
9120         { &hf_h225_q932Full,
9121                 { "q932Full", "h225.q932Full", FT_BOOLEAN, 8,
9122                 TFS(&tfs_q932Full_bit), 0x01, "q932Full boolean", HFILL }},
9123         { &hf_h225_q951Full,
9124                 { "q951Full", "h225.q951Full", FT_BOOLEAN, 8,
9125                 TFS(&tfs_q951Full_bit), 0x01, "q951Full boolean", HFILL }},
9126         { &hf_h225_q952Full,
9127                 { "q952Full", "h225.q952Full", FT_BOOLEAN, 8,
9128                 TFS(&tfs_q952Full_bit), 0x01, "q952Full boolean", HFILL }},
9129         { &hf_h225_q953Full,
9130                 { "q953Full", "h225.q953Full", FT_BOOLEAN, 8,
9131                 TFS(&tfs_q953Full_bit), 0x01, "q953Full boolean", HFILL }},
9132         { &hf_h225_q955Full,
9133                 { "q955Full", "h225.q955Full", FT_BOOLEAN, 8,
9134                 TFS(&tfs_q955Full_bit), 0x01, "q955Full boolean", HFILL }},
9135         { &hf_h225_q956Full,
9136                 { "q956Full", "h225.q956Full", FT_BOOLEAN, 8,
9137                 TFS(&tfs_q956Full_bit), 0x01, "q956Full boolean", HFILL }},
9138         { &hf_h225_q957Full,
9139                 { "q957Full", "h225.q957Full", FT_BOOLEAN, 8,
9140                 TFS(&tfs_q957Full_bit), 0x01, "q957Full boolean", HFILL }},
9141         { &hf_h225_QseriesOptions,
9142                 { "callServices", "h225.callServices", FT_NONE, BASE_NONE,
9143                 NULL, 0, "QseriesOptions sequence", HFILL }},
9144         { &hf_h225_ssrc,
9145                 { "ssrc", "h225.ssrc", FT_UINT32, BASE_DEC,
9146                 NULL, 0, "ssrc", HFILL }},
9147         { &hf_h225_RTPsessionId,
9148                 { "RTPsessionId", "h225.RTPsessionId", FT_UINT32, BASE_DEC,
9149                 NULL, 0, "RTPsessionId", HFILL }},
9150         { &hf_h225_associatedSessionIds,
9151                 { "associatedSessionIds", "h225.associatedSessionIds", FT_NONE, BASE_NONE,
9152                 NULL, 0, "associatedSessionIds sequence of", HFILL }},
9153         { &hf_h225_RTPSession,
9154                 { "RTPSession", "h225.RTPSession", FT_NONE, BASE_NONE,
9155                 NULL, 0, "RTPSession sequence", HFILL }},
9156         { &hf_h225_tunnelledProtocolObjectID,
9157                 { "tunnelledProtocolObjectID", "h225.tunnelledProtocolObjectID", FT_STRING, BASE_NONE,
9158                 NULL, 0, "tunnelledProtocolObjectID object", HFILL }},
9159         { &hf_h225_ProtocolIdentifier,
9160                 { "ProtocolIdentifier", "h225.ProtocolIdentifier", FT_STRING, BASE_NONE,
9161                 NULL, 0, "ProtocolIdentifier object", HFILL }},
9162         { &hf_h225_isoAlgorithm,
9163                 { "isoAlgorithm", "h225.isoAlgorithm", FT_STRING, BASE_NONE,
9164                 NULL, 0, "isoAlgorithm object", HFILL }},
9165         { &hf_h225_algorithmOID,
9166                 { "algorithmOID", "h225.algorithmOID", FT_STRING, BASE_NONE,
9167                 NULL, 0, "algorithmOID object", HFILL }},
9168         { &hf_h225_iso9797,
9169                 { "iso9797", "h225.iso9797", FT_STRING, BASE_NONE,
9170                 NULL, 0, "iso9797 object", HFILL }},
9171         { &hf_h225_hMAC_iso10118_3,
9172                 { "hMAC_iso10118_3", "h225.hMAC_iso10118_3", FT_STRING, BASE_NONE,
9173                 NULL, 0, "hMAC_iso10118_3 object", HFILL }},
9174         { &hf_h225_enterpriseNumber,
9175                 { "enterpriseNumber", "h225.enterpriseNumber", FT_STRING, BASE_NONE,
9176                 NULL, 0, "enterpriseNumber object", HFILL }},
9177         { &hf_h225_Generic_oid,
9178                 { "OID", "h225.Generic_oid", FT_STRING, BASE_NONE,
9179                 NULL, 0, "Generic OID object", HFILL }},
9180         { &hf_h225_StatusUUIE,
9181                 { "StatusUUIE", "h225.StatusUUIE", FT_NONE, BASE_NONE,
9182                 NULL, 0, "StatusUUIE sequence", HFILL }},
9183         { &hf_h225_StatusInquiryUUIE,
9184                 { "StatusInquiryUUIE", "h225.StatusInquiryUUIE", FT_NONE, BASE_NONE,
9185                 NULL, 0, "StatusInquiryUUIE sequence", HFILL }},
9186         { &hf_h225_SetupAcknowledgeUUIE,
9187                 { "SetupAcknowledgeUUIE", "h225.SetupAcknowledgeUUIE", FT_NONE, BASE_NONE,
9188                 NULL, 0, "SetupAcknowledgeUUIE sequence", HFILL }},
9189         { &hf_h225_NotifyUUIE,
9190                 { "NotifyUUIE", "h225.NotifyUUIE", FT_NONE, BASE_NONE,
9191                 NULL, 0, "NotifyUUIE sequence", HFILL }},
9192         { &hf_h225_imsi,
9193                 { "imsi", "h225.imsi", FT_STRING, BASE_HEX,
9194                 NULL, 0, "imsi string", HFILL }},
9195         { &hf_h225_tmsi,
9196                 { "tmsi", "h225.tmsi", FT_BYTES, BASE_HEX,
9197                 NULL, 0, "tmsi octet string", HFILL }},
9198         { &hf_h225_msisdn,
9199                 { "msisdn", "h225.msisdn", FT_STRING, BASE_HEX,
9200                 NULL, 0, "msisdn string", HFILL }},
9201         { &hf_h225_imei,
9202                 { "imei", "h225.imei", FT_STRING, BASE_HEX,
9203                 NULL, 0, "imei string", HFILL }},
9204         { &hf_h225_hplmn,
9205                 { "hplmn", "h225.hplmn", FT_STRING, BASE_HEX,
9206                 NULL, 0, "hplmn string", HFILL }},
9207         { &hf_h225_vplmn,
9208                 { "vplmn", "h225.vplmn", FT_STRING, BASE_HEX,
9209                 NULL, 0, "vplmn string", HFILL }},
9210         { &hf_h225_GSMUIM,
9211                 { "GSMUIM", "h225.GSMUIM", FT_NONE, BASE_NONE,
9212                 NULL, 0, "GSMUIM sequence", HFILL }},
9213         { &hf_h225_sid,
9214                 { "sid", "h225.sid", FT_STRING, BASE_HEX,
9215                 NULL, 0, "sid string", HFILL }},
9216         { &hf_h225_mid,
9217                 { "mid", "h225.mid", FT_STRING, BASE_HEX,
9218                 NULL, 0, "mid string", HFILL }},
9219         { &hf_h225_systemid,
9220                 { "systemid", "h225.sustemid", FT_UINT32, BASE_DEC,
9221                 VALS(systemid_vals), 0, "systemid choice", HFILL }},
9222         { &hf_h225_min,
9223                 { "min", "h225.min", FT_STRING, BASE_HEX,
9224                 NULL, 0, "min string", HFILL }},
9225         { &hf_h225_mdn,
9226                 { "mdn", "h225.mdn", FT_STRING, BASE_HEX,
9227                 NULL, 0, "mdn string", HFILL }},
9228         { &hf_h225_esn,
9229                 { "esn", "h225.esn", FT_STRING, BASE_HEX,
9230                 NULL, 0, "esn string", HFILL }},
9231         { &hf_h225_mscid,
9232                 { "mscid", "h225.mscid", FT_STRING, BASE_HEX,
9233                 NULL, 0, "mscid string", HFILL }},
9234         { &hf_h225_systemMyTypeCode,
9235                 { "systemMyTypeCode", "h225.systemMyTypeCode", FT_BYTES, BASE_HEX,
9236                 NULL, 0, "systemMyTypeCode octet string", HFILL }},
9237         { &hf_h225_systemAccessType,
9238                 { "systemAccessType", "h225.systemAccessType", FT_BYTES, BASE_HEX,
9239                 NULL, 0, "systemAccessType octet string", HFILL }},
9240         { &hf_h225_qualificationInformationCode,
9241                 { "qualificationInformationCode", "h225.qualificationInformationCode", FT_BYTES, BASE_HEX,
9242                 NULL, 0, "qualificationInformationCode octet string", HFILL }},
9243         { &hf_h225_sesn,
9244                 { "sesn", "h225.sesn", FT_STRING, BASE_HEX,
9245                 NULL, 0, "sesn string", HFILL }},
9246         { &hf_h225_soc,
9247                 { "soc", "h225.soc", FT_STRING, BASE_HEX,
9248                 NULL, 0, "soc string", HFILL }},
9249         { &hf_h225_ANSI41UIM,
9250                 { "ANSI41UIM", "h225.ANSI41UIM", FT_NONE, BASE_NONE,
9251                 NULL, 0, "ANSI41UIM sequence", HFILL }},
9252         { &hf_h225_MobileUIM,
9253                 { "MobileUIM", "h225.MobileUIM", FT_UINT32, BASE_DEC,
9254                 VALS(MobileUIM_vals), 0, "MobileUIM choice", HFILL }},
9255         { &hf_h225_dataPartyNumber,
9256                 { "dataPartyNumber", "h225.dataPartyNumber", FT_STRING, BASE_HEX,
9257                 NULL, 0, "dataPartyNumber string", HFILL }},
9258         { &hf_h225_telexPartyNumber,
9259                 { "telexPartyNumber", "h225.telexPartyNumber", FT_STRING, BASE_HEX,
9260                 NULL, 0, "telexPartyNumber string", HFILL }},
9261         { &hf_h225_nationalStandardPartyNumber,
9262                 { "nationalStandardPartyNumber", "h225.nationalStandardPartyNumber", FT_STRING, BASE_HEX,
9263                 NULL, 0, "nationalStandardPartyNumber string", HFILL }},
9264         { &hf_h225_publicNumberDigits,
9265                 { "publicNumberDigits", "h225.publicNumberDigits", FT_STRING, BASE_HEX,
9266                 NULL, 0, "publicNumberDigits string", HFILL }},
9267         { &hf_h225_privateNumberDigits,
9268                 { "privateNumberDigits", "h225.privateNumberDigits", FT_STRING, BASE_HEX,
9269                 NULL, 0, "privateNumberDigits string", HFILL }},
9270         { &hf_h225_e164Number,
9271                 { "e164Number", "h225.e164Number", FT_NONE, BASE_NONE,
9272                 NULL, 0, "e164Number sequence", HFILL }},
9273         { &hf_h225_privateNumber,
9274                 { "privateNumber", "h225.privateNumber", FT_NONE, BASE_NONE,
9275                 NULL, 0, "privateNumber sequence", HFILL }},
9276         { &hf_h225_startOfRange,
9277                 { "startOfRange", "h225.startOfRange", FT_UINT32, BASE_DEC,
9278                 VALS(PartyNumber_vals), 0, "startOfRange choice", HFILL }},
9279         { &hf_h225_endOfRange,
9280                 { "endOfRange", "h225.endOfRange", FT_UINT32, BASE_DEC,
9281                 VALS(PartyNumber_vals), 0, "endOfRange choice", HFILL }},
9282         { &hf_h225_PartyNumber,
9283                 { "PartyNumber", "h225.PartyNumber", FT_UINT32, BASE_DEC,
9284                 VALS(PartyNumber_vals), 0, "PartyNumber choice", HFILL }},
9285         { &hf_h225_protocolType,
9286                 { "protocolType", "h225.protocolType", FT_STRING, BASE_HEX,
9287                 NULL, 0, "protocolType IA5String", HFILL }},
9288         { &hf_h225_protocolVariant,
9289                 { "protocolVariant", "h225.protocolVariant", FT_STRING, BASE_HEX,
9290                 NULL, 0, "protocolVariant IA5String", HFILL }},
9291         { &hf_h225_TunnelledProtocolAlternateIdentifier,
9292                 { "TunnelledProtocolAlternateIdentifier", "h225.TunnelledProtocolAlternateIdentifier", FT_NONE, BASE_NONE,
9293                 NULL, 0, "TunnelledProtocolAlternateIdentifier sequence", HFILL }},
9294         { &hf_h225_dialedDigits,
9295                 { "dialedDigits", "h225.dialedDigits", FT_BYTES, BASE_HEX,
9296                 NULL, 0, "dialedDigits IA5String", HFILL }},
9297         { &hf_h225_urlId,
9298                 { "urlId", "h225.urlId", FT_BYTES, BASE_HEX,
9299                 NULL, 0, "urlId IA5String", HFILL }},
9300         { &hf_h225_h323ID,
9301                 { "h323ID", "h225.h323ID", FT_STRING, BASE_HEX,
9302                 NULL, 0, "h323ID BMPString", HFILL }},
9303         { &hf_h225_GatekeeperIdentifier,
9304                 { "GatekeeperIdentifier", "h225.GatekeeperIdentifier", FT_STRING, BASE_HEX,
9305                 NULL, 0, "GatekeeperIdentifier BMPString", HFILL }},
9306         { &hf_h225_unicode,
9307                 { "unicode", "h225.unicode", FT_STRING, BASE_HEX,
9308                 NULL, 0, "unicode BMPString", HFILL }},
9309         { &hf_h225_EndpointIdentifier,
9310                 { "EndpointIdentifier", "h225.EndpointIdentifier", FT_STRING, BASE_HEX,
9311                 NULL, 0, "EndpointIdentifier BMPString", HFILL }},
9312         { &hf_h225_emailId,
9313                 { "emailId", "h225.emailId", FT_STRING, BASE_NONE,
9314                 NULL, 0, "emailId IA5String", HFILL }},
9315         { &hf_h225_conferenceAlias,
9316                 { "conferenceAlias", "h225.conferenceAlias", FT_UINT32, BASE_DEC,
9317                 VALS(AliasAddress_vals), 0, "conferenceAlias choice", HFILL }},
9318         { &hf_h225_AliasAddress,
9319                 { "AliasAddress", "h225.AliasAddress", FT_UINT32, BASE_DEC,
9320                 VALS(AliasAddress_vals), 0, "AliasAddress choice", HFILL }},
9321         { &hf_h225_RemoteExtensionAddress,
9322                 { "RemoteExtensionAddress", "h225.RemoteExtensionAddress", FT_UINT32, BASE_DEC,
9323                 VALS(AliasAddress_vals), 0, "RemoteExtensionAddress choice", HFILL }},
9324         { &hf_h225_wildcard,
9325                 { "wildcard", "h225.wildcard", FT_UINT32, BASE_DEC,
9326                 VALS(AliasAddress_vals), 0, "wildcard choice", HFILL }},
9327         { &hf_h225_prefix,
9328                 { "prefix", "h225.prefix", FT_UINT32, BASE_DEC,
9329                 VALS(AliasAddress_vals), 0, "prefix choice", HFILL }},
9330         { &hf_h225_SupportedPrefix,
9331                 { "SupportedPrefix", "h225.SupportedPrefix", FT_NONE, BASE_NONE,
9332                 NULL, 0, "SupportedPrefix sequence", HFILL }},
9333         { &hf_h225_SupportedPrefixes,
9334                 { "SupportedPrefixes", "h225.SupportedPrefixes", FT_NONE, BASE_NONE,
9335                 NULL, 0, "SupportedPrefixes sequence of", HFILL }},
9336         { &hf_h225_H310Caps,
9337                 { "H310Caps", "h225.H310Caps", FT_NONE, BASE_NONE,
9338                 NULL, 0, "H310Caps sequence", HFILL }},
9339         { &hf_h225_H320Caps,
9340                 { "H320Caps", "h225.H320Caps", FT_NONE, BASE_NONE,
9341                 NULL, 0, "H320Caps sequence", HFILL }},
9342         { &hf_h225_H321Caps,
9343                 { "H321Caps", "h225.H321Caps", FT_NONE, BASE_NONE,
9344                 NULL, 0, "H321Caps sequence", HFILL }},
9345         { &hf_h225_H322Caps,
9346                 { "H322Caps", "h225.H322Caps", FT_NONE, BASE_NONE,
9347                 NULL, 0, "H322Caps sequence", HFILL }},
9348         { &hf_h225_H323Caps,
9349                 { "H323Caps", "h225.H323Caps", FT_NONE, BASE_NONE,
9350                 NULL, 0, "H323Caps sequence", HFILL }},
9351         { &hf_h225_H324Caps,
9352                 { "H324Caps", "h225.H324Caps", FT_NONE, BASE_NONE,
9353                 NULL, 0, "H324Caps sequence", HFILL }},
9354         { &hf_h225_VoiceCaps,
9355                 { "VoiceCaps", "h225.VoiceCaps", FT_NONE, BASE_NONE,
9356                 NULL, 0, "VoiceCaps sequence", HFILL }},
9357         { &hf_h225_T120OnlyCaps,
9358                 { "T120OnlyCaps", "h225.T120OnlyCaps", FT_NONE, BASE_NONE,
9359                 NULL, 0, "T120OnlyCaps sequence", HFILL }},
9360         { &hf_h225_NonStandardProtocol,
9361                 { "NonStandardProtocol", "h225.NonStandardProtocol", FT_NONE, BASE_NONE,
9362                 NULL, 0, "NonStandardProtocol sequence", HFILL }},
9363         { &hf_h225_SIPCaps,
9364                 { "SIPCaps", "h225.SIPCaps", FT_NONE, BASE_NONE,
9365                 NULL, 0, "SIPCaps sequence", HFILL }},
9366         { &hf_h225_AddressPattern_range,
9367                 { "AddressPattern_range", "h225.AddressPattern_range", FT_NONE, BASE_NONE,
9368                 NULL, 0, "AddressPattern_range sequence", HFILL }},
9369         { &hf_h225_AddressPattern,
9370                 { "AddressPattern", "h225.AddressPattern", FT_UINT32, BASE_DEC,
9371                 VALS(AddressPattern_vals), 0, "AddressPattern choice", HFILL }},
9372         { &hf_h225_ConferenceList,
9373                 { "ConferenceList", "h225.ConferenceList", FT_NONE, BASE_NONE,
9374                 NULL, 0, "ConferenceList sequence", HFILL }},
9375         { &hf_h225_conferences,
9376                 { "conferences", "h225.conferences", FT_NONE, BASE_NONE,
9377                 NULL, 0, "conferences sequence of", HFILL }},
9378         { &hf_h225_T38FaxAnnexbOnlyCaps,
9379                 { "T38FaxAnnexbOnlyCaps", "h225.T38FaxAnnexbOnlyCaps", FT_NONE, BASE_NONE,
9380                 NULL, 0, "T38FaxAnnexbOnlyCaps sequence", HFILL }},
9381         { &hf_h225_SupportedProtocols,
9382                 { "SupportedProtocols", "h225.SupportedProtocols", FT_UINT32, BASE_DEC,
9383                 VALS(SupportedProtocols_vals), 0, "SupportedProtocols choice", HFILL }},
9384         { &hf_h225_protocol,
9385                 { "protocol", "h225.protocol", FT_NONE, BASE_NONE,
9386                 NULL, 0, "protocol sequence of", HFILL }},
9387         { &hf_h225_GatewayInfo,
9388                 { "GatewayInfo", "h225.GatewayInfo", FT_NONE, BASE_NONE,
9389                 NULL, 0, "GatewayInfo sequence", HFILL }},
9390         { &hf_h225_McuInfo,
9391                 { "McuInfo", "h225.McuInfo", FT_NONE, BASE_NONE,
9392                 NULL, 0, "McuInfo sequence", HFILL }},
9393         { &hf_h225_TunnelledProtocol_id,
9394                 { "id", "h225.TunnelledProtocol_id", FT_UINT32, BASE_DEC,
9395                 VALS(TunnelledProtocol_id_vals), 0, "TunnelledProtocol_id choice", HFILL }},
9396         { &hf_h225_TunnelledProtocol_subIdentifier,
9397                 { "subIdentifier", "h225.TunnelledProtocol_subIdentifier", FT_BYTES, BASE_HEX,
9398                 NULL, 0, "TunnelledProtocol_subIdentifier IA5String", HFILL }},
9399         { &hf_h225_TunnelledProtocol,
9400                 { "TunnelledProtocol", "h225.TunnelledProtocol", FT_NONE, BASE_NONE,
9401                 NULL, 0, "TunnelledProtocol sequence", HFILL }},
9402         { &hf_h225_TunnelledProtocols,
9403                 { "TunnelledProtocols", "h225.TunnelledProtocols", FT_NONE, BASE_NONE,
9404                 NULL, 0, "SEQUENCE OF TunnelledProtocol", HFILL }},
9405         { &hf_h225_desiredTunnelledProtocol,
9406                 { "desiredTunnelledProtocol", "h225.desiredTunnelledProtocol", FT_NONE, BASE_NONE,
9407                 NULL, 0, "desiredTunnelledProtocol sequence", HFILL }},
9408         { &hf_h225_CicInfo_cic_item,
9409                 { "item", "h225.CicInfo_cic_item", FT_BYTES, BASE_HEX,
9410                 NULL, 0, "CicInfo_cic_item octet string", HFILL }},
9411         { &hf_h225_CicInfo_pointCode,
9412                 { "pointCode", "h225.CicInfo_pointCode", FT_BYTES, BASE_HEX,
9413                 NULL, 0, "CicInfo_pointCode octet string", HFILL }},
9414         { &hf_h225_CicInfo_cic,
9415                 { "cic", "h225.CicInfo_cic", FT_NONE, BASE_NONE,
9416                 NULL, 0, "CicInfo_cic sequence of", HFILL }},
9417         { &hf_h225_CicInfo,
9418                 { "CicInfo", "h225.CicInfo", FT_NONE, BASE_NONE,
9419                 NULL, 0, "CicInfo sequence", HFILL }},
9420         { &hf_h225_GroupID_member_item,
9421                 { "item", "h225.GroupID_member_item", FT_UINT32, BASE_DEC,
9422                 NULL, 0, "GroupID_member_item", HFILL }},
9423         { &hf_h225_GroupID_member,
9424                 { "member", "h225.GroupID_member", FT_NONE, BASE_NONE,
9425                 NULL, 0, "GroupID_member sequence of", HFILL }},
9426         { &hf_h225_GroupID_group,
9427                 { "group", "h225.GroupID_group", FT_STRING, BASE_NONE,
9428                 NULL, 0, "GroupID_group IA5String", HFILL }},
9429         { &hf_h225_GroupID,
9430                 { "GroupID", "h225.GroupID", FT_NONE, BASE_NONE,
9431                 NULL, 0, "GroupID sequence", HFILL }},
9432         { &hf_h225_sourceCircuitID,
9433                 { "sourceCircuitID", "h225.sourceCircuitID", FT_NONE, BASE_NONE,
9434                 NULL, 0, "sourceCircuitID sequence", HFILL }},
9435         { &hf_h225_destinationCircuitID,
9436                 { "destinationCircuitID", "h225.destinationCircuitID", FT_NONE, BASE_NONE,
9437                 NULL, 0, "destinationCircuitID sequence", HFILL }},
9438         { &hf_h225_Generic_standard,
9439                 { "standard", "h225.Generic_standard", FT_UINT32, BASE_DEC,
9440                 NULL, 0, "Generic_standard", HFILL }},
9441         { &hf_h225_GenericIdentifier,
9442                 { "GenericIdentifier", "h225.GenericIdentifier", FT_UINT32, BASE_DEC,
9443                 VALS(GenericIdentifier_vals), 0, "GenericIdentifier choice", HFILL }},
9444         { &hf_h225_EnumeratedParameter,
9445                 { "EnumeratedParameter", "h225.EnumeratedParameter", FT_NONE, BASE_NONE,
9446                 NULL, 0, "EnumeratedParameter sequence", HFILL }},
9447         { &hf_h225_parameters,
9448                 { "parameters", "h225.parameters", FT_NONE, BASE_NONE,
9449                 NULL, 0, "parameters sequence of", HFILL }},
9450         { &hf_h225_GenericData,
9451                 { "GenericData", "h225.GenericData", FT_NONE, BASE_NONE,
9452                 NULL, 0, "GenericData sequence", HFILL }},
9453         { &hf_h225_FeatureDescriptor,
9454                 { "FeatureDescriptor", "h225.FeatureDescriptor", FT_NONE, BASE_NONE,
9455                 NULL, 0, "FeatureDescriptor sequence", HFILL }},
9456         { &hf_h225_Content_raw,
9457                 { "Content_raw", "h225.Content_raw", FT_BYTES, BASE_HEX,
9458                 NULL, 0, "Content_raw octet string", HFILL }},
9459         { &hf_h225_Content_text,
9460                 { "Content_text", "h225.Content_text", FT_BYTES, BASE_HEX,
9461                 NULL, 0, "Content_text IA5String", HFILL }},
9462         { &hf_h225_Content,
9463                 { "Content", "h225.Content", FT_UINT32, BASE_DEC,
9464                 VALS(Content_vals), 0, "Content choice", HFILL }},
9465         { &hf_h225_Content_bool,
9466                 { "Content_bool", "h225.Content_bool", FT_BOOLEAN, 8,
9467                 TFS(&tfs_Content_bool_bit), 0x01, "Content_bool boolean", HFILL }},
9468         { &hf_h225_Content_number8,
9469                 { "Content_number8", "h225.Content_number8", FT_UINT32, BASE_DEC,
9470                 NULL, 0, "Content_number8", HFILL }},
9471         { &hf_h225_number16,
9472                 { "number16", "h225.number16", FT_UINT32, BASE_DEC,
9473                 NULL, 0, "number16", HFILL }},
9474         { &hf_h225_Content_number32,
9475                 { "Content_number32", "h225.Content_number32", FT_UINT32, BASE_DEC,
9476                 NULL, 0, "Content_number32", HFILL }},
9477         { &hf_h225_Content_compound,
9478                 { "Content_compound", "h225.Content_compound", FT_NONE, BASE_NONE,
9479                 NULL, 0, "Content_compound sequence of", HFILL }},
9480         { &hf_h225_Content_nested,
9481                 { "Content_nested", "h225.Content_nested", FT_NONE, BASE_NONE,
9482                 NULL, 0, "Content_nested sequence of", HFILL }},
9483         { &hf_h225_replacementFeatureSet,
9484                 { "replacementFeatureSet", "h225.replacementFeatureSet", FT_BOOLEAN, 8,
9485                 TFS(&tfs_replacementFeatureSet_bit), 0x01, "replacementFeatureSet boolean", HFILL }},
9486         { &hf_h225_neededFeatures,
9487                 { "neededFeatures", "h225.neededFeatures", FT_NONE, BASE_NONE,
9488                 NULL, 0, "neededFeatures sequence of", HFILL }},
9489         { &hf_h225_desiredFeatures,
9490                 { "desiredFeatures", "h225.desiredFeatures", FT_NONE, BASE_NONE,
9491                 NULL, 0, "desiredFeatures sequence of", HFILL }},
9492         { &hf_h225_supportedFeatures,
9493                 { "supportedFeatures", "h225.supportedFeatures", FT_NONE, BASE_NONE,
9494                 NULL, 0, "supportedFeatures sequence of", HFILL }},
9495         { &hf_h225_FeatureSet,
9496                 { "FeatureSet", "h225.FeatureSet", FT_NONE, BASE_NONE,
9497                 NULL, 0, "FeatureSet sequence", HFILL }},
9498         { &hf_h225_CallsAvailable_calls,
9499                 { "CallsAvailable_calls", "h225.CallsAvailable_calls", FT_UINT32, BASE_DEC,
9500                 NULL, 0, "CallsAvailable_calls", HFILL }},
9501         { &hf_h225_CallsAvailable_group,
9502                 { "CallsAvailable_group", "h225.CallsAvailable_group", FT_STRING, BASE_HEX,
9503                 NULL, 0, "CallsAvailable_group IA5String", HFILL }},
9504         { &hf_h225_CallsAvailable,
9505                 { "CallsAvailable", "h225.CallsAvailable", FT_NONE, BASE_NONE,
9506                 NULL, 0, "CallsAvailable sequence", HFILL }},
9507         { &hf_h225_voiceGwCallsAvailable,
9508                 { "voiceGwCallsAvailable", "h225.voiceGwCallsAvailable", FT_NONE, BASE_NONE,
9509                 NULL, 0, "voiceGwCallsAvailable sequence of", HFILL }},
9510         { &hf_h225_h310GwCallsAvailable,
9511                 { "h310GwCallsAvailable", "h225.h310GwCallsAvailable", FT_NONE, BASE_NONE,
9512                 NULL, 0, "h310GwCallsAvailable sequence of", HFILL }},
9513         { &hf_h225_h320GwCallsAvailable,
9514                 { "h320GwCallsAvailable", "h225.h320GwCallsAvailable", FT_NONE, BASE_NONE,
9515                 NULL, 0, "h320GwCallsAvailable sequence of", HFILL }},
9516         { &hf_h225_h321GwCallsAvailable,
9517                 { "h321GwCallsAvailable", "h225.h321GwCallsAvailable", FT_NONE, BASE_NONE,
9518                 NULL, 0, "h321GwCallsAvailable sequence of", HFILL }},
9519         { &hf_h225_h322GwCallsAvailable,
9520                 { "h322GwCallsAvailable", "h225.h322GwCallsAvailable", FT_NONE, BASE_NONE,
9521                 NULL, 0, "h322GwCallsAvailable sequence of", HFILL }},
9522         { &hf_h225_h323GwCallsAvailable,
9523                 { "h323GwCallsAvailable", "h225.h323GwCallsAvailable", FT_NONE, BASE_NONE,
9524                 NULL, 0, "h323GwCallsAvailable sequence of", HFILL }},
9525         { &hf_h225_h324GwCallsAvailable,
9526                 { "h324GwCallsAvailable", "h225.h324GwCallsAvailable", FT_NONE, BASE_NONE,
9527                 NULL, 0, "h324GwCallsAvailable sequence of", HFILL }},
9528         { &hf_h225_t120OnlyGwCallsAvailable,
9529                 { "t120OnlyGwCallsAvailable", "h225.t120OnlyGwCallsAvailable", FT_NONE, BASE_NONE,
9530                 NULL, 0, "t120OnlyGwCallsAvailable sequence of", HFILL }},
9531         { &hf_h225_t38FaxAnnexbOnlyGwCallsAvailable,
9532                 { "t38FaxAnnexbOnlyGwCallsAvailable", "h225.t38FaxAnnexbOnlyGwCallsAvailable", FT_NONE, BASE_NONE,
9533                 NULL, 0, "t38FaxAnnexbOnlyGwCallsAvailable sequence of", HFILL }},
9534         { &hf_h225_terminalCallsAvailable,
9535                 { "terminalCallsAvailable", "h225.terminalCallsAvailable", FT_NONE, BASE_NONE,
9536                 NULL, 0, "terminalCallsAvailable sequence of", HFILL }},
9537         { &hf_h225_mcuCallsAvailable,
9538                 { "mcuCallsAvailable", "h225.mcuCallsAvailable", FT_NONE, BASE_NONE,
9539                 NULL, 0, "mcuCallsAvailable sequence of", HFILL }},
9540         { &hf_h225_sipGwCallsAvailable,
9541                 { "sipGwCallsAvailable", "h225.sipGwCallsAvailable", FT_NONE, BASE_NONE,
9542                 NULL, 0, "sipGwCallsAvailable sequence of", HFILL }},
9543         { &hf_h225_maximumCallCapacity,
9544                 { "maximumCallCapacity", "h225.maximumCallCapacity", FT_NONE, BASE_NONE,
9545                 NULL, 0, "maximumCallCapacity sequence", HFILL }},
9546         { &hf_h225_currentCallCapacity,
9547                 { "currentCallCapacity", "h225.currentCallCapacity", FT_NONE, BASE_NONE,
9548                 NULL, 0, "currentCallCapacity sequence", HFILL }},
9549         { &hf_h225_CallCapacity,
9550                 { "CallCapacity", "h225.CallCapacity", FT_NONE, BASE_NONE,
9551                 NULL, 0, "CallCapacity sequence", HFILL }},
9552         { &hf_h225_productID,
9553                 { "productID", "h225.productID", FT_STRING, BASE_HEX,
9554                 NULL, 0, "productID octet string", HFILL }},
9555         { &hf_h225_versionID,
9556                 { "versionID", "h225.versionID", FT_STRING, BASE_HEX,
9557                 NULL, 0, "versionID octet string", HFILL }},
9558         { &hf_h225_VendorIdentifier,
9559                 { "VendorIdentifier", "h225.VendorIdentifier", FT_NONE, BASE_NONE,
9560                 NULL, 0, "VendorIdentifier sequence", HFILL }},
9561         { &hf_h225_canReportCallCapacity,
9562                 { "canReportCallCapacity", "h225.canReportCallCapacity", FT_BOOLEAN, 8,
9563                 TFS(&tfs_canReportCallCapacity_bit), 0x01, "canReportCallCapacity boolean", HFILL }},
9564         { &hf_h225_CapacityReportingCapability,
9565                 { "CapacityReportingCapability", "h225.CapacityReportingCapability", FT_NONE, BASE_NONE,
9566                 NULL, 0, "CapacityReportingCapability sequence", HFILL }},
9567         { &hf_h225_canDisplayAmountString,
9568                 { "canDisplayAmountString", "h225.canDisplayAmountString", FT_BOOLEAN, 8,
9569                 TFS(&tfs_canDisplayAmountString_bit), 0x01, "canDisplayAmountString boolean", HFILL }},
9570         { &hf_h225_canEnforceDurationLimit,
9571                 { "canEnforceDurationLimit", "h225.canEnforceDurationLimit", FT_BOOLEAN, 8,
9572                 TFS(&tfs_canEnforceDurationLimit_bit), 0x01, "canEnforceDurationLimit boolean", HFILL }},
9573         { &hf_h225_CallCreditCapability,
9574                 { "CallCreditCapability", "h225.CallCreditCapability", FT_NONE, BASE_NONE,
9575                 NULL, 0, "CallCreditCapability sequence", HFILL }},
9576         { &hf_h225_BandwidthDetails_sender,
9577                 { "BandwidthDetails_sender", "h225.BandwidthDetails_sender", FT_BOOLEAN, 8,
9578                 TFS(&tfs_BandwidthDetails_sender_bit), 0x01, "BandwidthDetails_sender boolean", HFILL }},
9579         { &hf_h225_BandwidthDetails_multicast,
9580                 { "BandwidthDetails_multicast", "h225.BandwidthDetails_multicast", FT_BOOLEAN, 8,
9581                 TFS(&tfs_BandwidthDetails_multicast_bit), 0x01, "BandwidthDetails_multicast boolean", HFILL }},
9582         { &hf_h225_BandwidthDetails,
9583                 { "BandwidthDetails", "h225.BandwidthDetails", FT_NONE, BASE_NONE,
9584                 NULL, 0, "BandwidthDetails sequence", HFILL }},
9585         { &hf_h225_releaseCompleteCauseIE,
9586                 { "releaseCompleteCauseIE", "h225.releaseCompleteCauseIE", FT_BYTES, BASE_HEX,
9587                 NULL, 0, "releaseCompleteCauseIE octet string", HFILL }},
9588         { &hf_h225_CallTerminationCause,
9589                 { "CallTerminationCause", "h225.CallTerminationCause", FT_UINT32, BASE_DEC,
9590                 VALS(CallTerminationCause_vals), 0, "CallTerminationCause choice", HFILL }},
9591         { &hf_h225_CircuitInfo,
9592                 { "CircuitInfo", "h225.CircuitInfo", FT_NONE, BASE_NONE,
9593                 NULL, 0, "CircuitInfo sequence", HFILL }},
9594         { &hf_h225_genericData,
9595                 { "genericData", "h225.genericData", FT_NONE, BASE_NONE,
9596                 NULL, 0, "genericData sequence of", HFILL }},
9597         { &hf_h225_fastStart_item_length,
9598                 { "fastStart item length", "h225.fastStart_item_length", FT_UINT32, BASE_DEC,
9599                 NULL, 0, "fastStart item length", HFILL }},
9600         { &hf_h225_fastStart,
9601                 { "fastStart", "h225.fastStart", FT_NONE, BASE_NONE,
9602                 NULL, 0, "fastStart sequence of", HFILL }},
9603         { &hf_h225_fastConnectRefused,
9604                 { "fastConnectRefused", "h225.fastConnectRefused", FT_BOOLEAN, 8,
9605                 TFS(&tfs_fastConnectRefused_bit), 0x01, "fastConnectRefused boolean", HFILL }},
9606         { &hf_h225_InformationUUIE,
9607                 { "InformationUUIE", "h225.InformationUUIE", FT_NONE, BASE_NONE,
9608                 NULL, 0, "InformationUUIE sequence", HFILL }},
9609         { &hf_h225_routeCallToSCN,
9610                 { "routeCallToSCN", "h225.routeCallToSCN", FT_NONE, BASE_NONE,
9611                 NULL, 0, "routeCallToSCN sequence of", HFILL }},
9612         { &hf_h225_AdmissionRejectReason,
9613                 { "AdmissionRejectReason", "h225.AdmissionRejectReason", FT_UINT32, BASE_DEC,
9614                 VALS(AdmissionRejectReason_vals), 0, "AdmissionRejectReason choice", HFILL }},
9615         { &hf_h225_hMAC_iso10118_2_s,
9616                 { "hMAC_iso10118_2_s", "h225.hMAC_iso10118_2_s", FT_UINT32, BASE_DEC,
9617                 VALS(EncryptIntAlg_vals), 0, "hMAC_iso10118_2_s choice", HFILL }},
9618         { &hf_h225_hMAC_iso10118_2_l,
9619                 { "hMAC_iso10118_2_l", "h225.hMAC_iso10118_2_l", FT_UINT32, BASE_DEC,
9620                 VALS(EncryptIntAlg_vals), 0, "hMAC_iso10118_2_l choice", HFILL }},
9621         { &hf_h225_NonIsoIntegrityMechanism,
9622                 { "NonIsoIntegrityMechanism", "h225.NonIsoIntegrityMechanism", FT_UINT32, BASE_DEC,
9623                 VALS(NonIsoIntegrityMechanism_vals), 0, "NonIsoIntegrityMechanism choice", HFILL }},
9624         { &hf_h225_IntegrityMechanism,
9625                 { "IntegrityMechanism", "h225.IntegrityMechanism", FT_UINT32, BASE_DEC,
9626                 VALS(IntegrityMechanism_vals), 0, "IntegrityMechanism choice", HFILL }},
9627         { &hf_h225_LocationRejectReason,
9628                 { "LocationRejectReason", "h225.LocationRejectReason", FT_UINT32, BASE_DEC,
9629                 VALS(LocationRejectReason_vals), 0, "LocationRejectReason choice", HFILL }},
9630         { &hf_h225_mc,
9631                 { "mc", "h225.mc", FT_BOOLEAN, 8,
9632                 TFS(&tfs_mc_bit), 0x01, "mc boolean", HFILL }},
9633         { &hf_h225_undefinedNode,
9634                 { "undefinedNode", "h225.undefinedNode", FT_BOOLEAN, 8,
9635                 TFS(&tfs_undefinedNode_bit), 0x01, "undefinedNode boolean", HFILL }},
9636         { &hf_h225_destinationInfo,
9637                 { "destinationInfo", "h225.destinationInfo", FT_NONE, BASE_NONE,
9638                 NULL, 0, "destinationInfo sequence", HFILL }},
9639         { &hf_h225_EndPointType,
9640                 { "EndPointType", "h225.EndPointType", FT_NONE, BASE_NONE,
9641                 NULL, 0, "EndPointType sequence", HFILL }},
9642         { &hf_h225_terminalType,
9643                 { "terminalType", "h225.terminalType", FT_NONE, BASE_NONE,
9644                 NULL, 0, "terminalType sequence", HFILL }},
9645         { &hf_h225_sourceInfo,
9646                 { "sourceInfo", "h225.sourceInfo", FT_NONE, BASE_NONE,
9647                 NULL, 0, "sourceInfo sequence", HFILL }},
9648         { &hf_h225_multipleCalls,
9649                 { "multipleCalls", "h225.multipleCalls", FT_BOOLEAN, 8,
9650                 TFS(&tfs_multipleCalls_bit), 0x01, "multipleCalls boolean", HFILL }},
9651         { &hf_h225_maintainConnection,
9652                 { "maintainConnection", "h225.maintainConnection", FT_BOOLEAN, 8,
9653                 TFS(&tfs_maintainConnection_bit), 0x01, "maintainConnection boolean", HFILL }},
9654         { &hf_h225_CallProceedingUUIE,
9655                 { "CallProceedingUUIE", "h225.CallProceedingUUIE", FT_NONE, BASE_NONE,
9656                 NULL, 0, "CallProceedingUUIE sequence", HFILL }},
9657         { &hf_h225_CapacityReportingSpecification_when,
9658                 { "CapacityReportingSpecification_when", "h225.CapacityReportingSpecification_when", FT_NONE, BASE_NONE,
9659                 NULL, 0, "CapacityReportingSpecification_when sequence", HFILL }},
9660         { &hf_h225_CapacityReportingSpecification,
9661                 { "CapacityReportingSpecification", "h225.CapacityReportingSpecification", FT_NONE, BASE_NONE,
9662                 NULL, 0, "CapacityReportingSpecification sequence", HFILL }},
9663         { &hf_h225_ProgressUUIE,
9664                 { "ProgressUUIE", "h225.ProgressUUIE", FT_NONE, BASE_NONE,
9665                 NULL, 0, "ProgressUUIE sequence", HFILL }},
9666         { &hf_h225_EndPoint,
9667                 { "EndPoint", "h225.EndPoint", FT_NONE, BASE_NONE,
9668                 NULL, 0, "EndPoint sequence", HFILL }},
9669         { &hf_h225_destinationType,
9670                 { "destinationType", "h225.destinationType", FT_NONE, BASE_NONE,
9671                 NULL, 0, "destinationType sequence", HFILL }},
9672         { &hf_h225_destExtraCallInfo,
9673                 { "destExtraCallInfo", "h225.destExtraCallInfo", FT_NONE, BASE_NONE,
9674                 NULL, 0, "destExtraCallInfo sequence of", HFILL }},
9675         { &hf_h225_remoteExtensionAddress,
9676                 { "remoteExtensionAddress", "h225.remoteExtensionAddress", FT_NONE, BASE_NONE,
9677                 NULL, 0, "remoteExtensionAddress sequence of", HFILL }},
9678         { &hf_h225_aliasAddress_sequence,
9679                 { "aliasAddress_sequence", "h225.aliasAddress_sequence", FT_NONE, BASE_NONE,
9680                 NULL, 0, "aliasAddress_sequence sequence of", HFILL }},
9681         { &hf_h225_rasAddress_sequence,
9682                 { "rasAddress_sequence", "h225.rasAddress_sequence", FT_NONE, BASE_NONE,
9683                 NULL, 0, "rasAddress_sequence sequence of", HFILL }},
9684         { &hf_h225_callSignalAddress,
9685                 { "callSignalAddress", "h225.callSignalAddress", FT_NONE, BASE_NONE,
9686                 NULL, 0, "callSignalAddress sequence of", HFILL }},
9687         { &hf_h225_ICV,
9688                 { "ICV", "h225.ICV", FT_NONE, BASE_NONE,
9689                 NULL, 0, "ICV sequence", HFILL }},
9690         { &hf_h225_BandwidthConfirm,
9691                 { "BandwidthConfirm", "h225.BandwidthConfirm", FT_NONE, BASE_NONE,
9692                 NULL, 0, "BandwidthConfirm sequence", HFILL }},
9693         { &hf_h225_UnregistrationConfirm,
9694                 { "UnregistrationConfirm", "h225.UnregistrationConfirm", FT_NONE, BASE_NONE,
9695                 NULL, 0, "UnregistrationConfirm sequence", HFILL }},
9696         { &hf_h225_NonStandardMessage,
9697                 { "NonStandardMessage", "h225.NonStandardMessage", FT_NONE, BASE_NONE,
9698                 NULL, 0, "NonStandardMessage sequence", HFILL }},
9699         { &hf_h225_InfoRequestAck,
9700                 { "InfoRequestAck", "h225.InfoRequestAck", FT_NONE, BASE_NONE,
9701                 NULL, 0, "InfoRequestAck sequence", HFILL }},
9702         { &hf_h225_InfoRequestNak,
9703                 { "InfoRequestNak", "h225.InfoRequestNak", FT_NONE, BASE_NONE,
9704                 NULL, 0, "InfoRequestNak sequence", HFILL }},
9705         { &hf_h225_ResourcesAvailableConfirm,
9706                 { "ResourcesAvailableConfirm", "h225.ResourcesAvailableConfirm", FT_NONE, BASE_NONE,
9707                 NULL, 0, "ResourcesAvailableConfirm sequence", HFILL }},
9708         { &hf_h225_GatekeeperRequest,
9709                 { "GatekeeperRequest", "h225.GatekeeperRequest", FT_NONE, BASE_NONE,
9710                 NULL, 0, "GatekeeperRequest sequence", HFILL }},
9711         { &hf_h225_integrity,
9712                 { "integrity", "h225.integrity", FT_NONE, BASE_NONE,
9713                 NULL, 0, "integrity sequence of", HFILL }},
9714         { &hf_h225_algorithmOIDs,
9715                 { "algorithmOIDs", "h225.algorithmOIDs", FT_NONE, BASE_NONE,
9716                 NULL, 0, "algorithmOIDs sequence of", HFILL }},
9717         { &hf_h225_alternateEndpoints,
9718                 { "alternateEndpoints", "h225.alternateEndpoints", FT_NONE, BASE_NONE,
9719                 NULL, 0, "alternateEndpoints sequence of", HFILL }},
9720         { &hf_h225_endpointAlias,
9721                 { "endpointAlias", "h225.endpointAlias", FT_NONE, BASE_NONE,
9722                 NULL, 0, "endpointAlias sequence of", HFILL }},
9723         { &hf_h225_ServiceControlResponse,
9724                 { "ServiceControlResponse", "h225.ServiceControlResponse", FT_NONE, BASE_NONE,
9725                 NULL, 0, "ServiceControlResponse sequence", HFILL }},
9726         { &hf_h225_DisengageReject,
9727                 { "DisengageReject", "h225.DisengageReject", FT_NONE, BASE_NONE,
9728                 NULL, 0, "DisengageReject sequence", HFILL }},
9729         { &hf_h225_BandwidthReject,
9730                 { "BandwidthReject", "h225.BandwidthReject", FT_NONE, BASE_NONE,
9731                 NULL, 0, "BandwidthReject sequence", HFILL }},
9732         { &hf_h225_UnregistrationReject,
9733                 { "UnregistrationReject", "h225.UnregistrationReject", FT_NONE, BASE_NONE,
9734                 NULL, 0, "UnregistrationReject sequence", HFILL }},
9735         { &hf_h225_UnregistrationRequest,
9736                 { "UnregistrationRequest", "h225.UnregistrationRequest", FT_NONE, BASE_NONE,
9737                 NULL, 0, "UnregistrationRequest sequence", HFILL }},
9738         { &hf_h225_endpointAliasPattern,
9739                 { "endpointAliasPattern", "h225.endpointAliasPattern", FT_NONE, BASE_NONE,
9740                 NULL, 0, "endpointAliasPattern sequence of", HFILL }},
9741         { &hf_h225_RegistrationReject,
9742                 { "RegistrationReject", "h225.RegistrationReject", FT_NONE, BASE_NONE,
9743                 NULL, 0, "RegistrationReject sequence", HFILL }},
9744         { &hf_h225_invalidTerminalAliases,
9745                 { "invalidTerminalAliases", "h225.invalidTerminalAliases", FT_NONE, BASE_NONE,
9746                 NULL, 0, "invalidTerminalAliases sequence", HFILL }},
9747         { &hf_h225_terminalAlias,
9748                 { "terminalAlias", "h225.terminalAlias", FT_NONE, BASE_NONE,
9749                 NULL, 0, "terminalAlias sequence of", HFILL }},
9750         { &hf_h225_terminalAliasPattern,
9751                 { "terminalAliasPattern", "h225.terminalAliasPattern", FT_NONE, BASE_NONE,
9752                 NULL, 0, "terminalAliasPattern sequence of", HFILL }},
9753         { &hf_h225_RegistrationRejectReason,
9754                 { "RegistrationRejectReason", "h225.RegistrationRejectReason", FT_UINT32, BASE_DEC,
9755                 VALS(RegistrationRejectReason_vals), 0, "RegistrationRejectReason choice", HFILL }},
9756         { &hf_h225_duplicateAlias,
9757                 { "duplicateAlias", "h225.duplicateAlias", FT_NONE, BASE_NONE,
9758                 NULL, 0, "duplicateAlias sequence of", HFILL }},
9759         { &hf_h225_GatekeeperReject,
9760                 { "GatekeeperReject", "h225.GatekeeperReject", FT_NONE, BASE_NONE,
9761                 NULL, 0, "GatekeeperReject sequence", HFILL }},
9762         { &hf_h225_almostOutOfResources,
9763                 { "almostOutOfResources", "h225.almostOutOfResources", FT_BOOLEAN, 8,
9764                 TFS(&tfs_almostOutOfResources_bit), 0x01, "almostOutOfResources boolean", HFILL }},
9765         { &hf_h225_ResourcesAvailableIndicate,
9766                 { "ResourcesAvailableIndicate", "h225.ResourcesAvailableIndicate", FT_NONE, BASE_NONE,
9767                 NULL, 0, "ResourcesAvailableIndicate sequence", HFILL }},
9768         { &hf_h225_protocols,
9769                 { "protocols", "h225.protocols", FT_NONE, BASE_NONE,
9770                 NULL, 0, "protocols sequence of", HFILL }},
9771         { &hf_h225_callDurationLimit,
9772                 { "callDurationLimit", "h225.callDurationLimit", FT_UINT32, BASE_DEC,
9773                 NULL, 0, "callDurationLimit", HFILL }},
9774         { &hf_h225_enforceCallDurationLimit,
9775                 { "enforceCallDurationLimit", "h225.enforceCallDurationLimit", FT_BOOLEAN, 8,
9776                 TFS(&tfs_enforceCallDurationLimit_bit), 0x01, "enforceCallDurationLimit boolean", HFILL }},
9777         { &hf_h225_CallCreditServiceControl,
9778                 { "CallCreditServiceControl", "h225.CallCreditServiceControl", FT_NONE, BASE_NONE,
9779                 NULL, 0, "CallCreditServiceControl sequence", HFILL }},
9780         { &hf_h225_ScreeningIndicator,
9781                 { "ScreeningIndicator", "h225.ScreeningIndicator", FT_UINT32, BASE_DEC,
9782                 VALS(ScreeningIndicator_vals), 0, "ScreeningIndicator", HFILL }},
9783         { &hf_h225_ExtendedAliasAddress,
9784                 { "ExtendedAliasAddress", "h225.ExtendedAliasAddress", FT_NONE, BASE_NONE,
9785                 NULL, 0, "ExtendedAliasAddress sequence", HFILL }},
9786         { &hf_h225_messageNotUnderstood,
9787                 { "messageNotUnderstood", "h225.messageNotUnderstood", FT_BYTES, BASE_HEX,
9788                 NULL, 0, "messageNotUnderstood octet string", HFILL }},
9789         { &hf_h225_UnknownMessageResponse,
9790                 { "UnknownMessageResponse", "h225.UnknownMessageResponse", FT_NONE, BASE_NONE,
9791                 NULL, 0, "UnknownMessageResponse sequence", HFILL }},
9792         { &hf_h225_CallReferenceValue,
9793                 { "CallReferenceValue", "h225.CallReferenceValue", FT_UINT32, BASE_DEC,
9794                 NULL, 0, "CallReferenceValue", HFILL }},
9795         { &hf_h225_AdmissionRequest,
9796                 { "AdmissionRequest", "h225.AdmissionRequest", FT_NONE, BASE_NONE,
9797                 NULL, 0, "AdmissionRequest sequence", HFILL }},
9798         { &hf_h225_canMapSrcAlias,
9799                 { "canMapSrcAlias", "h225.canMapSrcAlias", FT_BOOLEAN, 8,
9800                 TFS(&tfs_canMapSrcAlias_bit), 0x01, "canMapSrcAlias boolean", HFILL }},
9801         { &hf_h225_desiredProtocols,
9802                 { "desiredProtocols", "h225.desiredProtocols", FT_NONE, BASE_NONE,
9803                 NULL, 0, "desiredProtocols sequence of", HFILL }},
9804         { &hf_h225_willSupplyUUIEs,
9805                 { "willSupplyUUIEs", "h225.willSupplyUUIEs", FT_BOOLEAN, 8,
9806                 TFS(&tfs_willSupplyUUIEs_bit), 0x01, "willSupplyUUIEs boolean", HFILL }},
9807         { &hf_h225_destAlternatives,
9808                 { "destAlternatives", "h225.destAlternatives", FT_NONE, BASE_NONE,
9809                 NULL, 0, "destAlternatives sequence of", HFILL }},
9810         { &hf_h225_srcAlternatives,
9811                 { "srcAlternatives", "h225.srcAlternatives", FT_NONE, BASE_NONE,
9812                 NULL, 0, "srcAlternatives sequence of", HFILL }},
9813         { &hf_h225_canMapAlias,
9814                 { "canMapAlias", "h225.canMapAlias", FT_BOOLEAN, 8,
9815                 TFS(&tfs_canMapAlias_bit), 0x01, "canMapAlias boolean", HFILL }},
9816         { &hf_h225_activeMC,
9817                 { "activeMC", "h225.activeMC", FT_BOOLEAN, 8,
9818                 TFS(&tfs_activeMC_bit), 0x01, "activeMC boolean", HFILL }},
9819         { &hf_h225_srcInfo,
9820                 { "srcInfo", "h225.srcInfo", FT_NONE, BASE_NONE,
9821                 NULL, 0, "srcInfo sequence of", HFILL }},
9822         { &hf_h225_DestinationInfo,
9823                 { "DestinationInfo", "h225.DestinationInfo", FT_NONE, BASE_NONE,
9824                 NULL, 0, "DestinationInfo sequence of", HFILL }},
9825         { &hf_h225_InfoRequest,
9826                 { "InfoRequest", "h225.InfoRequest", FT_NONE, BASE_NONE,
9827                 NULL, 0, "InfoRequest sequence", HFILL }},
9828         { &hf_h225_nextSegmentRequested,
9829                 { "nextSegmentRequested", "h225.nextSegmentRequested", FT_UINT32, BASE_DEC,
9830                 NULL, 0, "nextSegmentRequested", HFILL }},
9831         { &hf_h225_delay,
9832                 { "delay", "h225.delay", FT_UINT32, BASE_DEC,
9833                 NULL, 0, "delay", HFILL }},
9834         { &hf_h225_RequestInProgress,
9835                 { "RequestInProgress", "h225.RequestInProgress", FT_NONE, BASE_NONE,
9836                 NULL, 0, "RequestInProgress sequence", HFILL }},
9837         { &hf_h225_H248SignalsDescriptor,
9838                 { "H248SignalsDescriptor", "h225.H248SignalsDescriptor", FT_BYTES, BASE_HEX,
9839                 NULL, 0, "H248SignalsDescriptor octet string", HFILL }},
9840         { &hf_h225_url,
9841                 { "url", "h225.url", FT_BYTES, BASE_HEX,
9842                 NULL, 0, "url IA5String", HFILL }},
9843         { &hf_h225_ServiceControlDescriptor,
9844                 { "ServiceControlDescriptor", "h225.ServiceControlDescriptor", FT_UINT32, BASE_DEC,
9845                 VALS(ServiceControlDescriptor_vals), 0, "ServiceControlDescriptor choice", HFILL }},
9846         { &hf_h225_ServiceControlSession,
9847                 { "ServiceControlSession", "h225.ServiceControlSession", FT_NONE, BASE_NONE,
9848                 NULL, 0, "ServiceControlSession sequence", HFILL }},
9849         { &hf_h225_sessionId,
9850                 { "sessionId", "h225.sessionId", FT_UINT32, BASE_DEC,
9851                 NULL, 0, "sessionId", HFILL }},
9852         { &hf_h225_AlertingUUIE,
9853                 { "AlertingUUIE", "h225.AlertingUUIE", FT_NONE, BASE_NONE,
9854                 NULL, 0, "AlertingUUIE sequence", HFILL }},
9855         { &hf_h225_serviceControl,
9856                 { "serviceControl", "h225.serviceControl", FT_NONE, BASE_NONE,
9857                 NULL, 0, "serviceControl sequence of", HFILL }},
9858         { &hf_h225_alertingAddress,
9859                 { "alertingAddress", "h225.alertingAddress", FT_NONE, BASE_NONE,
9860                 NULL, 0, "alertingAddress sequence of", HFILL }},
9861         { &hf_h225_ReleaseCompleteUUIE,
9862                 { "ReleaseCompleteUUIE", "h225.ReleaseCompleteUUIE", FT_NONE, BASE_NONE,
9863                 NULL, 0, "ReleaseCompleteUUIE sequence", HFILL }},
9864         { &hf_h225_busyAddress,
9865                 { "busyAddress", "h225.busyAddress", FT_NONE, BASE_NONE,
9866                 NULL, 0, "busyAddress sequence of", HFILL }},
9867         { &hf_h225_FacilityUUIE,
9868                 { "FacilityUUIE", "h225.FacilityUUIE", FT_NONE, BASE_NONE,
9869                 NULL, 0, "FacilityUUIE sequence", HFILL }},
9870         { &hf_h225_alternativeAliasAddress,
9871                 { "alternativeAliasAddress", "h225.alternativeAliasAddress", FT_NONE, BASE_NONE,
9872                 NULL, 0, "alternativeAliasAddress sequence of", HFILL }},
9873         { &hf_h225_AdmissionReject,
9874                 { "AdmissionReject", "h225.AdmissionReject", FT_NONE, BASE_NONE,
9875                 NULL, 0, "AdmissionReject sequence", HFILL }},
9876         { &hf_h225_hopCount,
9877                 { "hopCount", "h225.hopCount", FT_UINT32, BASE_DEC,
9878                 NULL, 0, "hopCount", HFILL }},
9879         { &hf_h225_parallelH245Control,
9880                 { "parallelH245Control", "h225.parallelH245Control", FT_NONE, BASE_NONE,
9881                 NULL, 0, "parallelH245Control sequence of", HFILL }},
9882         { &hf_h225_language,
9883                 { "language", "h225.language", FT_BYTES, BASE_HEX,
9884                 NULL, 0, "language IA5String", HFILL }},
9885         { &hf_h225_languages,
9886                 { "languages", "h225.languages", FT_NONE, BASE_NONE,
9887                 NULL, 0, "languages sequence of", HFILL }},
9888         { &hf_h225_mediaWaitForConnect,
9889                 { "mediaWaitForConnect", "h225.mediaWaitForConnect", FT_BOOLEAN, 8,
9890                 TFS(&tfs_mediaWaitForConnect_bit), 0x01, "mediaWaitForConnect boolean", HFILL }},
9891         { &hf_h225_canOverlapSend,
9892                 { "canOverlapSend", "h225.canOverlapSend", FT_BOOLEAN, 8,
9893                 TFS(&tfs_canOverlapSend_bit), 0x01, "canOverlapSend boolean", HFILL }},
9894         { &hf_h225_SetupUUIE,
9895                 { "SetupUUIE", "h225.SetupUUIE", FT_NONE, BASE_NONE,
9896                 NULL, 0, "SetupUUIE sequence", HFILL }},
9897         { &hf_h225_sourceAddress,
9898                 { "sourceAddress", "h225.sourceAddress", FT_NONE, BASE_NONE,
9899                 NULL, 0, "sourceAddress sequence of", HFILL }},
9900         { &hf_h225_destinationAddress,
9901                 { "destinationAddress", "h225.destinationAddress", FT_NONE, BASE_NONE,
9902                 NULL, 0, "destinationAddress sequence of", HFILL }},
9903         { &hf_h225_destExtraCRV,
9904                 { "destExtraCRV", "h225.destExtraCRV", FT_NONE, BASE_NONE,
9905                 NULL, 0, "destExtraCRV sequence of", HFILL }},
9906         { &hf_h225_h245SecurityCapability,
9907                 { "h245SecurityCapability", "h225.h245SecurityCapability", FT_NONE, BASE_NONE,
9908                 NULL, 0, "h245SecurityCapability sequence of", HFILL }},
9909         { &hf_h225_additionalSourceAddresses,
9910                 { "additionalSourceAddresses", "h225.additionalSourceAddresses", FT_NONE, BASE_NONE,
9911                 NULL, 0, "additionalSourceAddresses sequence of", HFILL }},
9912         { &hf_h225_ConnectUUIE,
9913                 { "ConnectUUIE", "h225.ConnectUUIE", FT_NONE, BASE_NONE,
9914                 NULL, 0, "ConnectUUIE sequence", HFILL }},
9915         { &hf_h225_connectedAddress,
9916                 { "connectedAddress", "h225.connectedAddress", FT_NONE, BASE_NONE,
9917                 NULL, 0, "connectedAddress sequence of", HFILL }},
9918         { &hf_h225_h323_message_body,
9919                 { "h323_message_body", "h225.h323_message_body", FT_UINT32, BASE_DEC,
9920                 VALS(h323_message_body_vals), 0, "h323_message_body choice", HFILL }},
9921         { &hf_h225_LocationConfirm,
9922                 { "LocationConfirm", "h225.LocationConfirm", FT_NONE, BASE_NONE,
9923                 NULL, 0, "LocationConfirm sequence", HFILL }},
9924         { &hf_h225_supportedProtocols,
9925                 { "supportedProtocols", "h225.supportedProtocols", FT_NONE, BASE_NONE,
9926                 NULL, 0, "supportedProtocols sequence of", HFILL }},
9927         { &hf_h225_modifiedSrcInfo,
9928                 { "modifiedSrcInfo", "h225.modifiedSrcInfo", FT_NONE, BASE_NONE,
9929                 NULL, 0, "modifiedSrcInfo sequence of", HFILL }},
9930         { &hf_h225_LocationReject,
9931                 { "LocationReject", "h225.LocationReject", FT_NONE, BASE_NONE,
9932                 NULL, 0, "LocationReject sequence", HFILL }},
9933         { &hf_h225_callSpecific,
9934                 { "callSpecific", "h225.callSpecific", FT_NONE, BASE_NONE,
9935                 NULL, 0, "callSpecific sequence", HFILL }},
9936         { &hf_h225_answeredCall,
9937                 { "answeredCall", "h225.answeredCall", FT_BOOLEAN, 8,
9938                 TFS(&tfs_answeredCall_bit), 0x01, "answeredCall boolean", HFILL }},
9939         { &hf_h225_ServiceControlIndication,
9940                 { "ServiceControlIndication", "h225.ServiceControlIndication", FT_NONE, BASE_NONE,
9941                 NULL, 0, "ServiceControlIndication sequence", HFILL }},
9942         { &hf_h225_RasUsageInformation,
9943                 { "RasUsageInformation", "h225.RasUsageInformation", FT_NONE, BASE_NONE,
9944                 NULL, 0, "RasUsageInformation sequence", HFILL }},
9945         { &hf_h225_nonStandardUsageFields,
9946                 { "nonStandardUsageFields", "h225.nonStandardUsageFields", FT_NONE, BASE_NONE,
9947                 NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
9948         { &hf_h225_nonStandardUsageFields_item,
9949                 { "nonStandardUsageFields", "h225.nonStandardUsageFields_item", FT_NONE, BASE_NONE,
9950                 NULL, 0, "NonStandardParameter", HFILL }},
9951         { &hf_h225_TimeToLive,
9952                 { "TimeToLive", "h225.TimeToLive", FT_UINT32, BASE_DEC,
9953                 NULL, 0, "TimeToLive in seconds", HFILL }},
9954         { &hf_h225_GatekeeperConfirm,
9955                 { "GatekeeperConfirm", "h225.GatekeeperConfirm", FT_NONE, BASE_NONE,
9956                 NULL, 0, "GatekeeperConfirm sequence", HFILL }},
9957         { &hf_h225_RegistrationRequest,
9958                 { "RegistrationRequest", "h225.RegistrationRequest", FT_NONE, BASE_NONE,
9959                 NULL, 0, "RegistrationRequest sequence", HFILL }},
9960         { &hf_h225_discoveryComplete,
9961                 { "discoveryComplete", "h225.discoveryComplete", FT_BOOLEAN, 8,
9962                 TFS(&tfs_discoveryComplete_bit), 0x01, "discoveryComplete boolean", HFILL }},
9963         { &hf_h225_keepAlive,
9964                 { "keepAlive", "h225.keepAlive", FT_BOOLEAN, 8,
9965                 TFS(&tfs_keepAlive_bit), 0x01, "keepAlive boolean", HFILL }},
9966         { &hf_h225_H248PackagesDescriptor,
9967                 { "H248PackagesDescriptor", "h225.H248PackagesDescriptor", FT_BYTES, BASE_HEX,
9968                 NULL, 0, "H248PackagesDescriptor octet string", HFILL }},
9969         { &hf_h225_supportedH248Packages,
9970                 { "supportedH248Packages", "h225.supportedH248Packages", FT_NONE, BASE_NONE,
9971                 NULL, 0, "supportedH248Packages sequence of", HFILL }},
9972         { &hf_h225_DisengageConfirm,
9973                 { "DisengageConfirm", "h225.DisengageConfirm", FT_NONE, BASE_NONE,
9974                 NULL, 0, "DisengageConfirm sequence", HFILL }},
9975         { &hf_h225_AdmissionConfirm,
9976                 { "AdmissionConfirm", "h225.AdmissionConfirm", FT_NONE, BASE_NONE,
9977                 NULL, 0, "AdmissionConfirm sequence", HFILL }},
9978         { &hf_h225_irrFrequency,
9979                 { "irrFrequency", "h225.irrFrequency", FT_UINT32, BASE_DEC,
9980                 NULL, 0, "irrFrequency", HFILL }},
9981         { &hf_h225_willRespondToIRR,
9982                 { "willRespondToIRR", "h225.willRespondToIRR", FT_BOOLEAN, 8,
9983                 TFS(&tfs_willRespondToIRR_bit), 0x01, "willRespondToIRR boolean", HFILL }},
9984         { &hf_h225_usageSpec,
9985                 { "usageSpec", "h225.usageSpec", FT_NONE, BASE_NONE,
9986                 NULL, 0, "usageSpec sequence of", HFILL }},
9987         { &hf_h225_DisengageRequest,
9988                 { "DisengageRequest", "h225.DisengageRequest", FT_NONE, BASE_NONE,
9989                 NULL, 0, "DisengageRequest sequence", HFILL }},
9990         { &hf_h225_LocationRequest,
9991                 { "LocationRequest", "h225.LocationRequest", FT_NONE, BASE_NONE,
9992                 NULL, 0, "LocationRequest sequence", HFILL }},
9993         { &hf_h225_SourceInfo,
9994                 { "SourceInfo", "h225.SourceInfo", FT_NONE, BASE_NONE,
9995                 NULL, 0, "SourceInfo sequence of", HFILL }},
9996         { &hf_h225_hopCount255,
9997                 { "hopCount255", "h225.hopCount255", FT_UINT32, BASE_DEC,
9998                 NULL, 0, "hopCount255", HFILL }},
9999         { &hf_h225_sourceEndpointInfo,
10000                 { "sourceEndpointInfo", "h225.sourceEndpointInfo", FT_NONE, BASE_NONE,
10001                 NULL, 0, "sourceEndpointInfo sequence of", HFILL }},
10002         { &hf_h225_BandwidthRequest,
10003                 { "BandwidthRequest", "h225.BandwidthRequest", FT_NONE, BASE_NONE,
10004                 NULL, 0, "BandwidthRequest sequence", HFILL }},
10005         { &hf_h225_bandwidthDetails,
10006                 { "bandwidthDetails", "h225.bandwidthDetails", FT_NONE, BASE_NONE,
10007                 NULL, 0, "bandwidthDetails sequence of", HFILL }},
10008         { &hf_h225_admissionConfirmSequence,
10009                 { "admissionConfirmSequence", "h225.admissionConfirmSequence", FT_NONE, BASE_NONE,
10010                 NULL, 0, "admissionConfirmSequence sequence of", HFILL }},
10011         { &hf_h225_tunnelledSignallingMessage,
10012                 { "tunnelledSignallingMessage", "h225.tunnelledSignallingMessage", FT_NONE, BASE_NONE,
10013                 NULL, 0, "tunnelledSignallingMessage sequence", HFILL }},
10014         { &hf_h225_messageContent_item,
10015                 { "messageContent_item", "h225.messageContent_item", FT_BYTES, BASE_HEX,
10016                 NULL, 0, "messageContent_item octet string", HFILL }},
10017         { &hf_h225_messageContent,
10018                 { "messageContent", "h225.messageContent", FT_NONE, BASE_NONE,
10019                 NULL, 0, "messageContent sequence of", HFILL }},
10020         { &hf_h225_H323_UU_PDU,
10021                 { "H323_UU_PDU", "h225.H323_UU_PDU", FT_NONE, BASE_NONE,
10022                 NULL, 0, "H323_UU_PDU sequence", HFILL }},
10023         { &hf_h225_h4501SupplementaryService,
10024                 { "h4501SupplementaryService", "h225.h4501SupplementaryService", FT_NONE, BASE_NONE,
10025                 NULL, 0, "h4501SupplementaryService sequence of", HFILL }},
10026         { &hf_h225_h245Tunneling,
10027                 { "h245Tunneling", "h225.h245Tunneling", FT_BOOLEAN, 8,
10028                 TFS(&tfs_h245Tunneling_bit), 0x01, "h245Tunneling boolean", HFILL }},
10029         { &hf_h225_h245Control,
10030                 { "h245Control", "h225.h245Control", FT_NONE, BASE_NONE,
10031                 NULL, 0, "h245Control sequence of", HFILL }},
10032         { &hf_h225_nonStandardControl,
10033                 { "nonStandardControl", "h225.nonStandardControl", FT_NONE, BASE_NONE,
10034                 NULL, 0, "SEQUENCE OF NonStandardParameter", HFILL }},
10035         { &hf_h225_nonStandardControl_item,
10036                 { "nonStandardControl", "h225.nonStandardControl_item", FT_NONE, BASE_NONE,
10037                 NULL, 0, "NonStandardParameter", HFILL }},
10038         { &hf_h225_preGrantedARQ,
10039                 { "preGrantedARQ", "h225.preGrantedARQ", FT_NONE, BASE_NONE,
10040                 NULL, 0, "preGrantedARQ sequence", HFILL }},
10041         { &hf_h225_makeCall,
10042                 { "makeCall", "h225.makeCall", FT_BOOLEAN, 8,
10043                 TFS(&tfs_makeCall_bit), 0x01, "makeCall boolean", HFILL }},
10044         { &hf_h225_useGKCallSignalAddressToMakeCall,
10045                 { "useGKCallSignalAddressToMakeCall", "h225.useGKCallSignalAddressToMakeCall", FT_BOOLEAN, 8,
10046                 TFS(&tfs_useGKCallSignalAddressToMakeCall_bit), 0x01, "useGKCallSignalAddressToMakeCall boolean", HFILL }},
10047         { &hf_h225_answerCall,
10048                 { "answerCall", "h225.answerCall", FT_BOOLEAN, 8,
10049                 TFS(&tfs_answerCall_bit), 0x01, "answerCall boolean", HFILL }},
10050         { &hf_h225_useGKCallSignalAddressToAnswer,
10051                 { "useGKCallSignalAddressToAnswer", "h225.useGKCallSignalAddressToAnswer", FT_BOOLEAN, 8,
10052                 TFS(&tfs_useGKCallSignalAddressToAnswer_bit), 0x01, "useGKCallSignalAddressToAnswer boolean", HFILL }},
10053         { &hf_h225_RegistrationConfirm,
10054                 { "RegistrationConfirm", "h225.RegistrationConfirm", FT_NONE, BASE_NONE,
10055                 NULL, 0, "RegistrationConfirm sequence", HFILL }},
10056         { &hf_h225_pdu_item,
10057                 { "pdu_item", "h225.pdu_item", FT_NONE, BASE_NONE,
10058                 NULL, 0, "pdu_item sequence", HFILL }},
10059         { &hf_h225_sent,
10060                 { "sent", "h225.sent", FT_BOOLEAN, 8,
10061                 TFS(&tfs_sent_bit), 0x01, "sent boolean", HFILL }},
10062         { &hf_h225_pdu,
10063                 { "pdu", "h225.pdu", FT_NONE, BASE_NONE,
10064                 NULL, 0, "pdu sequence of", HFILL }},
10065         { &hf_h225_perCallInfo_item,
10066                 { "perCallInfo_item", "h225.perCallInfo_item", FT_NONE, BASE_NONE,
10067                 NULL, 0, "perCallInfo_item sequence", HFILL }},
10068         { &hf_h225_originator,
10069                 { "originator", "h225.originator", FT_BOOLEAN, 8,
10070                 TFS(&tfs_originator_bit), 0x01, "originator boolean", HFILL }},
10071         { &hf_h225_audio,
10072                 { "audio", "h225.audio", FT_NONE, BASE_NONE,
10073                 NULL, 0, "audio sequence of", HFILL }},
10074         { &hf_h225_video,
10075                 { "video", "h225.video", FT_NONE, BASE_NONE,
10076                 NULL, 0, "video sequence of", HFILL }},
10077         { &hf_h225_data,
10078                 { "data", "h225.data", FT_NONE, BASE_NONE,
10079                 NULL, 0, "data sequence of", HFILL }},
10080         { &hf_h225_substituteConfIDs,
10081                 { "substituteConfIDs", "h225.substituteConfIDs", FT_NONE, BASE_NONE,
10082                 NULL, 0, "substituteConfIDs sequence of", HFILL }},
10083         { &hf_h225_perCallInfo,
10084                 { "perCallInfo", "h225.perCallInfo", FT_NONE, BASE_NONE,
10085                 NULL, 0, "perCallInfo sequence of", HFILL }},
10086         { &hf_h225_InfoRequestResponse,
10087                 { "InfoRequestResponse", "h225.InfoRequestResponse", FT_NONE, BASE_NONE,
10088                 NULL, 0, "InfoRequestResponse sequence", HFILL }},
10089         { &hf_h225_needResponse,
10090                 { "needResponse", "h225.needResponse", FT_BOOLEAN, 8,
10091                 TFS(&tfs_needResponse_bit), 0x01, "needResponse boolean", HFILL }},
10092         { &hf_h225_unsolicited,
10093                 { "unsolicited", "h225.unsolicited", FT_BOOLEAN, 8,
10094                 TFS(&tfs_unsolicited_bit), 0x01, "unsolicited boolean", HFILL }},
10095         { &hf_h225_RasMessage,
10096                 { "RasMessage", "h225.RasMessage", FT_UINT32, BASE_DEC,
10097                 VALS(RasMessage_vals), 0, "RasMessage choice", HFILL }},
10098         { &hf_h225_H323_UserInformation,
10099                 { "H323_UserInformation", "h225.H323_UserInformation", FT_NONE, BASE_NONE,
10100                 NULL, 0, "H323_UserInformation sequence", HFILL }},
10101         { &hf_h225_user_data,
10102                 { "user_data", "h225.user_data", FT_NONE, BASE_NONE,
10103                 NULL, 0, "user_data sequence", HFILL }},
10104         { &hf_h225_protocol_discriminator,
10105                 { "protocol_discriminator", "h225.protocol_discriminator", FT_UINT32, BASE_DEC,
10106                 NULL, 0, "protocol_discriminator", HFILL }},
10107         { &hf_h225_user_information,
10108                 { "user_information", "h225.user_information", FT_BYTES, BASE_HEX,
10109                 NULL, 0, "user_information octet string", HFILL }},
10110         { &hf_h225_object,
10111                 { "object", "h225.object", FT_STRING, BASE_NONE,
10112                 NULL, 0, "OBJECT IDENTIFIER", HFILL }},
10113         { &hf_h225_t35CountryCode,
10114                 { "t35CountryCode", "h225.t35CountryCode", FT_UINT32, BASE_DEC,
10115                 VALS(T35CountryCode_vals), 0, "t35CountryCode value", HFILL }},
10116         { &hf_h225_t35Extension,
10117                 { "t35Extension", "h225.t35Extension", FT_UINT32, BASE_DEC,
10118                 NULL, 0, "t35Extension value", HFILL }},
10119         { &hf_h225_manufacturerCode,
10120                 { "manufacturerCode", "h225.manufacturerCode", FT_UINT32, BASE_DEC,
10121                 NULL, 0, "manufacturerCode value", HFILL }},
10122
10123         { &hf_h221Manufacturer,
10124                 { "H.221 Manufacturer", "h221.Manufacturer", FT_UINT32, BASE_HEX,
10125                 VALS(H221ManufacturerCode_vals), 0, "H.221 Manufacturer", HFILL }},
10126
10127         { &hf_h225_h221NonStandard,
10128                 { "h221NonStandard", "h225.h221NonStandard", FT_NONE, BASE_NONE,
10129                 NULL, 0, "H221NonStandard SEQUENCE", HFILL }},
10130         { &hf_h225_nonStandardIdentifier,
10131                 { "nonStandardIdentifier", "h245.NonStandardIdentifier_type", FT_UINT32, BASE_DEC,
10132                 VALS(NonStandardIdentifier_vals), 0, "NonStandardIdentifier CHOICE", HFILL }},
10133         { &hf_h225_nsp_data,
10134                 { "data", "h225.nsp_data", FT_BYTES, BASE_HEX,
10135                 NULL, 0, "OCTET STRING", HFILL }},
10136         { &hf_h225_nonStandardData,
10137                 { "nonStandardData", "h225.nonStandardData", FT_NONE, BASE_NONE,
10138                 NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
10139         { &hf_h225_nonStandard,
10140                 { "nonStandard", "h225.nonStandard", FT_NONE, BASE_NONE,
10141                 NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
10142         { &hf_h225_nonStandardReason,
10143                 { "nonStandardReason", "h225.nonStandardReason", FT_NONE, BASE_NONE,
10144                 NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
10145         { &hf_h225_nonStandardAddress,
10146                 { "nonStandardAddress", "h225.nonStandardAddress", FT_NONE, BASE_NONE,
10147                 NULL, 0, "NonStandardParameter SEQUENCE", HFILL }},
10148         { &hf_h225_ras_req_frame,
10149                 { "RAS Request Frame", "h225.ras.reqframe", FT_FRAMENUM, BASE_NONE,
10150                 NULL, 0, "RAS Request Frame", HFILL }},
10151         { &hf_h225_ras_rsp_frame,
10152                 { "RAS Response Frame", "h225.ras.rspframe", FT_FRAMENUM, BASE_NONE,
10153                 NULL, 0, "RAS Response Frame", HFILL }},
10154         { &hf_h225_ras_dup,
10155                 { "Duplicate RAS Message", "h225.ras.dup", FT_UINT32, BASE_DEC,
10156                 NULL, 0, "Duplicate RAS Message", HFILL }},
10157         { &hf_h225_ras_deltatime,
10158                 { "RAS Service Response Time", "h225.ras.timedelta", FT_RELATIVE_TIME, BASE_NONE,
10159                 NULL, 0, "Timedelta between RAS-Request and RAS-Response", HFILL }},
10160         { &hf_h225_cleartoken,
10161                 { "cleartoken", "h225.cleartoken", FT_NONE, BASE_NONE,
10162                 NULL, 0, "ClearToken", HFILL }},
10163     { &hf_h225_cryptoEPPwdHash,
10164       { "cryptoEPPwdHash", "h225.cryptoEPPwdHash",
10165         FT_NONE, BASE_NONE, NULL, 0,
10166         "CryptoH323Token/cryptoEPPwdHash", HFILL }},
10167     { &hf_h225_timeStamp,
10168       { "timeStamp", "h225.timeStamp",
10169         FT_UINT32, BASE_DEC, NULL, 0,
10170         "", HFILL }},
10171     { &hf_h225_token,
10172       { "token", "h225.token",
10173         FT_NONE, BASE_NONE, NULL, 0,
10174         "", HFILL }},
10175     { &hf_h225_cryptoGKPwdHash,
10176       { "cryptoGKPwdHash", "h225.cryptoGKPwdHash",
10177         FT_NONE, BASE_NONE, NULL, 0,
10178         "CryptoH323Token/cryptoGKPwdHash", HFILL }},
10179     { &hf_h225_cryptoEPPwdEncr,
10180       { "cryptoEPPwdEncr", "h225.cryptoEPPwdEncr",
10181         FT_NONE, BASE_NONE, NULL, 0,
10182         "CryptoH323Token/cryptoEPPwdEncr", HFILL }},
10183     { &hf_h225_cryptoGKPwdEncr,
10184       { "cryptoGKPwdEncr", "h225.cryptoGKPwdEncr",
10185         FT_NONE, BASE_NONE, NULL, 0,
10186         "CryptoH323Token/cryptoGKPwdEncr", HFILL }},
10187     { &hf_h225_cryptoEPCert,
10188       { "cryptoEPCert", "h225.cryptoEPCert",
10189         FT_NONE, BASE_NONE, NULL, 0,
10190         "CryptoH323Token/cryptoEPCert", HFILL }},
10191     { &hf_h225_cryptoGKCert,
10192       { "cryptoGKCert", "h225.cryptoGKCert",
10193         FT_NONE, BASE_NONE, NULL, 0,
10194         "CryptoH323Token/cryptoGKCert", HFILL }},
10195     { &hf_h225_cryptoFastStart,
10196       { "cryptoFastStart", "h225.cryptoFastStart",
10197         FT_NONE, BASE_NONE, NULL, 0,
10198         "CryptoH323Token/cryptoFastStart", HFILL }},
10199     { &hf_h225_nestedcryptoToken,
10200       { "nestedcryptoToken", "h225.nestedcryptoToken",
10201         FT_UINT32, BASE_DEC, VALS(CryptoToken_vals), 0,
10202         "CryptoH323Token/nestedcryptoToken", HFILL }},
10203     { &hf_h225_cryptoTokens_item,
10204       { "CryptoH323Token", "h225.cryptoTokens_item",
10205         FT_UINT32, BASE_DEC, VALS(CryptoH323Token_vals), 0,
10206         "", HFILL }},
10207     { &hf_h225_authenticationCapability,
10208       { "authenticationCapability", "h225.authenticationCapability",
10209         FT_UINT32, BASE_DEC, NULL, 0,
10210         "GatekeeperRequest/authenticationCapability", HFILL }},
10211     { &hf_h225_authenticationCapability_item,
10212       { "authenticationCapability", "h225.authenticationCapability_item",
10213         FT_NONE, BASE_NONE, NULL, 0,
10214         "GatekeeperRequest/authenticationCapability/_item", HFILL }},
10215     { &hf_h225_authenticationMode,
10216       { "authenticationMode", "h225.authenticationMode",
10217         FT_NONE, BASE_NONE, NULL, 0,
10218         "GatekeeperConfirm/authenticationMode", HFILL }},
10219     { &hf_h225_alertingTime,
10220       { "alertingTime", "h225.alertingTime",
10221         FT_UINT32, BASE_DEC, NULL, 0,
10222         "RasUsageInformation/alertingTime", HFILL }},
10223     { &hf_h225_connectTime,
10224       { "connectTime", "h225.connectTime",
10225         FT_UINT32, BASE_DEC, NULL, 0,
10226         "RasUsageInformation/connectTime", HFILL }},
10227     { &hf_h225_endTimeStamp,
10228       { "endTime", "h225.endTime",
10229         FT_UINT32, BASE_DEC, NULL, 0,
10230         "RasUsageInformation/endTime", HFILL }},
10231
10232 /*ddd*/
10233         };
10234
10235         static gint *ett[] =
10236         {
10237                 &ett_h225,
10238                 &ett_h225_SecurityServiceMode_encryption,
10239                 &ett_h225_SecurityServiceMode_authentication,
10240                 &ett_h225_SecurityServiceMode_integrity,
10241                 &ett_h225_H245Security,
10242                 &ett_h225_ReleaseCompleteReason,
10243                 &ett_h225_routing,
10244                 &ett_h225_TransportAddress,
10245                 &ett_h225_InfoRequestResponseStatus,
10246                 &ett_h225_systemid,
10247                 &ett_h225_MobileUIM,
10248                 &ett_h225_PartyNumber,
10249                 &ett_h225_AliasAddress,
10250                 &ett_h225_AddressPattern,
10251                 &ett_h225_SupportedProtocols,
10252                 &ett_h225_GenericIdentifier,
10253                 &ett_h225_Content,
10254                 &ett_h225_CallTerminationCause,
10255                 &ett_h225_AdmissionRejectReason,
10256                 &ett_h225_EncryptIntAlg,
10257                 &ett_h225_NonIsoIntegrityMechanism,
10258                 &ett_h225_IntegrityMechanism,
10259                 &ett_h225_LocationRejectReason,
10260                 &ett_h225_RegistrationRejectReason,
10261                 &ett_h225_ServiceControlDescriptor,
10262                 &ett_h225_h323_message_body,
10263                 &ett_h225_RasMessage,
10264                 &ett_h225_GatekeeperRejectReason,
10265                 &ett_h225_PresentationIndicator,
10266                 &ett_h225_CryptoH323Token,
10267                 &ett_h225_conferenceGoal,
10268                 &ett_h225_ScnConnectionType,
10269                 &ett_h225_ScnConnectionAggregation,
10270                 &ett_h225_FacilityReason,
10271                 &ett_h225_PublicTypeOfNumber,
10272                 &ett_h225_PrivateTypeOfNumber,
10273                 &ett_h225_UseSpecifiedTransport,
10274                 &ett_h225_SecurityErrors,
10275                 &ett_h225_SecurityErrors2,
10276                 &ett_h225_ServiceControlSession_reason,
10277                 &ett_h225_billingMode,
10278                 &ett_h225_CCSCcallStartingPoint,
10279                 &ett_h225_UnregRequestReason,
10280                 &ett_h225_UnregRejectReason,
10281                 &ett_h225_CallType,
10282                 &ett_h225_CallModel,
10283                 &ett_h225_TransportQOS,
10284                 &ett_h225_BandRejectReason,
10285                 &ett_h225_DisengageReason,
10286                 &ett_h225_DisengageRejectReason,
10287                 &ett_h225_InfoRequestNakReason,
10288                 &ett_h225_SCRresult,
10289                 &ett_h225_GatekeeperInfo,
10290                 &ett_h225_SecurityCapabilities_tls,
10291                 &ett_h225_SecurityCapabilities_ipsec,
10292                 &ett_h225_RasUsageInfoTypes,
10293                 &ett_h225_T_nonStandardUsageTypes,
10294                 &ett_h225_DataRate,
10295                 &ett_h225_dataRatesSupported,
10296                 &ett_h225_TerminalInfo,
10297                 &ett_h225_StimulusControl,
10298                 &ett_h225_connectionParameters,
10299                 &ett_h225_RasUsageSpecification_when,
10300                 &ett_h225_RasUsageSpecification_callStartingPoint,
10301                 &ett_h225_RasUsageSpecification,
10302                 &ett_h225_ipAddress,
10303                 &ett_h225_route,
10304                 &ett_h225_ipSourceRoute,
10305                 &ett_h225_ipxAddress,
10306                 &ett_h225_ip6Address,
10307                 &ett_h225_TransportChannelInfo,
10308                 &ett_h225_CarrierInfo,
10309                 &ett_h225_CallIdentifier,
10310                 &ett_h225_CallLinkage,
10311                 &ett_h225_tokens,
10312                 &ett_h225_CryptoH323Tokens,
10313                 &ett_h225_AlternateGK,
10314                 &ett_h225_alternateGatekeeper,
10315                 &ett_h225_AltGKInfo,
10316                 &ett_h225_annexE,
10317                 &ett_h225_sctp,
10318                 &ett_h225_AlternateTransportAddress,
10319                 &ett_h225_UUIEsRequested,
10320                 &ett_h225_Q954Details,
10321                 &ett_h225_QseriesOptions,
10322                 &ett_h225_associatedSessionIds,
10323                 &ett_h225_RTPSession,
10324                 &ett_h225_StatusUUIE,
10325                 &ett_h225_StatusInquiryUUIE,
10326                 &ett_h225_SetupAcknowledgeUUIE,
10327                 &ett_h225_NotifyUUIE,
10328                 &ett_h225_GSMUIM,
10329                 &ett_h225_ANSI41UIM,
10330                 &ett_h225_e164Number,
10331                 &ett_h225_privateNumber,
10332                 &ett_h225_TunnelledProtocolAlternateIdentifier,
10333                 &ett_h225_SupportedPrefix,
10334                 &ett_h225_SupportedPrefixes,
10335                 &ett_h225_H310Caps,
10336                 &ett_h225_H320Caps,
10337                 &ett_h225_H321Caps,
10338                 &ett_h225_H322Caps,
10339                 &ett_h225_H323Caps,
10340                 &ett_h225_H324Caps,
10341                 &ett_h225_VoiceCaps,
10342                 &ett_h225_T120OnlyCaps,
10343                 &ett_h225_NonStandardProtocol,
10344                 &ett_h225_SIPCaps,
10345                 &ett_h225_AddressPattern_range,
10346                 &ett_h225_ConferenceList,
10347                 &ett_h225_conferences,
10348                 &ett_h225_T38FaxAnnexbOnlyCaps,
10349                 &ett_h225_protocol,
10350                 &ett_h225_GatewayInfo,
10351                 &ett_h225_McuInfo,
10352                 &ett_h225_TunnelledProtocol_id,
10353                 &ett_h225_TunnelledProtocol,
10354                 &ett_h225_TunnelledProtocols,
10355                 &ett_h225_CicInfo_cic,
10356                 &ett_h225_CicInfo,
10357                 &ett_h225_GroupID_member,
10358                 &ett_h225_GroupID,
10359                 &ett_h225_CircuitIdentifier,
10360                 &ett_h225_EnumeratedParameter,
10361                 &ett_h225_parameters,
10362                 &ett_h225_GenericData,
10363                 &ett_h225_Content_compound,
10364                 &ett_h225_Content_nested,
10365                 &ett_h225_neededFeatures,
10366                 &ett_h225_desiredFeatures,
10367                 &ett_h225_supportedFeatures,
10368                 &ett_h225_FeatureSet,
10369                 &ett_h225_CallsAvailable,
10370                 &ett_h225_voiceGwCallsAvailable,
10371                 &ett_h225_h310GwCallsAvailable,
10372                 &ett_h225_h320GwCallsAvailable,
10373                 &ett_h225_h321GwCallsAvailable,
10374                 &ett_h225_h322GwCallsAvailable,
10375                 &ett_h225_h323GwCallsAvailable,
10376                 &ett_h225_h324GwCallsAvailable,
10377                 &ett_h225_t120OnlyGwCallsAvailable,
10378                 &ett_h225_t38FaxAnnexbOnlyGwCallsAvailable,
10379                 &ett_h225_terminalCallsAvailable,
10380                 &ett_h225_mcuCallsAvailable,
10381                 &ett_h225_sipGwCallsAvailable,
10382                 &ett_h225_CallCapacityInfo,
10383                 &ett_h225_CallCapacity,
10384                 &ett_h225_VendorIdentifier,
10385                 &ett_h225_CapacityReportingCapability,
10386                 &ett_h225_CallCreditCapability,
10387                 &ett_h225_BandwidthDetails,
10388                 &ett_h225_CircuitInfo,
10389                 &ett_h225_genericData,
10390                 &ett_h225_fastStart,
10391                 &ett_h225_InformationUUIE,
10392                 &ett_h225_routeCallToSCN,
10393                 &ett_h225_EndPointType,
10394                 &ett_h225_CallProceedingUUIE,
10395                 &ett_h225_CapacityReportingSpecification_when,
10396                 &ett_h225_CapacityReportingSpecification,
10397                 &ett_h225_ProgressUUIE,
10398                 &ett_h225_EndPoint,
10399                 &ett_h225_destExtraCallInfo,
10400                 &ett_h225_remoteExtensionAddress,
10401                 &ett_h225_rasAddress_sequence,
10402                 &ett_h225_callSignalAddress,
10403                 &ett_h225_ICV,
10404                 &ett_h225_BandwidthConfirm,
10405                 &ett_h225_UnregistrationConfirm,
10406                 &ett_h225_NonStandardMessage,
10407                 &ett_h225_InfoRequestAck,
10408                 &ett_h225_InfoRequestNak,
10409                 &ett_h225_ResourcesAvailableConfirm,
10410                 &ett_h225_GatekeeperRequest,
10411                 &ett_h225_integrity,
10412                 &ett_h225_algorithmOIDs,
10413                 &ett_h225_alternateEndpoints,
10414                 &ett_h225_endpointAlias,
10415                 &ett_h225_ServiceControlResponse,
10416                 &ett_h225_DisengageReject,
10417                 &ett_h225_BandwidthReject,
10418                 &ett_h225_UnregistrationReject,
10419                 &ett_h225_UnregistrationRequest,
10420                 &ett_h225_endpointAliasPattern,
10421                 &ett_h225_RegistrationReject,
10422                 &ett_h225_invalidTerminalAliases,
10423                 &ett_h225_terminalAlias,
10424                 &ett_h225_terminalAliasPattern,
10425                 &ett_h225_duplicateAlias,
10426                 &ett_h225_GatekeeperReject,
10427                 &ett_h225_ResourcesAvailableIndicate,
10428                 &ett_h225_protocols,
10429                 &ett_h225_CallCreditServiceControl,
10430                 &ett_h225_ExtendedAliasAddress,
10431                 &ett_h225_UnknownMessageResponse,
10432                 &ett_h225_AdmissionRequest,
10433                 &ett_h225_desiredProtocols,
10434                 &ett_h225_destAlternatives,
10435                 &ett_h225_srcAlternatives,
10436                 &ett_h225_srcInfo,
10437                 &ett_h225_DestinationInfo,
10438                 &ett_h225_InfoRequest,
10439                 &ett_h225_RequestInProgress,
10440                 &ett_h225_ServiceControlSession,
10441                 &ett_h225_AlertingUUIE,
10442                 &ett_h225_serviceControl,
10443                 &ett_h225_alertingAddress,
10444                 &ett_h225_ReleaseCompleteUUIE,
10445                 &ett_h225_busyAddress,
10446                 &ett_h225_FacilityUUIE,
10447                 &ett_h225_alternativeAliasAddress,
10448                 &ett_h225_AdmissionReject,
10449                 &ett_h225_parallelH245Control,
10450                 &ett_h225_languages,
10451                 &ett_h225_SetupUUIE,
10452                 &ett_h225_sourceAddress,
10453                 &ett_h225_destinationAddress,
10454                 &ett_h225_destExtraCRV,
10455                 &ett_h225_h245SecurityCapability,
10456                 &ett_h225_additionalSourceAddresses,
10457                 &ett_h225_ConnectUUIE,
10458                 &ett_h225_connectedAddress,
10459                 &ett_h225_LocationConfirm,
10460                 &ett_h225_supportedProtocols,
10461                 &ett_h225_modifiedSrcInfo,
10462                 &ett_h225_LocationReject,
10463                 &ett_h225_callSpecific,
10464                 &ett_h225_ServiceControlIndication,
10465                 &ett_h225_RasUsageInformation,
10466                 &ett_h225_T_nonStandardUsageFields,
10467                 &ett_h225_GatekeeperConfirm,
10468                 &ett_h225_RegistrationRequest,
10469                 &ett_h225_supportedH248Packages,
10470                 &ett_h225_DisengageConfirm,
10471                 &ett_h225_AdmissionConfirm,
10472                 &ett_h225_usageSpec,
10473                 &ett_h225_DisengageRequest,
10474                 &ett_h225_LocationRequest,
10475                 &ett_h225_SourceInfo,
10476                 &ett_h225_sourceEndpointInfo,
10477                 &ett_h225_BandwidthRequest,
10478                 &ett_h225_bandwidthDetails,
10479                 &ett_h225_admissionConfirmSequence,
10480                 &ett_h225_tunnelledSignallingMessage,
10481                 &ett_h225_messageContent,
10482                 &ett_h225_H323_UU_PDU,
10483                 &ett_h225_h4501SupplementaryService,
10484                 &ett_h225_h245Control,
10485                 &ett_h225_T_nonStandardControl,
10486                 &ett_h225_preGrantedARQ,
10487                 &ett_h225_RegistrationConfirm,
10488                 &ett_h225_pdu_item,
10489                 &ett_h225_pdu,
10490                 &ett_h225_perCallInfo_item,
10491                 &ett_h225_audio,
10492                 &ett_h225_video,
10493                 &ett_h225_data,
10494                 &ett_h225_substituteConfIDs,
10495                 &ett_h225_perCallInfo,
10496                 &ett_h225_InfoRequestResponse,
10497                 &ett_h225_H323_UserInformation,
10498                 &ett_h225_user_data,
10499                 &ett_h225_H221NonStandard,
10500                 &ett_h225_NonStandardIdentifier,
10501                 &ett_h225_NonStandardParameter,
10502                 &ett_h225_T_cryptoEPPwdHash,
10503                 &ett_h225_T_cryptoGKPwdHash,
10504                 &ett_h225_aliasAddress_sequence,
10505 /*eee*/
10506         };
10507         module_t *h225_module;
10508
10509         proto_h225 = proto_register_protocol("H225", "H225", "h225");
10510         proto_register_field_array(proto_h225, hf, array_length(hf));
10511         proto_register_subtree_array(ett, array_length(ett));
10512         h225_module = prefs_register_protocol(proto_h225, NULL);
10513         prefs_register_bool_preference(h225_module, "reassembly",
10514                 "Reassemble H.225 over TCP",
10515                 "Whether the dissector should reassemble H.225 PDUs spanning multiple TCP segments",
10516                 &h225_reassembly);
10517         register_dissector("h225", dissect_h225_H323UserInformation, proto_h225);
10518
10519         nsp_object_dissector_table = register_dissector_table("h225.nsp.object", "H.225 NonStandardParameter (object)", FT_STRING, BASE_NONE);
10520         nsp_h221_dissector_table = register_dissector_table("h225.nsp.h221", "H.225 NonStandardParameter (h221)", FT_UINT32, BASE_HEX);
10521         tp_dissector_table = register_dissector_table("h225.tp", "H.225 TunnelledProtocol", FT_STRING, BASE_NONE);
10522
10523         register_init_routine(&h225_init_routine);
10524         h225_tap = register_tap("h225");
10525 }
10526
10527 void
10528 proto_reg_handoff_h225(void)
10529 {
10530         h225ras_handle=create_dissector_handle(dissect_h225_RasMessage, proto_h225);
10531         H323UserInformation_handle=create_dissector_handle(dissect_h225_H323UserInformation, proto_h225);
10532
10533         h245_handle = find_dissector("h245");
10534         h245dg_handle = find_dissector("h245dg");
10535         h4501_handle = find_dissector("h4501");
10536         data_handle = find_dissector("data");
10537
10538         dissector_add("udp.port", UDP_PORT_RAS1, h225ras_handle);
10539         dissector_add("udp.port", UDP_PORT_RAS2, h225ras_handle);
10540 }
10541
10542
10543 static void reset_h225_packet_info(h225_packet_info *pi)
10544 {
10545         if(pi == NULL) {
10546                 return;
10547         }
10548
10549         pi->msg_type = H225_OTHERS;
10550         pi->msg_tag = -1;
10551         pi->reason = -1;
10552         pi->requestSeqNum = 0;
10553         memset(pi->guid,0,16);
10554         pi->is_duplicate = FALSE;
10555         pi->request_available = FALSE;
10556 }
10557
10558 /*
10559         The following function contains the routines for RAS request/response matching.
10560         A RAS response matches with a request, if both messages have the same
10561         RequestSequenceNumber, belong to the same IP conversation and belong to the same
10562         RAS "category" (e.g. Admission, Registration).
10563
10564         We use hashtables to access the lists of RAS calls (request/response pairs).
10565         We have one hashtable for each RAS category. The hashkeys consist of the
10566         non-unique 16-bit RequestSequenceNumber and values representing the conversation.
10567
10568         In big capture files, we might get different requests with identical keys.
10569         These requests aren't necessarily duplicates. They might be valid new requests.
10570         At the moment we just use the timedelta between the last valid and the new request
10571         to decide if the new request is a duplicate or not. There might be better ways.
10572         Two thresholds are defined below.
10573
10574         However the decision is made, another problem arises. We can't just add those
10575         requests to our hashtables. Instead we create lists of RAS calls with identical keys.
10576         The hashtables for RAS calls contain now pointers to the first RAS call in a list of
10577         RAS calls with identical keys.
10578         These lists aren't expected to contain more than 3 items and are usually single item
10579         lists. So we don't need an expensive but intelligent way to access these lists
10580         (e.g. hashtables). Just walk through such a list.
10581 */
10582
10583 #define THRESHOLD_REPEATED_RESPONDED_CALL 300
10584 #define THRESHOLD_REPEATED_NOT_RESPONDED_CALL 1800
10585
10586 static void ras_call_matching(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, h225_packet_info *pi)
10587 {
10588         conversation_t* conversation = NULL;
10589         h225ras_call_info_key h225ras_call_key;
10590         h225ras_call_t *h225ras_call = NULL;
10591         nstime_t delta;
10592         guint msg_category;
10593
10594         if(pi->msg_type == H225_RAS && pi->msg_tag < 21) {
10595                 /* make RAS request/response matching only for tags from 0 to 20 for now */
10596
10597                 msg_category = pi->msg_tag / 3;
10598                 if(pi->msg_tag % 3 == 0) {              /* Request Message */
10599                         conversation = find_conversation(&pinfo->src,
10600                                 &pinfo->dst, pinfo->ptype, pinfo->srcport,
10601                                 pinfo->destport, 0);
10602
10603                         if (conversation == NULL) {
10604                                 /* It's not part of any conversation - create a new one. */
10605                                 conversation = conversation_new(&pinfo->src,
10606                                     &pinfo->dst, pinfo->ptype, pinfo->srcport,
10607                                     pinfo->destport, 0);
10608
10609                         }
10610
10611                         /* prepare the key data */
10612                         h225ras_call_key.reqSeqNum = pi->requestSeqNum;
10613                         h225ras_call_key.conversation = conversation;
10614
10615                         /* look up the request */
10616                         h225ras_call = find_h225ras_call(&h225ras_call_key ,msg_category);
10617
10618                         if (h225ras_call != NULL) {
10619                                 /* We've seen requests with this reqSeqNum, with the same
10620                                    source and destination, before - do we have
10621                                    *this* request already? */
10622                                 /* Walk through list of ras requests with identical keys */
10623                                 do {
10624                                         if (pinfo->fd->num == h225ras_call->req_num) {
10625                                                 /* We have seen this request before -> do nothing */
10626                                                 break;
10627                                         }
10628
10629                                         /* if end of list is reached, exit loop and decide if request is duplicate or not. */
10630                                         if (h225ras_call->next_call == NULL) {
10631                                                 if ( (pinfo->fd->num > h225ras_call->rsp_num && h225ras_call->rsp_num != 0
10632                                                    && pinfo->fd->abs_secs > (guint) (h225ras_call->req_time.secs + THRESHOLD_REPEATED_RESPONDED_CALL) )
10633                                                    ||(pinfo->fd->num > h225ras_call->req_num && h225ras_call->rsp_num == 0
10634                                                    && pinfo->fd->abs_secs > (guint) (h225ras_call->req_time.secs + THRESHOLD_REPEATED_NOT_RESPONDED_CALL) ) )
10635                                                 {
10636                                                         /* if last request has been responded
10637                                                            and this request appears after last response (has bigger frame number)
10638                                                            and last request occured more than 300 seconds ago,
10639                                                            or if last request hasn't been responded
10640                                                            and this request appears after last request (has bigger frame number)
10641                                                            and last request occured more than 1800 seconds ago,
10642                                                            we decide that we have a new request */
10643                                                         /* Append new ras call to list */
10644                                                         h225ras_call = append_h225ras_call(h225ras_call, pinfo, pi->guid, msg_category);
10645                                                 } else {
10646                                                         /* No, so it's a duplicate request.
10647                                                            Mark it as such. */
10648                                                         pi->is_duplicate = TRUE;
10649                                                         proto_tree_add_uint_hidden(tree, hf_h225_ras_dup, tvb, 0,0, pi->requestSeqNum);
10650                                                 }
10651                                                 break;
10652                                         }
10653                                         h225ras_call = h225ras_call->next_call;
10654                                 } while (h225ras_call != NULL );
10655                         }
10656                         else {
10657                                 h225ras_call = new_h225ras_call(&h225ras_call_key, pinfo, pi->guid, msg_category);
10658                         }
10659
10660                         /* add link to response frame, if available */
10661                         if(h225ras_call->rsp_num != 0){
10662                                 proto_tree_add_uint_format(tree, hf_h225_ras_rsp_frame, tvb, 0, 0, h225ras_call->rsp_num,
10663                                         "The response to this request is in frame %u", h225ras_call->rsp_num);
10664                         }
10665
10666                 /* end of request message handling*/
10667                 }
10668                 else {                                  /* Confirm or Reject Message */
10669                         conversation = find_conversation(&pinfo->src,
10670                                 &pinfo->dst, pinfo->ptype, pinfo->srcport,
10671                                 pinfo->destport, 0);
10672                         if (conversation != NULL) {
10673                                 /* look only for matching request, if
10674                                    matching conversation is available. */
10675                                 h225ras_call_key.reqSeqNum = pi->requestSeqNum;
10676                                 h225ras_call_key.conversation = conversation;
10677                                 h225ras_call = find_h225ras_call(&h225ras_call_key ,msg_category);
10678                                 if(h225ras_call) {
10679                                         /* find matching ras_call in list of ras calls with identical keys */
10680                                         do {
10681                                                 if (pinfo->fd->num == h225ras_call->rsp_num) {
10682                                                         /* We have seen this response before -> stop now with matching ras call */
10683                                                         break;
10684                                                 }
10685
10686                                                 /* Break when list end is reached */
10687                                                 if(h225ras_call->next_call == NULL) {
10688                                                         break;
10689                                                 }
10690                                                 h225ras_call = h225ras_call->next_call;
10691                                         } while (h225ras_call != NULL) ;
10692
10693                                         /* if this is an ACF, ARJ or DCF, DRJ, give guid to tap and make it filterable */
10694                                         if (msg_category == 3 || msg_category == 5) {
10695                                                 memcpy(pi->guid, h225ras_call->guid,16);
10696                                                 proto_tree_add_bytes_hidden(tree, hf_h225_guid, tvb, 0, 16, pi->guid);
10697                                         }
10698
10699                                         if (h225ras_call->rsp_num == 0) {
10700                                                 /* We have not yet seen a response to that call, so
10701                                                    this must be the first response; remember its
10702                                                    frame number. */
10703                                                 h225ras_call->rsp_num = pinfo->fd->num;
10704                                         }
10705                                         else {
10706                                                 /* We have seen a response to this call - but was it
10707                                                    *this* response? */
10708                                                 if (h225ras_call->rsp_num != pinfo->fd->num) {
10709                                                         /* No, so it's a duplicate response.
10710                                                            Mark it as such. */
10711                                                         pi->is_duplicate = TRUE;
10712                                                         proto_tree_add_uint_hidden(tree, hf_h225_ras_dup, tvb, 0,0, pi->requestSeqNum);
10713                                                 }
10714                                         }
10715
10716                                         if(h225ras_call->req_num != 0){
10717                                                 h225ras_call->responded = TRUE;
10718                                                 pi->request_available = TRUE;
10719
10720                                                 /* Indicate the frame to which this is a reply. */
10721                                                 proto_tree_add_uint_format(tree, hf_h225_ras_req_frame, tvb, 0, 0, h225ras_call->req_num,
10722                                                         "This is a response to a request in frame %u", h225ras_call->req_num);
10723
10724                                                 /* Calculate RAS Service Response Time */
10725                                                 delta.secs= pinfo->fd->abs_secs-h225ras_call->req_time.secs;
10726                                                 delta.nsecs=pinfo->fd->abs_usecs*1000-h225ras_call->req_time.nsecs;
10727                                                 if(delta.nsecs<0){
10728                                                         delta.nsecs+=1000000000;
10729                                                         delta.secs--;
10730                                                 }
10731                                                 pi->delta_time.secs = delta.secs; /* give it to tap */
10732                                                 pi->delta_time.nsecs = delta.nsecs;
10733
10734                                                 /* display Ras Service Response Time and make it filterable */
10735                                                 proto_tree_add_time(tree, hf_h225_ras_deltatime, tvb, 0, 0, &(pi->delta_time));
10736                                         }
10737                                 }
10738                         }
10739                 }
10740         }
10741 }