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