Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-h460.c
blob0c368688607883df3c03283640cb1f865f80f4cc
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-h460.c */
4 /* asn2wrs.py -q -L -c ./h460.cnf -s ./packet-h460-template -D . -O ../.. NUMBER-PORTABILITY.asn CIRCUIT-STATUS-MAP.asn CALL-PRIORITY.asn QOS-MONITORING-REPORT.asn QOS-MONITORING-EXTENDED-VOIP-REPORT.asn CALL-PARTY-CATEGORY.asn MLPP.asn SIGNALLING-CHANNEL-SUSPEND-REDIRECT.asn SIGNALLING-TRAVERSAL.asn MEDIA-TRAVERSAL.asn MESSAGE-BROADCAST.asn */
6 /* packet-h460.c
7 * Routines for H.460.x packet dissection
8 * 2007 Tomas Kukosa
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include "config.h"
19 #include <epan/packet.h>
20 #include <epan/oids.h>
21 #include <epan/asn1.h>
22 #include <wsutil/array.h>
24 #include "packet-per.h"
25 #include "packet-h225.h"
26 #include "packet-h235.h"
27 #include "packet-h245.h"
29 #define PNAME "H.460 Supplementary Services"
30 #define PSNAME "H.460"
31 #define PFNAME "h460"
33 void proto_register_h460(void);
34 void proto_reg_handoff_h460(void);
36 /* Initialize the protocol and registered fields */
37 static int proto_h460;
39 /* --- Module NUMBER-PORTABILITY --- --- --- */
41 static int hf_h460_2_h460_2_NumberPortabilityInfo_PDU; /* NumberPortabilityInfo */
42 static int hf_h460_2_numberPortabilityRejectReason; /* NumberPortabilityRejectReason */
43 static int hf_h460_2_nUMBERPORTABILITYDATA; /* T_nUMBERPORTABILITYDATA */
44 static int hf_h460_2_addressTranslated; /* NULL */
45 static int hf_h460_2_portedAddress; /* PortabilityAddress */
46 static int hf_h460_2_routingAddress; /* PortabilityAddress */
47 static int hf_h460_2_regionalParams; /* RegionalParameters */
48 static int hf_h460_2_unspecified; /* NULL */
49 static int hf_h460_2_qorPortedNumber; /* NULL */
50 static int hf_h460_2_aliasAddress; /* AliasAddress */
51 static int hf_h460_2_typeOfAddress; /* NumberPortabilityTypeOfNumber */
52 static int hf_h460_2_publicTypeOfNumber; /* PublicTypeOfNumber */
53 static int hf_h460_2_privateTypeOfNumber; /* PrivateTypeOfNumber */
54 static int hf_h460_2_portabilityTypeOfNumber; /* PortabilityTypeOfNumber */
55 static int hf_h460_2_portedNumber; /* NULL */
56 static int hf_h460_2_routingNumber; /* NULL */
57 static int hf_h460_2_concatenatedNumber; /* NULL */
58 static int hf_h460_2_t35CountryCode; /* INTEGER_0_255 */
59 static int hf_h460_2_t35Extension; /* INTEGER_0_255 */
60 static int hf_h460_2_variantIdentifier; /* INTEGER_1_255 */
61 static int hf_h460_2_regionalData; /* OCTET_STRING */
63 /* --- Module CIRCUIT-STATUS-MAP --- --- --- */
65 static int hf_h460_3_h460_3_CircuitStatus_PDU; /* CircuitStatus */
66 static int hf_h460_3_circuitStatusMap; /* SEQUENCE_OF_CircuitStatusMap */
67 static int hf_h460_3_circuitStatusMap_item; /* CircuitStatusMap */
68 static int hf_h460_3_statusType; /* CircuitStatusType */
69 static int hf_h460_3_baseCircuitID; /* CircuitIdentifier */
70 static int hf_h460_3_range; /* INTEGER_0_4095 */
71 static int hf_h460_3_status; /* OCTET_STRING */
72 static int hf_h460_3_serviceStatus; /* NULL */
73 static int hf_h460_3_busyStatus; /* NULL */
75 /* --- Module CALL-PRIORITY --- --- --- */
77 static int hf_h460_4_h460_4_CallPriorityInfo_PDU; /* CallPriorityInfo */
78 static int hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU; /* CountryInternationalNetworkCallOriginationIdentification */
79 static int hf_h460_4_priorityValue; /* T_priorityValue */
80 static int hf_h460_4_emergencyAuthorized; /* NULL */
81 static int hf_h460_4_emergencyPublic; /* NULL */
82 static int hf_h460_4_high; /* NULL */
83 static int hf_h460_4_normal; /* NULL */
84 static int hf_h460_4_priorityExtension; /* INTEGER_0_255 */
85 static int hf_h460_4_tokens; /* SEQUENCE_OF_ClearToken */
86 static int hf_h460_4_tokens_item; /* ClearToken */
87 static int hf_h460_4_cryptoTokens; /* SEQUENCE_OF_CryptoToken */
88 static int hf_h460_4_cryptoTokens_item; /* CryptoToken */
89 static int hf_h460_4_rejectReason; /* T_rejectReason */
90 static int hf_h460_4_priorityUnavailable; /* NULL */
91 static int hf_h460_4_priorityUnauthorized; /* NULL */
92 static int hf_h460_4_priorityValueUnknown; /* NULL */
93 static int hf_h460_4_numberingPlan; /* T_numberingPlan */
94 static int hf_h460_4_x121; /* T_x121 */
95 static int hf_h460_4_x121CountryCode; /* X121CountryCode */
96 static int hf_h460_4_e164; /* T_e164 */
97 static int hf_h460_4_e164CountryCode; /* E164CountryCode */
98 static int hf_h460_4_identificationCode; /* T_identificationCode */
100 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
102 static int hf_h460_9_h460_9_QosMonitoringReportData_PDU; /* QosMonitoringReportData */
103 static int hf_h460_9_h460_9_ExtendedRTPMetrics_PDU; /* ExtendedRTPMetrics */
104 static int hf_h460_9_extensionId; /* GenericIdentifier */
105 static int hf_h460_9_extensionContent; /* OCTET_STRING */
106 static int hf_h460_9_rtpAddress; /* TransportChannelInfo */
107 static int hf_h460_9_rtcpAddress; /* TransportChannelInfo */
108 static int hf_h460_9_sessionId; /* INTEGER_1_255 */
109 static int hf_h460_9_nonStandardData; /* NonStandardParameter */
110 static int hf_h460_9_mediaSenderMeasures; /* T_mediaSenderMeasures */
111 static int hf_h460_9_worstEstimatedEnd2EndDelay; /* EstimatedEnd2EndDelay */
112 static int hf_h460_9_meanEstimatedEnd2EndDelay; /* EstimatedEnd2EndDelay */
113 static int hf_h460_9_mediaReceiverMeasures; /* T_mediaReceiverMeasures */
114 static int hf_h460_9_cumulativeNumberOfPacketsLost; /* INTEGER_0_4294967295 */
115 static int hf_h460_9_packetLostRate; /* INTEGER_0_65535 */
116 static int hf_h460_9_worstJitter; /* CalculatedJitter */
117 static int hf_h460_9_estimatedThroughput; /* BandWidth */
118 static int hf_h460_9_fractionLostRate; /* INTEGER_0_65535 */
119 static int hf_h460_9_meanJitter; /* CalculatedJitter */
120 static int hf_h460_9_extensions; /* SEQUENCE_OF_Extension */
121 static int hf_h460_9_extensions_item; /* Extension */
122 static int hf_h460_9_callReferenceValue; /* CallReferenceValue */
123 static int hf_h460_9_conferenceID; /* ConferenceIdentifier */
124 static int hf_h460_9_callIdentifier; /* CallIdentifier */
125 static int hf_h460_9_mediaChannelsQoS; /* SEQUENCE_OF_RTCPMeasures */
126 static int hf_h460_9_mediaChannelsQoS_item; /* RTCPMeasures */
127 static int hf_h460_9_periodic; /* PeriodicQoSMonReport */
128 static int hf_h460_9_final; /* FinalQosMonReport */
129 static int hf_h460_9_interGK; /* InterGKQosMonReport */
130 static int hf_h460_9_perCallInfo; /* SEQUENCE_OF_PerCallQoSReport */
131 static int hf_h460_9_perCallInfo_item; /* PerCallQoSReport */
132 static int hf_h460_9_mediaInfo; /* SEQUENCE_OF_RTCPMeasures */
133 static int hf_h460_9_mediaInfo_item; /* RTCPMeasures */
134 static int hf_h460_9_networkPacketLossRate; /* INTEGER_0_255 */
135 static int hf_h460_9_jitterBufferDiscardRate; /* INTEGER_0_255 */
136 static int hf_h460_9_burstMetrics; /* BurstMetrics */
137 static int hf_h460_9_rtcpRoundTripDelay; /* INTEGER_0_65535 */
138 static int hf_h460_9_endSystemDelay; /* INTEGER_0_65535 */
139 static int hf_h460_9_signalLevel; /* INTEGER_M127_10 */
140 static int hf_h460_9_noiseLevel; /* INTEGER_M127_0 */
141 static int hf_h460_9_residualEchoReturnLoss; /* INTEGER_0_127 */
142 static int hf_h460_9_rFactor; /* INTEGER_0_100 */
143 static int hf_h460_9_extRFactor; /* INTEGER_0_100 */
144 static int hf_h460_9_estimatedMOSLQ; /* INTEGER_10_50 */
145 static int hf_h460_9_estimatedMOSCQ; /* INTEGER_10_50 */
146 static int hf_h460_9_plcType; /* PLCtypes */
147 static int hf_h460_9_jitterBufferParms; /* JitterBufferParms */
148 static int hf_h460_9_gmin; /* INTEGER_0_255 */
149 static int hf_h460_9_burstLossDensity; /* INTEGER_0_255 */
150 static int hf_h460_9_gapLossDensity; /* INTEGER_0_255 */
151 static int hf_h460_9_burstDuration; /* INTEGER_0_65535 */
152 static int hf_h460_9_gapDuration; /* INTEGER_0_65535 */
153 static int hf_h460_9_unspecified; /* NULL */
154 static int hf_h460_9_disabled; /* NULL */
155 static int hf_h460_9_enhanced; /* NULL */
156 static int hf_h460_9_standard; /* NULL */
157 static int hf_h460_9_jitterBufferType; /* JitterBufferTypes */
158 static int hf_h460_9_jitterBufferAdaptRate; /* INTEGER_0_15 */
159 static int hf_h460_9_jitterBufferNominalSize; /* INTEGER_0_65535 */
160 static int hf_h460_9_jitterBufferMaxSize; /* INTEGER_0_65535 */
161 static int hf_h460_9_jitterBufferAbsoluteMax; /* INTEGER_0_65535 */
162 static int hf_h460_9_unknown; /* NULL */
163 static int hf_h460_9_reserved; /* NULL */
164 static int hf_h460_9_nonadaptive; /* NULL */
165 static int hf_h460_9_adaptive; /* NULL */
167 /* --- Module CALL-PARTY-CATEGORY --- --- --- */
169 static int hf_h460_10_h460_10_CallPartyCategoryInfo_PDU; /* CallPartyCategoryInfo */
170 static int hf_h460_10_callPartyCategory; /* CallPartyCategory */
171 static int hf_h460_10_originatingLineInfo; /* OriginatingLineInfo */
173 /* --- Module MLPP --- --- --- */
175 static int hf_h460_14_h460_14_MLPPInfo_PDU; /* MLPPInfo */
176 static int hf_h460_14_precedence; /* MlppPrecedence */
177 static int hf_h460_14_mlppReason; /* MlppReason */
178 static int hf_h460_14_mlppNotification; /* MlppNotification */
179 static int hf_h460_14_alternateParty; /* AlternateParty */
180 static int hf_h460_14_releaseCall; /* ReleaseCall */
181 static int hf_h460_14_preemptionPending; /* NULL */
182 static int hf_h460_14_preemptionInProgress; /* NULL */
183 static int hf_h460_14_preemptionEnd; /* NULL */
184 static int hf_h460_14_preemptionComplete; /* NULL */
185 static int hf_h460_14_altID; /* AliasAddress */
186 static int hf_h460_14_altTimer; /* INTEGER_0_255 */
187 static int hf_h460_14_preemptCallID; /* CallIdentifier */
188 static int hf_h460_14_releaseReason; /* MlppReason */
189 static int hf_h460_14_releaseDelay; /* INTEGER_0_255 */
191 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- --- */
193 static int hf_h460_15_h460_15_SignallingChannelData_PDU; /* SignallingChannelData */
194 static int hf_h460_15_signallingChannelData; /* T_signallingChannelData */
195 static int hf_h460_15_channelSuspendRequest; /* ChannelSuspendRequest */
196 static int hf_h460_15_channelSuspendResponse; /* ChannelSuspendResponse */
197 static int hf_h460_15_channelSuspendConfirm; /* ChannelSuspendConfirm */
198 static int hf_h460_15_channelSuspendCancel; /* ChannelSuspendCancel */
199 static int hf_h460_15_channelResumeRequest; /* ChannelResumeRequest */
200 static int hf_h460_15_channelResumeResponse; /* ChannelResumeResponse */
201 static int hf_h460_15_channelResumeAddress; /* SEQUENCE_OF_TransportAddress */
202 static int hf_h460_15_channelResumeAddress_item; /* TransportAddress */
203 static int hf_h460_15_immediateResume; /* BOOLEAN */
204 static int hf_h460_15_resetH245; /* NULL */
205 static int hf_h460_15_okToSuspend; /* BOOLEAN */
206 static int hf_h460_15_randomNumber; /* INTEGER_0_4294967295 */
208 /* --- Module SIGNALLING-TRAVERSAL --- --- --- */
210 static int hf_h460_18_h460_18_IncomingCallIndication_PDU; /* IncomingCallIndication */
211 static int hf_h460_18_h460_18_LRQKeepAliveData_PDU; /* LRQKeepAliveData */
212 static int hf_h460_18_callSignallingAddress; /* TransportAddress */
213 static int hf_h460_18_callID; /* CallIdentifier */
214 static int hf_h460_18_lrqKeepAliveInterval; /* TimeToLive */
216 /* --- Module MEDIA-TRAVERSAL --- --- --- */
218 static int hf_h460_19_h460_19_TraversalParameters_PDU; /* TraversalParameters */
219 static int hf_h460_19_multiplexedMediaChannel; /* TransportAddress */
220 static int hf_h460_19_multiplexedMediaControlChannel; /* TransportAddress */
221 static int hf_h460_19_multiplexID; /* INTEGER_0_4294967295 */
222 static int hf_h460_19_keepAliveChannel; /* TransportAddress */
223 static int hf_h460_19_keepAlivePayloadType; /* INTEGER_0_127 */
224 static int hf_h460_19_keepAliveInterval; /* TimeToLive */
226 /* --- Module MESSAGE-BROADCAST --- --- --- */
228 static int hf_h460_21_h460_21_CapabilityAdvertisement_PDU; /* CapabilityAdvertisement */
229 static int hf_h460_21_receiveCapabilities; /* ReceiveCapabilities */
230 static int hf_h460_21_transmitCapabilities; /* SEQUENCE_SIZE_1_256_OF_TransmitCapabilities */
231 static int hf_h460_21_transmitCapabilities_item; /* TransmitCapabilities */
232 static int hf_h460_21_capabilities; /* SEQUENCE_SIZE_1_256_OF_Capability */
233 static int hf_h460_21_capabilities_item; /* Capability */
234 static int hf_h460_21_maxGroups; /* INTEGER_1_65535 */
235 static int hf_h460_21_groupIdentifer; /* GloballyUniqueID */
236 static int hf_h460_21_capability; /* Capability */
237 static int hf_h460_21_sourceAddress; /* UnicastAddress */
239 /* Initialize the subtree pointers */
241 /* --- Module NUMBER-PORTABILITY --- --- --- */
243 static int ett_h460_2_NumberPortabilityInfo;
244 static int ett_h460_2_T_nUMBERPORTABILITYDATA;
245 static int ett_h460_2_NumberPortabilityRejectReason;
246 static int ett_h460_2_PortabilityAddress;
247 static int ett_h460_2_NumberPortabilityTypeOfNumber;
248 static int ett_h460_2_PortabilityTypeOfNumber;
249 static int ett_h460_2_RegionalParameters;
251 /* --- Module CIRCUIT-STATUS-MAP --- --- --- */
253 static int ett_h460_3_CircuitStatus;
254 static int ett_h460_3_SEQUENCE_OF_CircuitStatusMap;
255 static int ett_h460_3_CircuitStatusMap;
256 static int ett_h460_3_CircuitStatusType;
258 /* --- Module CALL-PRIORITY --- --- --- */
260 static int ett_h460_4_CallPriorityInfo;
261 static int ett_h460_4_T_priorityValue;
262 static int ett_h460_4_SEQUENCE_OF_ClearToken;
263 static int ett_h460_4_SEQUENCE_OF_CryptoToken;
264 static int ett_h460_4_T_rejectReason;
265 static int ett_h460_4_CountryInternationalNetworkCallOriginationIdentification;
266 static int ett_h460_4_T_numberingPlan;
267 static int ett_h460_4_T_x121;
268 static int ett_h460_4_T_e164;
270 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
272 static int ett_h460_9_Extension;
273 static int ett_h460_9_RTCPMeasures;
274 static int ett_h460_9_T_mediaSenderMeasures;
275 static int ett_h460_9_T_mediaReceiverMeasures;
276 static int ett_h460_9_SEQUENCE_OF_Extension;
277 static int ett_h460_9_PerCallQoSReport;
278 static int ett_h460_9_SEQUENCE_OF_RTCPMeasures;
279 static int ett_h460_9_QosMonitoringReportData;
280 static int ett_h460_9_PeriodicQoSMonReport;
281 static int ett_h460_9_SEQUENCE_OF_PerCallQoSReport;
282 static int ett_h460_9_FinalQosMonReport;
283 static int ett_h460_9_InterGKQosMonReport;
284 static int ett_h460_9_ExtendedRTPMetrics;
285 static int ett_h460_9_BurstMetrics;
286 static int ett_h460_9_PLCtypes;
287 static int ett_h460_9_JitterBufferParms;
288 static int ett_h460_9_JitterBufferTypes;
290 /* --- Module CALL-PARTY-CATEGORY --- --- --- */
292 static int ett_h460_10_CallPartyCategoryInfo;
294 /* --- Module MLPP --- --- --- */
296 static int ett_h460_14_MLPPInfo;
297 static int ett_h460_14_MlppNotification;
298 static int ett_h460_14_AlternateParty;
299 static int ett_h460_14_ReleaseCall;
301 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- --- */
303 static int ett_h460_15_SignallingChannelData;
304 static int ett_h460_15_T_signallingChannelData;
305 static int ett_h460_15_ChannelSuspendRequest;
306 static int ett_h460_15_SEQUENCE_OF_TransportAddress;
307 static int ett_h460_15_ChannelSuspendResponse;
308 static int ett_h460_15_ChannelSuspendConfirm;
309 static int ett_h460_15_ChannelSuspendCancel;
310 static int ett_h460_15_ChannelResumeRequest;
311 static int ett_h460_15_ChannelResumeResponse;
313 /* --- Module SIGNALLING-TRAVERSAL --- --- --- */
315 static int ett_h460_18_IncomingCallIndication;
316 static int ett_h460_18_LRQKeepAliveData;
318 /* --- Module MEDIA-TRAVERSAL --- --- --- */
320 static int ett_h460_19_TraversalParameters;
322 /* --- Module MESSAGE-BROADCAST --- --- --- */
324 static int ett_h460_21_CapabilityAdvertisement;
325 static int ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities;
326 static int ett_h460_21_ReceiveCapabilities;
327 static int ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability;
328 static int ett_h460_21_TransmitCapabilities;
330 /* Main dissector handle */
331 static dissector_handle_t h460_name_handle;
333 /* Subdissectors */
334 static dissector_handle_t q931_ie_handle;
335 static dissector_handle_t h225_ras_handle;
338 /* --- Module NUMBER-PORTABILITY --- --- --- */
342 static int
343 dissect_h460_2_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
344 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
346 return offset;
350 static const value_string h460_2_NumberPortabilityRejectReason_vals[] = {
351 { 0, "unspecified" },
352 { 1, "qorPortedNumber" },
353 { 0, NULL }
356 static const per_choice_t h460_2_NumberPortabilityRejectReason_choice[] = {
357 { 0, &hf_h460_2_unspecified , ASN1_EXTENSION_ROOT , dissect_h460_2_NULL },
358 { 1, &hf_h460_2_qorPortedNumber, ASN1_EXTENSION_ROOT , dissect_h460_2_NULL },
359 { 0, NULL, 0, NULL }
362 static int
363 dissect_h460_2_NumberPortabilityRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
364 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
365 ett_h460_2_NumberPortabilityRejectReason, h460_2_NumberPortabilityRejectReason_choice,
366 NULL);
368 return offset;
372 static const value_string h460_2_PortabilityTypeOfNumber_vals[] = {
373 { 0, "portedNumber" },
374 { 1, "routingNumber" },
375 { 2, "concatenatedNumber" },
376 { 0, NULL }
379 static const per_choice_t h460_2_PortabilityTypeOfNumber_choice[] = {
380 { 0, &hf_h460_2_portedNumber , ASN1_EXTENSION_ROOT , dissect_h460_2_NULL },
381 { 1, &hf_h460_2_routingNumber, ASN1_EXTENSION_ROOT , dissect_h460_2_NULL },
382 { 2, &hf_h460_2_concatenatedNumber, ASN1_EXTENSION_ROOT , dissect_h460_2_NULL },
383 { 0, NULL, 0, NULL }
386 static int
387 dissect_h460_2_PortabilityTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
388 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
389 ett_h460_2_PortabilityTypeOfNumber, h460_2_PortabilityTypeOfNumber_choice,
390 NULL);
392 return offset;
396 static const value_string h460_2_NumberPortabilityTypeOfNumber_vals[] = {
397 { 0, "publicTypeOfNumber" },
398 { 1, "privateTypeOfNumber" },
399 { 2, "portabilityTypeOfNumber" },
400 { 0, NULL }
403 static const per_choice_t h460_2_NumberPortabilityTypeOfNumber_choice[] = {
404 { 0, &hf_h460_2_publicTypeOfNumber, ASN1_EXTENSION_ROOT , dissect_h225_PublicTypeOfNumber },
405 { 1, &hf_h460_2_privateTypeOfNumber, ASN1_EXTENSION_ROOT , dissect_h225_PrivateTypeOfNumber },
406 { 2, &hf_h460_2_portabilityTypeOfNumber, ASN1_EXTENSION_ROOT , dissect_h460_2_PortabilityTypeOfNumber },
407 { 0, NULL, 0, NULL }
410 static int
411 dissect_h460_2_NumberPortabilityTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
412 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
413 ett_h460_2_NumberPortabilityTypeOfNumber, h460_2_NumberPortabilityTypeOfNumber_choice,
414 NULL);
416 return offset;
420 static const per_sequence_t h460_2_PortabilityAddress_sequence[] = {
421 { &hf_h460_2_aliasAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
422 { &hf_h460_2_typeOfAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_NumberPortabilityTypeOfNumber },
423 { NULL, 0, 0, NULL }
426 static int
427 dissect_h460_2_PortabilityAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
428 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
429 ett_h460_2_PortabilityAddress, h460_2_PortabilityAddress_sequence);
431 return offset;
436 static int
437 dissect_h460_2_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
438 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
439 0U, 255U, NULL, false);
441 return offset;
446 static int
447 dissect_h460_2_INTEGER_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
448 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
449 1U, 255U, NULL, false);
451 return offset;
456 static int
457 dissect_h460_2_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
458 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
459 NO_BOUND, NO_BOUND, false, NULL);
461 return offset;
465 static const per_sequence_t h460_2_RegionalParameters_sequence[] = {
466 { &hf_h460_2_t35CountryCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_2_INTEGER_0_255 },
467 { &hf_h460_2_t35Extension , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_2_INTEGER_0_255 },
468 { &hf_h460_2_variantIdentifier, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_INTEGER_1_255 },
469 { &hf_h460_2_regionalData , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_2_OCTET_STRING },
470 { NULL, 0, 0, NULL }
473 static int
474 dissect_h460_2_RegionalParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
475 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
476 ett_h460_2_RegionalParameters, h460_2_RegionalParameters_sequence);
478 return offset;
482 static const per_sequence_t h460_2_T_nUMBERPORTABILITYDATA_sequence[] = {
483 { &hf_h460_2_addressTranslated, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_NULL },
484 { &hf_h460_2_portedAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_PortabilityAddress },
485 { &hf_h460_2_routingAddress, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_PortabilityAddress },
486 { &hf_h460_2_regionalParams, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_2_RegionalParameters },
487 { NULL, 0, 0, NULL }
490 static int
491 dissect_h460_2_T_nUMBERPORTABILITYDATA(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
492 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
493 ett_h460_2_T_nUMBERPORTABILITYDATA, h460_2_T_nUMBERPORTABILITYDATA_sequence);
495 return offset;
499 static const value_string h460_2_NumberPortabilityInfo_vals[] = {
500 { 0, "numberPortabilityRejectReason" },
501 { 1, "nUMBERPORTABILITYDATA" },
502 { 0, NULL }
505 static const per_choice_t h460_2_NumberPortabilityInfo_choice[] = {
506 { 0, &hf_h460_2_numberPortabilityRejectReason, ASN1_EXTENSION_ROOT , dissect_h460_2_NumberPortabilityRejectReason },
507 { 1, &hf_h460_2_nUMBERPORTABILITYDATA, ASN1_EXTENSION_ROOT , dissect_h460_2_T_nUMBERPORTABILITYDATA },
508 { 0, NULL, 0, NULL }
511 static int
512 dissect_h460_2_NumberPortabilityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
513 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
514 ett_h460_2_NumberPortabilityInfo, h460_2_NumberPortabilityInfo_choice,
515 NULL);
517 return offset;
520 /*--- PDUs ---*/
522 static int dissect_h460_2_NumberPortabilityInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
523 int offset = 0;
524 asn1_ctx_t asn1_ctx;
525 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
526 offset = dissect_h460_2_NumberPortabilityInfo(tvb, offset, &asn1_ctx, tree, hf_h460_2_h460_2_NumberPortabilityInfo_PDU);
527 offset += 7; offset >>= 3;
528 return offset;
532 /* --- Module CIRCUIT-STATUS-MAP --- --- --- */
536 static int
537 dissect_h460_3_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
538 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
540 return offset;
544 static const value_string h460_3_CircuitStatusType_vals[] = {
545 { 0, "serviceStatus" },
546 { 1, "busyStatus" },
547 { 0, NULL }
550 static const per_choice_t h460_3_CircuitStatusType_choice[] = {
551 { 0, &hf_h460_3_serviceStatus, ASN1_EXTENSION_ROOT , dissect_h460_3_NULL },
552 { 1, &hf_h460_3_busyStatus , ASN1_EXTENSION_ROOT , dissect_h460_3_NULL },
553 { 0, NULL, 0, NULL }
556 static int
557 dissect_h460_3_CircuitStatusType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
558 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
559 ett_h460_3_CircuitStatusType, h460_3_CircuitStatusType_choice,
560 NULL);
562 return offset;
567 static int
568 dissect_h460_3_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
569 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
570 0U, 4095U, NULL, false);
572 return offset;
577 static int
578 dissect_h460_3_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
579 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
580 NO_BOUND, NO_BOUND, false, NULL);
582 return offset;
586 static const per_sequence_t h460_3_CircuitStatusMap_sequence[] = {
587 { &hf_h460_3_statusType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_3_CircuitStatusType },
588 { &hf_h460_3_baseCircuitID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CircuitIdentifier },
589 { &hf_h460_3_range , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_3_INTEGER_0_4095 },
590 { &hf_h460_3_status , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_3_OCTET_STRING },
591 { NULL, 0, 0, NULL }
594 static int
595 dissect_h460_3_CircuitStatusMap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
596 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
597 ett_h460_3_CircuitStatusMap, h460_3_CircuitStatusMap_sequence);
599 return offset;
603 static const per_sequence_t h460_3_SEQUENCE_OF_CircuitStatusMap_sequence_of[1] = {
604 { &hf_h460_3_circuitStatusMap_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h460_3_CircuitStatusMap },
607 static int
608 dissect_h460_3_SEQUENCE_OF_CircuitStatusMap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
609 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
610 ett_h460_3_SEQUENCE_OF_CircuitStatusMap, h460_3_SEQUENCE_OF_CircuitStatusMap_sequence_of);
612 return offset;
616 static const per_sequence_t h460_3_CircuitStatus_sequence[] = {
617 { &hf_h460_3_circuitStatusMap, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_3_SEQUENCE_OF_CircuitStatusMap },
618 { NULL, 0, 0, NULL }
621 static int
622 dissect_h460_3_CircuitStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
623 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
624 ett_h460_3_CircuitStatus, h460_3_CircuitStatus_sequence);
626 return offset;
629 /*--- PDUs ---*/
631 static int dissect_h460_3_CircuitStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
632 int offset = 0;
633 asn1_ctx_t asn1_ctx;
634 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
635 offset = dissect_h460_3_CircuitStatus(tvb, offset, &asn1_ctx, tree, hf_h460_3_h460_3_CircuitStatus_PDU);
636 offset += 7; offset >>= 3;
637 return offset;
641 /* --- Module CALL-PRIORITY --- --- --- */
645 static int
646 dissect_h460_4_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
647 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
649 return offset;
653 static const value_string h460_4_T_priorityValue_vals[] = {
654 { 0, "emergencyAuthorized" },
655 { 1, "emergencyPublic" },
656 { 2, "high" },
657 { 3, "normal" },
658 { 0, NULL }
661 static const per_choice_t h460_4_T_priorityValue_choice[] = {
662 { 0, &hf_h460_4_emergencyAuthorized, ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
663 { 1, &hf_h460_4_emergencyPublic, ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
664 { 2, &hf_h460_4_high , ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
665 { 3, &hf_h460_4_normal , ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
666 { 0, NULL, 0, NULL }
669 static int
670 dissect_h460_4_T_priorityValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
671 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
672 ett_h460_4_T_priorityValue, h460_4_T_priorityValue_choice,
673 NULL);
675 return offset;
680 static int
681 dissect_h460_4_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
682 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
683 0U, 255U, NULL, false);
685 return offset;
689 static const per_sequence_t h460_4_SEQUENCE_OF_ClearToken_sequence_of[1] = {
690 { &hf_h460_4_tokens_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_ClearToken },
693 static int
694 dissect_h460_4_SEQUENCE_OF_ClearToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
695 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
696 ett_h460_4_SEQUENCE_OF_ClearToken, h460_4_SEQUENCE_OF_ClearToken_sequence_of);
698 return offset;
702 static const per_sequence_t h460_4_SEQUENCE_OF_CryptoToken_sequence_of[1] = {
703 { &hf_h460_4_cryptoTokens_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h235_CryptoToken },
706 static int
707 dissect_h460_4_SEQUENCE_OF_CryptoToken(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
708 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
709 ett_h460_4_SEQUENCE_OF_CryptoToken, h460_4_SEQUENCE_OF_CryptoToken_sequence_of);
711 return offset;
715 static const value_string h460_4_T_rejectReason_vals[] = {
716 { 0, "priorityUnavailable" },
717 { 1, "priorityUnauthorized" },
718 { 2, "priorityValueUnknown" },
719 { 0, NULL }
722 static const per_choice_t h460_4_T_rejectReason_choice[] = {
723 { 0, &hf_h460_4_priorityUnavailable, ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
724 { 1, &hf_h460_4_priorityUnauthorized, ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
725 { 2, &hf_h460_4_priorityValueUnknown, ASN1_EXTENSION_ROOT , dissect_h460_4_NULL },
726 { 0, NULL, 0, NULL }
729 static int
730 dissect_h460_4_T_rejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
731 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
732 ett_h460_4_T_rejectReason, h460_4_T_rejectReason_choice,
733 NULL);
735 return offset;
739 static const per_sequence_t h460_4_CallPriorityInfo_sequence[] = {
740 { &hf_h460_4_priorityValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_4_T_priorityValue },
741 { &hf_h460_4_priorityExtension, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_4_INTEGER_0_255 },
742 { &hf_h460_4_tokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_4_SEQUENCE_OF_ClearToken },
743 { &hf_h460_4_cryptoTokens , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_4_SEQUENCE_OF_CryptoToken },
744 { &hf_h460_4_rejectReason , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_4_T_rejectReason },
745 { NULL, 0, 0, NULL }
748 static int
749 dissect_h460_4_CallPriorityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
750 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
751 ett_h460_4_CallPriorityInfo, h460_4_CallPriorityInfo_sequence);
753 return offset;
758 static int
759 dissect_h460_4_X121CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
760 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
761 3, 3, false, "0123456789", 10,
762 NULL);
764 return offset;
768 static const per_sequence_t h460_4_T_x121_sequence[] = {
769 { &hf_h460_4_x121CountryCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_4_X121CountryCode },
770 { NULL, 0, 0, NULL }
773 static int
774 dissect_h460_4_T_x121(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
775 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
776 ett_h460_4_T_x121, h460_4_T_x121_sequence);
778 return offset;
783 static int
784 dissect_h460_4_E164CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
785 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
786 3, 3, false, "0123456789", 10,
787 NULL);
789 return offset;
794 static int
795 dissect_h460_4_T_identificationCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
796 offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
797 1, 4, false, "0123456789", 10,
798 NULL);
800 return offset;
804 static const per_sequence_t h460_4_T_e164_sequence[] = {
805 { &hf_h460_4_e164CountryCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_4_E164CountryCode },
806 { &hf_h460_4_identificationCode, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_4_T_identificationCode },
807 { NULL, 0, 0, NULL }
810 static int
811 dissect_h460_4_T_e164(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
813 ett_h460_4_T_e164, h460_4_T_e164_sequence);
815 return offset;
819 static const value_string h460_4_T_numberingPlan_vals[] = {
820 { 0, "x121" },
821 { 1, "e164" },
822 { 0, NULL }
825 static const per_choice_t h460_4_T_numberingPlan_choice[] = {
826 { 0, &hf_h460_4_x121 , ASN1_EXTENSION_ROOT , dissect_h460_4_T_x121 },
827 { 1, &hf_h460_4_e164 , ASN1_EXTENSION_ROOT , dissect_h460_4_T_e164 },
828 { 0, NULL, 0, NULL }
831 static int
832 dissect_h460_4_T_numberingPlan(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
833 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
834 ett_h460_4_T_numberingPlan, h460_4_T_numberingPlan_choice,
835 NULL);
837 return offset;
841 static const per_sequence_t h460_4_CountryInternationalNetworkCallOriginationIdentification_sequence[] = {
842 { &hf_h460_4_numberingPlan, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_4_T_numberingPlan },
843 { NULL, 0, 0, NULL }
846 static int
847 dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
848 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
849 ett_h460_4_CountryInternationalNetworkCallOriginationIdentification, h460_4_CountryInternationalNetworkCallOriginationIdentification_sequence);
851 return offset;
854 /*--- PDUs ---*/
856 static int dissect_h460_4_CallPriorityInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
857 int offset = 0;
858 asn1_ctx_t asn1_ctx;
859 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
860 offset = dissect_h460_4_CallPriorityInfo(tvb, offset, &asn1_ctx, tree, hf_h460_4_h460_4_CallPriorityInfo_PDU);
861 offset += 7; offset >>= 3;
862 return offset;
864 static int dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
865 int offset = 0;
866 asn1_ctx_t asn1_ctx;
867 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
868 offset = dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification(tvb, offset, &asn1_ctx, tree, hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU);
869 offset += 7; offset >>= 3;
870 return offset;
874 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
878 static int
879 dissect_h460_9_EstimatedEnd2EndDelay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
880 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
881 0U, 4294967295U, NULL, false);
883 return offset;
888 static int
889 dissect_h460_9_CalculatedJitter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
890 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
891 0U, 4294967295U, NULL, false);
893 return offset;
898 static int
899 dissect_h460_9_OCTET_STRING(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
900 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
901 NO_BOUND, NO_BOUND, false, NULL);
903 return offset;
907 static const per_sequence_t h460_9_Extension_sequence[] = {
908 { &hf_h460_9_extensionId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_GenericIdentifier },
909 { &hf_h460_9_extensionContent, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_OCTET_STRING },
910 { NULL, 0, 0, NULL }
913 static int
914 dissect_h460_9_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
915 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
916 ett_h460_9_Extension, h460_9_Extension_sequence);
918 return offset;
923 static int
924 dissect_h460_9_INTEGER_1_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
925 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
926 1U, 255U, NULL, false);
928 return offset;
932 static const per_sequence_t h460_9_T_mediaSenderMeasures_sequence[] = {
933 { &hf_h460_9_worstEstimatedEnd2EndDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_EstimatedEnd2EndDelay },
934 { &hf_h460_9_meanEstimatedEnd2EndDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_EstimatedEnd2EndDelay },
935 { NULL, 0, 0, NULL }
938 static int
939 dissect_h460_9_T_mediaSenderMeasures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
940 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
941 ett_h460_9_T_mediaSenderMeasures, h460_9_T_mediaSenderMeasures_sequence);
943 return offset;
948 static int
949 dissect_h460_9_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
950 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
951 0U, 4294967295U, NULL, false);
953 return offset;
958 static int
959 dissect_h460_9_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
960 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
961 0U, 65535U, NULL, false);
963 return offset;
967 static const per_sequence_t h460_9_T_mediaReceiverMeasures_sequence[] = {
968 { &hf_h460_9_cumulativeNumberOfPacketsLost, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_4294967295 },
969 { &hf_h460_9_packetLostRate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
970 { &hf_h460_9_worstJitter , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_CalculatedJitter },
971 { &hf_h460_9_estimatedThroughput, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_BandWidth },
972 { &hf_h460_9_fractionLostRate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
973 { &hf_h460_9_meanJitter , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_CalculatedJitter },
974 { NULL, 0, 0, NULL }
977 static int
978 dissect_h460_9_T_mediaReceiverMeasures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
980 ett_h460_9_T_mediaReceiverMeasures, h460_9_T_mediaReceiverMeasures_sequence);
982 return offset;
986 static const per_sequence_t h460_9_SEQUENCE_OF_Extension_sequence_of[1] = {
987 { &hf_h460_9_extensions_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h460_9_Extension },
990 static int
991 dissect_h460_9_SEQUENCE_OF_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
992 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
993 ett_h460_9_SEQUENCE_OF_Extension, h460_9_SEQUENCE_OF_Extension_sequence_of);
995 return offset;
999 static const per_sequence_t h460_9_RTCPMeasures_sequence[] = {
1000 { &hf_h460_9_rtpAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
1001 { &hf_h460_9_rtcpAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
1002 { &hf_h460_9_sessionId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_9_INTEGER_1_255 },
1003 { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
1004 { &hf_h460_9_mediaSenderMeasures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_T_mediaSenderMeasures },
1005 { &hf_h460_9_mediaReceiverMeasures, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_T_mediaReceiverMeasures },
1006 { &hf_h460_9_extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_Extension },
1007 { NULL, 0, 0, NULL }
1010 static int
1011 dissect_h460_9_RTCPMeasures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1012 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1013 ett_h460_9_RTCPMeasures, h460_9_RTCPMeasures_sequence);
1015 return offset;
1019 static const per_sequence_t h460_9_SEQUENCE_OF_RTCPMeasures_sequence_of[1] = {
1020 { &hf_h460_9_mediaChannelsQoS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h460_9_RTCPMeasures },
1023 static int
1024 dissect_h460_9_SEQUENCE_OF_RTCPMeasures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1025 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1026 ett_h460_9_SEQUENCE_OF_RTCPMeasures, h460_9_SEQUENCE_OF_RTCPMeasures_sequence_of);
1028 return offset;
1032 static const per_sequence_t h460_9_PerCallQoSReport_sequence[] = {
1033 { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
1034 { &hf_h460_9_callReferenceValue, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
1035 { &hf_h460_9_conferenceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
1036 { &hf_h460_9_callIdentifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1037 { &hf_h460_9_mediaChannelsQoS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1038 { &hf_h460_9_extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_Extension },
1039 { NULL, 0, 0, NULL }
1042 static int
1043 dissect_h460_9_PerCallQoSReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1044 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1045 ett_h460_9_PerCallQoSReport, h460_9_PerCallQoSReport_sequence);
1047 return offset;
1051 static const per_sequence_t h460_9_SEQUENCE_OF_PerCallQoSReport_sequence_of[1] = {
1052 { &hf_h460_9_perCallInfo_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h460_9_PerCallQoSReport },
1055 static int
1056 dissect_h460_9_SEQUENCE_OF_PerCallQoSReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1057 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1058 ett_h460_9_SEQUENCE_OF_PerCallQoSReport, h460_9_SEQUENCE_OF_PerCallQoSReport_sequence_of);
1060 return offset;
1064 static const per_sequence_t h460_9_PeriodicQoSMonReport_sequence[] = {
1065 { &hf_h460_9_perCallInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_PerCallQoSReport },
1066 { &hf_h460_9_extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_Extension },
1067 { NULL, 0, 0, NULL }
1070 static int
1071 dissect_h460_9_PeriodicQoSMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1072 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1073 ett_h460_9_PeriodicQoSMonReport, h460_9_PeriodicQoSMonReport_sequence);
1075 return offset;
1079 static const per_sequence_t h460_9_FinalQosMonReport_sequence[] = {
1080 { &hf_h460_9_mediaInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1081 { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
1082 { &hf_h460_9_extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_Extension },
1083 { NULL, 0, 0, NULL }
1086 static int
1087 dissect_h460_9_FinalQosMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1088 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1089 ett_h460_9_FinalQosMonReport, h460_9_FinalQosMonReport_sequence);
1091 return offset;
1095 static const per_sequence_t h460_9_InterGKQosMonReport_sequence[] = {
1096 { &hf_h460_9_mediaInfo , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1097 { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_NonStandardParameter },
1098 { &hf_h460_9_extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_SEQUENCE_OF_Extension },
1099 { NULL, 0, 0, NULL }
1102 static int
1103 dissect_h460_9_InterGKQosMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1104 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1105 ett_h460_9_InterGKQosMonReport, h460_9_InterGKQosMonReport_sequence);
1107 return offset;
1111 static const value_string h460_9_QosMonitoringReportData_vals[] = {
1112 { 0, "periodic" },
1113 { 1, "final" },
1114 { 2, "interGK" },
1115 { 0, NULL }
1118 static const per_choice_t h460_9_QosMonitoringReportData_choice[] = {
1119 { 0, &hf_h460_9_periodic , ASN1_EXTENSION_ROOT , dissect_h460_9_PeriodicQoSMonReport },
1120 { 1, &hf_h460_9_final , ASN1_EXTENSION_ROOT , dissect_h460_9_FinalQosMonReport },
1121 { 2, &hf_h460_9_interGK , ASN1_EXTENSION_ROOT , dissect_h460_9_InterGKQosMonReport },
1122 { 0, NULL, 0, NULL }
1125 static int
1126 dissect_h460_9_QosMonitoringReportData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1128 ett_h460_9_QosMonitoringReportData, h460_9_QosMonitoringReportData_choice,
1129 NULL);
1131 return offset;
1136 static int
1137 dissect_h460_9_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1138 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1139 0U, 255U, NULL, false);
1141 return offset;
1145 static const per_sequence_t h460_9_BurstMetrics_sequence[] = {
1146 { &hf_h460_9_gmin , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_255 },
1147 { &hf_h460_9_burstLossDensity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_255 },
1148 { &hf_h460_9_gapLossDensity, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_255 },
1149 { &hf_h460_9_burstDuration, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1150 { &hf_h460_9_gapDuration , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1151 { NULL, 0, 0, NULL }
1154 static int
1155 dissect_h460_9_BurstMetrics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1156 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1157 ett_h460_9_BurstMetrics, h460_9_BurstMetrics_sequence);
1159 return offset;
1164 static int
1165 dissect_h460_9_INTEGER_M127_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1166 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1167 -127, 10U, NULL, false);
1169 return offset;
1174 static int
1175 dissect_h460_9_INTEGER_M127_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1176 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1177 -127, 0U, NULL, false);
1179 return offset;
1184 static int
1185 dissect_h460_9_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1186 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1187 0U, 127U, NULL, false);
1189 return offset;
1194 static int
1195 dissect_h460_9_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1196 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1197 0U, 100U, NULL, false);
1199 return offset;
1204 static int
1205 dissect_h460_9_INTEGER_10_50(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1206 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1207 10U, 50U, NULL, false);
1209 return offset;
1214 static int
1215 dissect_h460_9_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1216 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1218 return offset;
1222 static const value_string h460_9_PLCtypes_vals[] = {
1223 { 0, "unspecified" },
1224 { 1, "disabled" },
1225 { 2, "enhanced" },
1226 { 3, "standard" },
1227 { 0, NULL }
1230 static const per_choice_t h460_9_PLCtypes_choice[] = {
1231 { 0, &hf_h460_9_unspecified , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1232 { 1, &hf_h460_9_disabled , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1233 { 2, &hf_h460_9_enhanced , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1234 { 3, &hf_h460_9_standard , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1235 { 0, NULL, 0, NULL }
1238 static int
1239 dissect_h460_9_PLCtypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1240 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1241 ett_h460_9_PLCtypes, h460_9_PLCtypes_choice,
1242 NULL);
1244 return offset;
1248 static const value_string h460_9_JitterBufferTypes_vals[] = {
1249 { 0, "unknown" },
1250 { 1, "reserved" },
1251 { 2, "nonadaptive" },
1252 { 3, "adaptive" },
1253 { 0, NULL }
1256 static const per_choice_t h460_9_JitterBufferTypes_choice[] = {
1257 { 0, &hf_h460_9_unknown , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1258 { 1, &hf_h460_9_reserved , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1259 { 2, &hf_h460_9_nonadaptive , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1260 { 3, &hf_h460_9_adaptive , ASN1_EXTENSION_ROOT , dissect_h460_9_NULL },
1261 { 0, NULL, 0, NULL }
1264 static int
1265 dissect_h460_9_JitterBufferTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1266 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1267 ett_h460_9_JitterBufferTypes, h460_9_JitterBufferTypes_choice,
1268 NULL);
1270 return offset;
1275 static int
1276 dissect_h460_9_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1277 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1278 0U, 15U, NULL, false);
1280 return offset;
1284 static const per_sequence_t h460_9_JitterBufferParms_sequence[] = {
1285 { &hf_h460_9_jitterBufferType, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_JitterBufferTypes },
1286 { &hf_h460_9_jitterBufferAdaptRate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_15 },
1287 { &hf_h460_9_jitterBufferNominalSize, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1288 { &hf_h460_9_jitterBufferMaxSize, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1289 { &hf_h460_9_jitterBufferAbsoluteMax, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1290 { NULL, 0, 0, NULL }
1293 static int
1294 dissect_h460_9_JitterBufferParms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1295 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1296 ett_h460_9_JitterBufferParms, h460_9_JitterBufferParms_sequence);
1298 return offset;
1302 static const per_sequence_t h460_9_ExtendedRTPMetrics_sequence[] = {
1303 { &hf_h460_9_networkPacketLossRate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_255 },
1304 { &hf_h460_9_jitterBufferDiscardRate, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_255 },
1305 { &hf_h460_9_burstMetrics , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_BurstMetrics },
1306 { &hf_h460_9_rtcpRoundTripDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1307 { &hf_h460_9_endSystemDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_65535 },
1308 { &hf_h460_9_signalLevel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_M127_10 },
1309 { &hf_h460_9_noiseLevel , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_M127_0 },
1310 { &hf_h460_9_residualEchoReturnLoss, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_127 },
1311 { &hf_h460_9_rFactor , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_100 },
1312 { &hf_h460_9_extRFactor , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_0_100 },
1313 { &hf_h460_9_estimatedMOSLQ, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_10_50 },
1314 { &hf_h460_9_estimatedMOSCQ, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_INTEGER_10_50 },
1315 { &hf_h460_9_plcType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_PLCtypes },
1316 { &hf_h460_9_jitterBufferParms, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_9_JitterBufferParms },
1317 { NULL, 0, 0, NULL }
1320 static int
1321 dissect_h460_9_ExtendedRTPMetrics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1322 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1323 ett_h460_9_ExtendedRTPMetrics, h460_9_ExtendedRTPMetrics_sequence);
1325 return offset;
1328 /*--- PDUs ---*/
1330 static int dissect_h460_9_QosMonitoringReportData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1331 int offset = 0;
1332 asn1_ctx_t asn1_ctx;
1333 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1334 offset = dissect_h460_9_QosMonitoringReportData(tvb, offset, &asn1_ctx, tree, hf_h460_9_h460_9_QosMonitoringReportData_PDU);
1335 offset += 7; offset >>= 3;
1336 return offset;
1338 static int dissect_h460_9_ExtendedRTPMetrics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1339 int offset = 0;
1340 asn1_ctx_t asn1_ctx;
1341 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1342 offset = dissect_h460_9_ExtendedRTPMetrics(tvb, offset, &asn1_ctx, tree, hf_h460_9_h460_9_ExtendedRTPMetrics_PDU);
1343 offset += 7; offset >>= 3;
1344 return offset;
1348 /* --- Module CALL-PARTY-CATEGORY --- --- --- */
1352 static int
1353 dissect_h460_10_CallPartyCategory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1354 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1355 0U, 255U, NULL, false);
1357 return offset;
1362 static int
1363 dissect_h460_10_OriginatingLineInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1364 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1365 0U, 255U, NULL, false);
1367 return offset;
1371 static const per_sequence_t h460_10_CallPartyCategoryInfo_sequence[] = {
1372 { &hf_h460_10_callPartyCategory, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_10_CallPartyCategory },
1373 { &hf_h460_10_originatingLineInfo, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_10_OriginatingLineInfo },
1374 { NULL, 0, 0, NULL }
1377 static int
1378 dissect_h460_10_CallPartyCategoryInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1380 ett_h460_10_CallPartyCategoryInfo, h460_10_CallPartyCategoryInfo_sequence);
1382 return offset;
1385 /*--- PDUs ---*/
1387 static int dissect_h460_10_CallPartyCategoryInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1388 int offset = 0;
1389 asn1_ctx_t asn1_ctx;
1390 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1391 offset = dissect_h460_10_CallPartyCategoryInfo(tvb, offset, &asn1_ctx, tree, hf_h460_10_h460_10_CallPartyCategoryInfo_PDU);
1392 offset += 7; offset >>= 3;
1393 return offset;
1397 /* --- Module MLPP --- --- --- */
1400 static const value_string h460_14_MlppPrecedence_vals[] = {
1401 { 0, "flashOveride" },
1402 { 1, "flash" },
1403 { 2, "immediate" },
1404 { 3, "priority" },
1405 { 4, "routine" },
1406 { 0, NULL }
1410 static int
1411 dissect_h460_14_MlppPrecedence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1412 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1413 5, NULL, true, 0, NULL);
1415 return offset;
1419 static const value_string h460_14_MlppReason_vals[] = {
1420 { 8, "preemptionNoReservation" },
1421 { 9, "preemptionReservation" },
1422 { 46, "callBlocked" },
1423 { 0, NULL }
1426 static uint32_t h460_14_MlppReason_value_map[3+0] = {8, 9, 46};
1428 static int
1429 dissect_h460_14_MlppReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1430 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1431 3, NULL, true, 0, h460_14_MlppReason_value_map);
1433 return offset;
1438 static int
1439 dissect_h460_14_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1440 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1442 return offset;
1446 static const value_string h460_14_MlppNotification_vals[] = {
1447 { 0, "preemptionPending" },
1448 { 1, "preemptionInProgress" },
1449 { 2, "preemptionEnd" },
1450 { 3, "preemptionComplete" },
1451 { 0, NULL }
1454 static const per_choice_t h460_14_MlppNotification_choice[] = {
1455 { 0, &hf_h460_14_preemptionPending, ASN1_EXTENSION_ROOT , dissect_h460_14_NULL },
1456 { 1, &hf_h460_14_preemptionInProgress, ASN1_EXTENSION_ROOT , dissect_h460_14_NULL },
1457 { 2, &hf_h460_14_preemptionEnd, ASN1_EXTENSION_ROOT , dissect_h460_14_NULL },
1458 { 3, &hf_h460_14_preemptionComplete, ASN1_EXTENSION_ROOT , dissect_h460_14_NULL },
1459 { 0, NULL, 0, NULL }
1462 static int
1463 dissect_h460_14_MlppNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1464 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1465 ett_h460_14_MlppNotification, h460_14_MlppNotification_choice,
1466 NULL);
1468 return offset;
1473 static int
1474 dissect_h460_14_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1475 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1476 0U, 255U, NULL, false);
1478 return offset;
1482 static const per_sequence_t h460_14_AlternateParty_sequence[] = {
1483 { &hf_h460_14_altID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1484 { &hf_h460_14_altTimer , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_INTEGER_0_255 },
1485 { NULL, 0, 0, NULL }
1488 static int
1489 dissect_h460_14_AlternateParty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1490 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1491 ett_h460_14_AlternateParty, h460_14_AlternateParty_sequence);
1493 return offset;
1497 static const per_sequence_t h460_14_ReleaseCall_sequence[] = {
1498 { &hf_h460_14_preemptCallID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1499 { &hf_h460_14_releaseReason, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_14_MlppReason },
1500 { &hf_h460_14_releaseDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_INTEGER_0_255 },
1501 { NULL, 0, 0, NULL }
1504 static int
1505 dissect_h460_14_ReleaseCall(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1506 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1507 ett_h460_14_ReleaseCall, h460_14_ReleaseCall_sequence);
1509 return offset;
1513 static const per_sequence_t h460_14_MLPPInfo_sequence[] = {
1514 { &hf_h460_14_precedence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_MlppPrecedence },
1515 { &hf_h460_14_mlppReason , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_MlppReason },
1516 { &hf_h460_14_mlppNotification, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_MlppNotification },
1517 { &hf_h460_14_alternateParty, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_AlternateParty },
1518 { &hf_h460_14_releaseCall , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_14_ReleaseCall },
1519 { NULL, 0, 0, NULL }
1522 static int
1523 dissect_h460_14_MLPPInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1524 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1525 ett_h460_14_MLPPInfo, h460_14_MLPPInfo_sequence);
1527 return offset;
1530 /*--- PDUs ---*/
1532 static int dissect_h460_14_MLPPInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1533 int offset = 0;
1534 asn1_ctx_t asn1_ctx;
1535 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1536 offset = dissect_h460_14_MLPPInfo(tvb, offset, &asn1_ctx, tree, hf_h460_14_h460_14_MLPPInfo_PDU);
1537 offset += 7; offset >>= 3;
1538 return offset;
1542 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- --- */
1545 static const per_sequence_t h460_15_SEQUENCE_OF_TransportAddress_sequence_of[1] = {
1546 { &hf_h460_15_channelResumeAddress_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
1549 static int
1550 dissect_h460_15_SEQUENCE_OF_TransportAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1551 offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1552 ett_h460_15_SEQUENCE_OF_TransportAddress, h460_15_SEQUENCE_OF_TransportAddress_sequence_of);
1554 return offset;
1559 static int
1560 dissect_h460_15_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1561 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
1563 return offset;
1568 static int
1569 dissect_h460_15_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1570 offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1572 return offset;
1576 static const per_sequence_t h460_15_ChannelSuspendRequest_sequence[] = {
1577 { &hf_h460_15_channelResumeAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_SEQUENCE_OF_TransportAddress },
1578 { &hf_h460_15_immediateResume, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_BOOLEAN },
1579 { &hf_h460_15_resetH245 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_15_NULL },
1580 { NULL, 0, 0, NULL }
1583 static int
1584 dissect_h460_15_ChannelSuspendRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1585 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1586 ett_h460_15_ChannelSuspendRequest, h460_15_ChannelSuspendRequest_sequence);
1588 return offset;
1592 static const per_sequence_t h460_15_ChannelSuspendResponse_sequence[] = {
1593 { &hf_h460_15_okToSuspend , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_BOOLEAN },
1594 { &hf_h460_15_channelResumeAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_SEQUENCE_OF_TransportAddress },
1595 { NULL, 0, 0, NULL }
1598 static int
1599 dissect_h460_15_ChannelSuspendResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1600 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1601 ett_h460_15_ChannelSuspendResponse, h460_15_ChannelSuspendResponse_sequence);
1603 return offset;
1607 static const per_sequence_t h460_15_ChannelSuspendConfirm_sequence[] = {
1608 { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1611 static int
1612 dissect_h460_15_ChannelSuspendConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1613 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1614 ett_h460_15_ChannelSuspendConfirm, h460_15_ChannelSuspendConfirm_sequence);
1616 return offset;
1620 static const per_sequence_t h460_15_ChannelSuspendCancel_sequence[] = {
1621 { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1624 static int
1625 dissect_h460_15_ChannelSuspendCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1626 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1627 ett_h460_15_ChannelSuspendCancel, h460_15_ChannelSuspendCancel_sequence);
1629 return offset;
1634 static int
1635 dissect_h460_15_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1637 0U, 4294967295U, NULL, false);
1639 return offset;
1643 static const per_sequence_t h460_15_ChannelResumeRequest_sequence[] = {
1644 { &hf_h460_15_randomNumber, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_INTEGER_0_4294967295 },
1645 { &hf_h460_15_resetH245 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_15_NULL },
1646 { NULL, 0, 0, NULL }
1649 static int
1650 dissect_h460_15_ChannelResumeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1651 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1652 ett_h460_15_ChannelResumeRequest, h460_15_ChannelResumeRequest_sequence);
1654 return offset;
1658 static const per_sequence_t h460_15_ChannelResumeResponse_sequence[] = {
1659 { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1662 static int
1663 dissect_h460_15_ChannelResumeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1664 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1665 ett_h460_15_ChannelResumeResponse, h460_15_ChannelResumeResponse_sequence);
1667 return offset;
1671 static const value_string h460_15_T_signallingChannelData_vals[] = {
1672 { 0, "channelSuspendRequest" },
1673 { 1, "channelSuspendResponse" },
1674 { 2, "channelSuspendConfirm" },
1675 { 3, "channelSuspendCancel" },
1676 { 4, "channelResumeRequest" },
1677 { 5, "channelResumeResponse" },
1678 { 0, NULL }
1681 static const per_choice_t h460_15_T_signallingChannelData_choice[] = {
1682 { 0, &hf_h460_15_channelSuspendRequest, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelSuspendRequest },
1683 { 1, &hf_h460_15_channelSuspendResponse, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelSuspendResponse },
1684 { 2, &hf_h460_15_channelSuspendConfirm, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelSuspendConfirm },
1685 { 3, &hf_h460_15_channelSuspendCancel, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelSuspendCancel },
1686 { 4, &hf_h460_15_channelResumeRequest, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelResumeRequest },
1687 { 5, &hf_h460_15_channelResumeResponse, ASN1_EXTENSION_ROOT , dissect_h460_15_ChannelResumeResponse },
1688 { 0, NULL, 0, NULL }
1691 static int
1692 dissect_h460_15_T_signallingChannelData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1693 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1694 ett_h460_15_T_signallingChannelData, h460_15_T_signallingChannelData_choice,
1695 NULL);
1697 return offset;
1701 static const per_sequence_t h460_15_SignallingChannelData_sequence[] = {
1702 { &hf_h460_15_signallingChannelData, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_15_T_signallingChannelData },
1703 { NULL, 0, 0, NULL }
1706 static int
1707 dissect_h460_15_SignallingChannelData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1708 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1709 ett_h460_15_SignallingChannelData, h460_15_SignallingChannelData_sequence);
1711 return offset;
1714 /*--- PDUs ---*/
1716 static int dissect_h460_15_SignallingChannelData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1717 int offset = 0;
1718 asn1_ctx_t asn1_ctx;
1719 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1720 offset = dissect_h460_15_SignallingChannelData(tvb, offset, &asn1_ctx, tree, hf_h460_15_h460_15_SignallingChannelData_PDU);
1721 offset += 7; offset >>= 3;
1722 return offset;
1726 /* --- Module SIGNALLING-TRAVERSAL --- --- --- */
1729 static const per_sequence_t h460_18_IncomingCallIndication_sequence[] = {
1730 { &hf_h460_18_callSignallingAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
1731 { &hf_h460_18_callID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1732 { NULL, 0, 0, NULL }
1735 static int
1736 dissect_h460_18_IncomingCallIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1737 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1738 ett_h460_18_IncomingCallIndication, h460_18_IncomingCallIndication_sequence);
1740 return offset;
1744 static const per_sequence_t h460_18_LRQKeepAliveData_sequence[] = {
1745 { &hf_h460_18_lrqKeepAliveInterval, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h225_TimeToLive },
1746 { NULL, 0, 0, NULL }
1749 static int
1750 dissect_h460_18_LRQKeepAliveData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1751 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1752 ett_h460_18_LRQKeepAliveData, h460_18_LRQKeepAliveData_sequence);
1754 return offset;
1757 /*--- PDUs ---*/
1759 static int dissect_h460_18_IncomingCallIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1760 int offset = 0;
1761 asn1_ctx_t asn1_ctx;
1762 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1763 offset = dissect_h460_18_IncomingCallIndication(tvb, offset, &asn1_ctx, tree, hf_h460_18_h460_18_IncomingCallIndication_PDU);
1764 offset += 7; offset >>= 3;
1765 return offset;
1767 static int dissect_h460_18_LRQKeepAliveData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1768 int offset = 0;
1769 asn1_ctx_t asn1_ctx;
1770 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1771 offset = dissect_h460_18_LRQKeepAliveData(tvb, offset, &asn1_ctx, tree, hf_h460_18_h460_18_LRQKeepAliveData_PDU);
1772 offset += 7; offset >>= 3;
1773 return offset;
1777 /* --- Module MEDIA-TRAVERSAL --- --- --- */
1781 static int
1782 dissect_h460_19_INTEGER_0_4294967295(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1783 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1784 0U, 4294967295U, NULL, false);
1786 return offset;
1791 static int
1792 dissect_h460_19_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1793 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1794 0U, 127U, NULL, false);
1796 return offset;
1800 static const per_sequence_t h460_19_TraversalParameters_sequence[] = {
1801 { &hf_h460_19_multiplexedMediaChannel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_TransportAddress },
1802 { &hf_h460_19_multiplexedMediaControlChannel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_TransportAddress },
1803 { &hf_h460_19_multiplexID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_19_INTEGER_0_4294967295 },
1804 { &hf_h460_19_keepAliveChannel, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h245_TransportAddress },
1805 { &hf_h460_19_keepAlivePayloadType, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_19_INTEGER_0_127 },
1806 { &hf_h460_19_keepAliveInterval, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h225_TimeToLive },
1807 { NULL, 0, 0, NULL }
1810 static int
1811 dissect_h460_19_TraversalParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1813 ett_h460_19_TraversalParameters, h460_19_TraversalParameters_sequence);
1815 return offset;
1818 /*--- PDUs ---*/
1820 static int dissect_h460_19_TraversalParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1821 int offset = 0;
1822 asn1_ctx_t asn1_ctx;
1823 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1824 offset = dissect_h460_19_TraversalParameters(tvb, offset, &asn1_ctx, tree, hf_h460_19_h460_19_TraversalParameters_PDU);
1825 offset += 7; offset >>= 3;
1826 return offset;
1830 /* --- Module MESSAGE-BROADCAST --- --- --- */
1833 static const per_sequence_t h460_21_SEQUENCE_SIZE_1_256_OF_Capability_sequence_of[1] = {
1834 { &hf_h460_21_capabilities_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h245_Capability },
1837 static int
1838 dissect_h460_21_SEQUENCE_SIZE_1_256_OF_Capability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1839 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1840 ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability, h460_21_SEQUENCE_SIZE_1_256_OF_Capability_sequence_of,
1841 1, 256, false);
1843 return offset;
1848 static int
1849 dissect_h460_21_INTEGER_1_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1850 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1851 1U, 65535U, NULL, false);
1853 return offset;
1857 static const per_sequence_t h460_21_ReceiveCapabilities_sequence[] = {
1858 { &hf_h460_21_capabilities, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_21_SEQUENCE_SIZE_1_256_OF_Capability },
1859 { &hf_h460_21_maxGroups , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_21_INTEGER_1_65535 },
1860 { NULL, 0, 0, NULL }
1863 static int
1864 dissect_h460_21_ReceiveCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1865 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1866 ett_h460_21_ReceiveCapabilities, h460_21_ReceiveCapabilities_sequence);
1868 return offset;
1873 static int
1874 dissect_h460_21_GloballyUniqueID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1875 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1876 16, 16, false, NULL);
1878 return offset;
1882 static const per_sequence_t h460_21_TransmitCapabilities_sequence[] = {
1883 { &hf_h460_21_groupIdentifer, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h460_21_GloballyUniqueID },
1884 { &hf_h460_21_capability , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_Capability },
1885 { &hf_h460_21_sourceAddress, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_h245_UnicastAddress },
1886 { NULL, 0, 0, NULL }
1889 static int
1890 dissect_h460_21_TransmitCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1891 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1892 ett_h460_21_TransmitCapabilities, h460_21_TransmitCapabilities_sequence);
1894 return offset;
1898 static const per_sequence_t h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities_sequence_of[1] = {
1899 { &hf_h460_21_transmitCapabilities_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_h460_21_TransmitCapabilities },
1902 static int
1903 dissect_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1904 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1905 ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities, h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities_sequence_of,
1906 1, 256, false);
1908 return offset;
1912 static const per_sequence_t h460_21_CapabilityAdvertisement_sequence[] = {
1913 { &hf_h460_21_receiveCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_21_ReceiveCapabilities },
1914 { &hf_h460_21_transmitCapabilities, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities },
1915 { NULL, 0, 0, NULL }
1918 static int
1919 dissect_h460_21_CapabilityAdvertisement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1920 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1921 ett_h460_21_CapabilityAdvertisement, h460_21_CapabilityAdvertisement_sequence);
1923 return offset;
1926 /*--- PDUs ---*/
1928 static int dissect_h460_21_CapabilityAdvertisement_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1929 int offset = 0;
1930 asn1_ctx_t asn1_ctx;
1931 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1932 offset = dissect_h460_21_CapabilityAdvertisement(tvb, offset, &asn1_ctx, tree, hf_h460_21_h460_21_CapabilityAdvertisement_PDU);
1933 offset += 7; offset >>= 3;
1934 return offset;
1938 static int
1939 dissect_ies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
1940 int offset = 0;
1942 if (q931_ie_handle) {
1943 call_dissector(q931_ie_handle, tvb, pinfo, tree);
1944 offset += tvb_reported_length_remaining(tvb, offset);
1946 return offset;
1949 static int
1950 dissect_ras(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
1951 int offset = 0;
1953 if (h225_ras_handle) {
1954 call_dissector(h225_ras_handle, tvb, pinfo, tree);
1955 offset += tvb_reported_length_remaining(tvb, offset);
1957 return offset;
1960 typedef struct _h460_feature_t {
1961 uint32_t opt;
1962 const char *id;
1963 const char *name;
1964 dissector_t content_pdu;
1965 /*---*/
1966 const char *key_gd;
1967 const char *key_fd;
1968 const char *key_gm;
1969 const char *key_gi;
1970 dissector_handle_t content_hnd;
1971 } h460_feature_t;
1973 /* Fill in the items after content_pdu */
1974 #define FFILL NULL, NULL, NULL, NULL, NULL
1976 /* options */
1977 #define GD 0x01 /* present in H.225 GenericData */
1978 #define FD 0x02 /* present in H.225 FeatureDescriptor */
1979 #define GM 0x04 /* present in H.245 GenericMessage */
1980 #define GI 0x08 /* present in H.245 GenericInformation */
1982 static h460_feature_t h460_feature_tab[] = {
1983 /* H.460.3 */
1984 { GD|FD, "2", "Number Portability", NULL, FFILL },
1985 { GD|FD, "2/1", "NumberPortabilityData", dissect_h460_2_NumberPortabilityInfo_PDU, FFILL },
1986 /* H.460.3 */
1987 { GD|FD, "3", "Circuit Status", NULL, FFILL },
1988 { GD|FD, "3/1", "Circuit Status Map", dissect_h460_3_CircuitStatus_PDU, FFILL },
1989 /* H.460.4 */
1990 { GD|FD, "4", "CallPriorityDesignation", NULL, FFILL },
1991 { GD|FD, "4/1", "CallPriorityRequest", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
1992 { GD|FD, "4/2", "CallPriorityConfirm", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
1993 { GD|FD, "4/3", "Country/InternationalNetworkCallOriginationRequest", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
1994 { GD|FD, "4/4", "Country/InternationalNetworkCallOriginationConfirm", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
1995 /* H.460.5 */
1996 { GD|FD, "5", "DuplicateIEs", NULL, FFILL },
1997 { GD|FD, "5/1", "IEsString", dissect_ies, FFILL },
1998 /* H.460.6 */
1999 { GD|FD, "6", "Extended Fast Connect", NULL, FFILL },
2000 { GD|FD, "6/1", "EFC Proposal", NULL, FFILL },
2001 { GD|FD, "6/2", "EFC Close All Media Channels", NULL, FFILL },
2002 { GD|FD, "6/3", "EFC Request New Proposals", NULL, FFILL },
2003 { GD|FD, "6/4", "EFC Require Symmetric Operation", NULL, FFILL },
2004 /* H.460.7 */
2005 { GD|FD, "7", "Digit Maps", NULL, FFILL },
2006 { FD, "7/1", "Digit Maps Length", NULL, FFILL },
2007 { FD, "7/2", "Digit Map Length for Overlapped Sending", NULL, FFILL },
2008 { FD, "7/3", "HTTP Digit Maps Download Capability", NULL, FFILL },
2009 { GD , "7/1", "Start Timer", NULL, FFILL },
2010 { GD , "7/2", "Short Timer", NULL, FFILL },
2011 { GD , "7/3", "Long Timer", NULL, FFILL },
2012 { GD , "7/4", "Digit Map String", NULL, FFILL },
2013 { GD , "7/5", "ToN Associated Digit Map", NULL, FFILL },
2014 { GD , "7/5/1", "Type of Number", NULL, FFILL },
2015 { GD , "7/5/2", "Digit Map Strings for ToN", NULL, FFILL },
2016 { GD , "7/6", "Digit Map URL", NULL, FFILL },
2017 /* H.460.8 */
2018 { GD|FD, "8", "Querying for Alternate Routes", NULL, FFILL },
2019 { GD|FD, "8/1", "Query Count", NULL, FFILL },
2020 { GD|FD, "8/2", "Call Termination Cause", NULL, FFILL },
2021 /* H.460.9 */
2022 { GD|FD, "9", "QoS-monitoring Reporting", NULL, FFILL },
2023 { GD|FD, "9/0", "qosMonitoringFinalOnly", NULL, FFILL },
2024 { GD|FD, "9/1", "qosMonitoringReportData", dissect_h460_9_QosMonitoringReportData_PDU, FFILL },
2025 { GD|FD, "9/2", "qosMonitoringExtendedRTPMetrics", dissect_h460_9_ExtendedRTPMetrics_PDU, FFILL },
2026 /* H.460.10 */
2027 { GD|FD, "10", "Call Party Category", NULL, FFILL },
2028 { GD|FD, "10/1", "Call party category info", dissect_h460_10_CallPartyCategoryInfo_PDU, FFILL },
2029 /* H.460.11 */
2030 { GD|FD, "11", "Delayed Call Establishment", NULL, FFILL },
2031 { GD|FD, "11/1", "Delay Point Indicator", NULL, FFILL },
2032 { GD|FD, "11/2", "Implicit DCE Release", NULL, FFILL },
2033 { GD|FD, "11/3", "Delay Point Reached", NULL, FFILL },
2034 { GD|FD, "11/4", "DCE Release", NULL, FFILL },
2035 /* H.460.12 */
2036 { GD|FD, "12", "Glare Control Indicator", NULL, FFILL },
2037 { GD|FD, "12/1", "Glare Control Indicator Parameter", NULL, FFILL },
2038 /* H.460.13 */
2039 { GD|FD, "13", "Called User Release Control", NULL, FFILL },
2040 { GD|FD, "13/1", "Called User Release Control", NULL, FFILL },
2041 /* H.460.14 */
2042 { GD|FD, "14", "Multi-Level Precedence and Preemption", NULL, FFILL },
2043 { GD|FD, "14/1", "MLPP Information", dissect_h460_14_MLPPInfo_PDU, FFILL },
2044 /* H.460.15 */
2045 { GD|FD, "15", "Call signalling transport channel suspension and redirection", NULL, FFILL },
2046 { GD|FD, "15/1", "Signalling channel suspend and redirect", dissect_h460_15_SignallingChannelData_PDU, FFILL },
2047 /* H.460.16 */
2048 { GD|FD, "16", "Multiple-message Release Sequence", NULL, FFILL },
2049 { GD|FD, "16/1", "MMRS use required", NULL, FFILL },
2050 { GD|FD, "16/2", "MMRS procedure", NULL, FFILL },
2051 { GD|FD, "16/3", "MMRS additional IEs", dissect_ies, FFILL },
2052 /* H.460.17 */
2053 { GD|FD, "17", "RAS over H.225.0", NULL, FFILL },
2054 { GD|FD, "17/1", "RAS message", dissect_ras, FFILL },
2055 /* H.460.18 */
2056 { GD|FD , "18", "Signalling Traversal", NULL, FFILL },
2057 { GD|FD , "18/1", "IncomingCallIndication", dissect_h460_18_IncomingCallIndication_PDU, FFILL },
2058 { GD|FD , "18/2", "LRQKeepAliveData", dissect_h460_18_LRQKeepAliveData_PDU, FFILL },
2059 { GM, "0.0.8.460.18.0.1", "Signalling Traversal", NULL, FFILL },
2060 { GM, "0.0.8.460.18.0.1-1", "connectionCorrelation", NULL, FFILL },
2061 { GM, "0.0.8.460.18.0.1-1/1", "callIdentifier", NULL, FFILL },
2062 { GM, "0.0.8.460.18.0.1-1/2", "answerCall", NULL, FFILL },
2063 /* H.460.19 */
2064 { GD|FD , "19", "mediaNATFWTraversal", NULL, FFILL },
2065 { GD|FD , "19/1", "supportTransmitMultiplexedMedia", NULL, FFILL },
2066 { GD|FD , "19/2", "mediaTraversalServer", NULL, FFILL },
2067 { GI, "0.0.8.460.19.0.1", "mediaNATFWTraversal", NULL, FFILL },
2068 { GI, "0.0.8.460.19.0.1/1", "Traversal Parameters", dissect_h460_19_TraversalParameters_PDU, FFILL },
2069 /* H.460.20 */
2070 { GD|FD, "20", "LocationSourceAddress", NULL, FFILL },
2071 { GD|FD, "20/1", "LocationSourceAddress", dissect_h225_ExtendedAliasAddress_PDU, FFILL },
2072 /* H.460.21 */
2073 { GD|FD, "21", "Message Broadcast", NULL, FFILL },
2074 { GD|FD, "21/1", "MessageBroadcastParameter", dissect_h460_21_CapabilityAdvertisement_PDU, FFILL },
2075 /* H.460.22 */
2076 { GD|FD, "22", "securityProtocolNegotiation", NULL, FFILL },
2077 { GD|FD, "22/1", "tlsSecurityProtocol", NULL, FFILL },
2078 { GD|FD, "22/1/1", "priority", NULL, FFILL },
2079 { GD|FD, "22/1/2", "connectionAddress", NULL, FFILL },
2080 { GD|FD, "22/2", "ipsecSecurityProtocol", NULL, FFILL },
2081 { GD|FD, "22/2/1", "priority", NULL, FFILL },
2082 { 0, NULL, NULL, NULL, FFILL },
2085 static h460_feature_t *find_ftr(const char *key) {
2086 h460_feature_t *ftr = NULL;
2087 h460_feature_t *f;
2089 for (f=h460_feature_tab; f->id; f++) {
2090 if (f->key_gd && !strcmp(key, f->key_gd)) { ftr = f; break; }
2091 if (f->key_fd && !strcmp(key, f->key_fd)) { ftr = f; break; }
2092 if (f->key_gm && !strcmp(key, f->key_gm)) { ftr = f; break; }
2093 if (f->key_gi && !strcmp(key, f->key_gi)) { ftr = f; break; }
2095 return ftr;
2098 /*--- dissect_h460_name -------------------------------------------*/
2099 static int
2100 dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data) {
2101 int offset = 0;
2102 asn1_ctx_t *actx;
2103 h460_feature_t *ftr;
2105 /* Reject the packet if data is NULL */
2106 if (data == NULL)
2107 return 0;
2108 actx = get_asn1_ctx(data);
2109 DISSECTOR_ASSERT(actx);
2111 if (tree) {
2112 ftr = find_ftr(pinfo->match_string);
2113 if (ftr) {
2114 proto_item_append_text(actx->created_item, " - %s", ftr->name);
2115 proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), ": %s", ftr->name);
2116 } else {
2117 proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
2121 return offset;
2124 /*--- proto_register_h460 ----------------------------------------------*/
2125 void proto_register_h460(void) {
2126 h460_feature_t *ftr;
2128 /* List of fields */
2129 static hf_register_info hf[] = {
2131 /* --- Module NUMBER-PORTABILITY --- --- --- */
2133 { &hf_h460_2_h460_2_NumberPortabilityInfo_PDU,
2134 { "NumberPortabilityInfo", "h460.2.NumberPortabilityInfo",
2135 FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityInfo_vals), 0,
2136 NULL, HFILL }},
2137 { &hf_h460_2_numberPortabilityRejectReason,
2138 { "numberPortabilityRejectReason", "h460.2.numberPortabilityRejectReason",
2139 FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityRejectReason_vals), 0,
2140 NULL, HFILL }},
2141 { &hf_h460_2_nUMBERPORTABILITYDATA,
2142 { "nUMBERPORTABILITYDATA", "h460.2.nUMBERPORTABILITYDATA_element",
2143 FT_NONE, BASE_NONE, NULL, 0,
2144 NULL, HFILL }},
2145 { &hf_h460_2_addressTranslated,
2146 { "addressTranslated", "h460.2.addressTranslated_element",
2147 FT_NONE, BASE_NONE, NULL, 0,
2148 NULL, HFILL }},
2149 { &hf_h460_2_portedAddress,
2150 { "portedAddress", "h460.2.portedAddress_element",
2151 FT_NONE, BASE_NONE, NULL, 0,
2152 "PortabilityAddress", HFILL }},
2153 { &hf_h460_2_routingAddress,
2154 { "routingAddress", "h460.2.routingAddress_element",
2155 FT_NONE, BASE_NONE, NULL, 0,
2156 "PortabilityAddress", HFILL }},
2157 { &hf_h460_2_regionalParams,
2158 { "regionalParams", "h460.2.regionalParams_element",
2159 FT_NONE, BASE_NONE, NULL, 0,
2160 "RegionalParameters", HFILL }},
2161 { &hf_h460_2_unspecified,
2162 { "unspecified", "h460.2.unspecified_element",
2163 FT_NONE, BASE_NONE, NULL, 0,
2164 NULL, HFILL }},
2165 { &hf_h460_2_qorPortedNumber,
2166 { "qorPortedNumber", "h460.2.qorPortedNumber_element",
2167 FT_NONE, BASE_NONE, NULL, 0,
2168 NULL, HFILL }},
2169 { &hf_h460_2_aliasAddress,
2170 { "aliasAddress", "h460.2.aliasAddress",
2171 FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2172 NULL, HFILL }},
2173 { &hf_h460_2_typeOfAddress,
2174 { "typeOfAddress", "h460.2.typeOfAddress",
2175 FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityTypeOfNumber_vals), 0,
2176 "NumberPortabilityTypeOfNumber", HFILL }},
2177 { &hf_h460_2_publicTypeOfNumber,
2178 { "publicTypeOfNumber", "h460.2.publicTypeOfNumber",
2179 FT_UINT32, BASE_DEC, VALS(h225_PublicTypeOfNumber_vals), 0,
2180 NULL, HFILL }},
2181 { &hf_h460_2_privateTypeOfNumber,
2182 { "privateTypeOfNumber", "h460.2.privateTypeOfNumber",
2183 FT_UINT32, BASE_DEC, VALS(h225_PrivateTypeOfNumber_vals), 0,
2184 NULL, HFILL }},
2185 { &hf_h460_2_portabilityTypeOfNumber,
2186 { "portabilityTypeOfNumber", "h460.2.portabilityTypeOfNumber",
2187 FT_UINT32, BASE_DEC, VALS(h460_2_PortabilityTypeOfNumber_vals), 0,
2188 NULL, HFILL }},
2189 { &hf_h460_2_portedNumber,
2190 { "portedNumber", "h460.2.portedNumber_element",
2191 FT_NONE, BASE_NONE, NULL, 0,
2192 NULL, HFILL }},
2193 { &hf_h460_2_routingNumber,
2194 { "routingNumber", "h460.2.routingNumber_element",
2195 FT_NONE, BASE_NONE, NULL, 0,
2196 NULL, HFILL }},
2197 { &hf_h460_2_concatenatedNumber,
2198 { "concatenatedNumber", "h460.2.concatenatedNumber_element",
2199 FT_NONE, BASE_NONE, NULL, 0,
2200 NULL, HFILL }},
2201 { &hf_h460_2_t35CountryCode,
2202 { "t35CountryCode", "h460.2.t35CountryCode",
2203 FT_UINT32, BASE_DEC, NULL, 0,
2204 "INTEGER_0_255", HFILL }},
2205 { &hf_h460_2_t35Extension,
2206 { "t35Extension", "h460.2.t35Extension",
2207 FT_UINT32, BASE_DEC, NULL, 0,
2208 "INTEGER_0_255", HFILL }},
2209 { &hf_h460_2_variantIdentifier,
2210 { "variantIdentifier", "h460.2.variantIdentifier",
2211 FT_UINT32, BASE_DEC, NULL, 0,
2212 "INTEGER_1_255", HFILL }},
2213 { &hf_h460_2_regionalData,
2214 { "regionalData", "h460.2.regionalData",
2215 FT_BYTES, BASE_NONE, NULL, 0,
2216 "OCTET_STRING", HFILL }},
2218 /* --- Module CIRCUIT-STATUS-MAP --- --- --- */
2220 { &hf_h460_3_h460_3_CircuitStatus_PDU,
2221 { "CircuitStatus", "h460.3.CircuitStatus_element",
2222 FT_NONE, BASE_NONE, NULL, 0,
2223 NULL, HFILL }},
2224 { &hf_h460_3_circuitStatusMap,
2225 { "circuitStatusMap", "h460.3.circuitStatusMap",
2226 FT_UINT32, BASE_DEC, NULL, 0,
2227 "SEQUENCE_OF_CircuitStatusMap", HFILL }},
2228 { &hf_h460_3_circuitStatusMap_item,
2229 { "CircuitStatusMap", "h460.3.CircuitStatusMap_element",
2230 FT_NONE, BASE_NONE, NULL, 0,
2231 NULL, HFILL }},
2232 { &hf_h460_3_statusType,
2233 { "statusType", "h460.3.statusType",
2234 FT_UINT32, BASE_DEC, VALS(h460_3_CircuitStatusType_vals), 0,
2235 "CircuitStatusType", HFILL }},
2236 { &hf_h460_3_baseCircuitID,
2237 { "baseCircuitID", "h460.3.baseCircuitID_element",
2238 FT_NONE, BASE_NONE, NULL, 0,
2239 "CircuitIdentifier", HFILL }},
2240 { &hf_h460_3_range,
2241 { "range", "h460.3.range",
2242 FT_UINT32, BASE_DEC, NULL, 0,
2243 "INTEGER_0_4095", HFILL }},
2244 { &hf_h460_3_status,
2245 { "status", "h460.3.status",
2246 FT_BYTES, BASE_NONE, NULL, 0,
2247 "OCTET_STRING", HFILL }},
2248 { &hf_h460_3_serviceStatus,
2249 { "serviceStatus", "h460.3.serviceStatus_element",
2250 FT_NONE, BASE_NONE, NULL, 0,
2251 NULL, HFILL }},
2252 { &hf_h460_3_busyStatus,
2253 { "busyStatus", "h460.3.busyStatus_element",
2254 FT_NONE, BASE_NONE, NULL, 0,
2255 NULL, HFILL }},
2257 /* --- Module CALL-PRIORITY --- --- --- */
2259 { &hf_h460_4_h460_4_CallPriorityInfo_PDU,
2260 { "CallPriorityInfo", "h460.4.CallPriorityInfo_element",
2261 FT_NONE, BASE_NONE, NULL, 0,
2262 NULL, HFILL }},
2263 { &hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU,
2264 { "CountryInternationalNetworkCallOriginationIdentification", "h460.4.CountryInternationalNetworkCallOriginationIdentification_element",
2265 FT_NONE, BASE_NONE, NULL, 0,
2266 NULL, HFILL }},
2267 { &hf_h460_4_priorityValue,
2268 { "priorityValue", "h460.4.priorityValue",
2269 FT_UINT32, BASE_DEC, VALS(h460_4_T_priorityValue_vals), 0,
2270 NULL, HFILL }},
2271 { &hf_h460_4_emergencyAuthorized,
2272 { "emergencyAuthorized", "h460.4.emergencyAuthorized_element",
2273 FT_NONE, BASE_NONE, NULL, 0,
2274 NULL, HFILL }},
2275 { &hf_h460_4_emergencyPublic,
2276 { "emergencyPublic", "h460.4.emergencyPublic_element",
2277 FT_NONE, BASE_NONE, NULL, 0,
2278 NULL, HFILL }},
2279 { &hf_h460_4_high,
2280 { "high", "h460.4.high_element",
2281 FT_NONE, BASE_NONE, NULL, 0,
2282 NULL, HFILL }},
2283 { &hf_h460_4_normal,
2284 { "normal", "h460.4.normal_element",
2285 FT_NONE, BASE_NONE, NULL, 0,
2286 NULL, HFILL }},
2287 { &hf_h460_4_priorityExtension,
2288 { "priorityExtension", "h460.4.priorityExtension",
2289 FT_UINT32, BASE_DEC, NULL, 0,
2290 "INTEGER_0_255", HFILL }},
2291 { &hf_h460_4_tokens,
2292 { "tokens", "h460.4.tokens",
2293 FT_UINT32, BASE_DEC, NULL, 0,
2294 "SEQUENCE_OF_ClearToken", HFILL }},
2295 { &hf_h460_4_tokens_item,
2296 { "ClearToken", "h460.4.ClearToken_element",
2297 FT_NONE, BASE_NONE, NULL, 0,
2298 NULL, HFILL }},
2299 { &hf_h460_4_cryptoTokens,
2300 { "cryptoTokens", "h460.4.cryptoTokens",
2301 FT_UINT32, BASE_DEC, NULL, 0,
2302 "SEQUENCE_OF_CryptoToken", HFILL }},
2303 { &hf_h460_4_cryptoTokens_item,
2304 { "CryptoToken", "h460.4.CryptoToken",
2305 FT_UINT32, BASE_DEC, VALS(h235_CryptoToken_vals), 0,
2306 NULL, HFILL }},
2307 { &hf_h460_4_rejectReason,
2308 { "rejectReason", "h460.4.rejectReason",
2309 FT_UINT32, BASE_DEC, VALS(h460_4_T_rejectReason_vals), 0,
2310 NULL, HFILL }},
2311 { &hf_h460_4_priorityUnavailable,
2312 { "priorityUnavailable", "h460.4.priorityUnavailable_element",
2313 FT_NONE, BASE_NONE, NULL, 0,
2314 NULL, HFILL }},
2315 { &hf_h460_4_priorityUnauthorized,
2316 { "priorityUnauthorized", "h460.4.priorityUnauthorized_element",
2317 FT_NONE, BASE_NONE, NULL, 0,
2318 NULL, HFILL }},
2319 { &hf_h460_4_priorityValueUnknown,
2320 { "priorityValueUnknown", "h460.4.priorityValueUnknown_element",
2321 FT_NONE, BASE_NONE, NULL, 0,
2322 NULL, HFILL }},
2323 { &hf_h460_4_numberingPlan,
2324 { "numberingPlan", "h460.4.numberingPlan",
2325 FT_UINT32, BASE_DEC, VALS(h460_4_T_numberingPlan_vals), 0,
2326 NULL, HFILL }},
2327 { &hf_h460_4_x121,
2328 { "x121", "h460.4.x121_element",
2329 FT_NONE, BASE_NONE, NULL, 0,
2330 NULL, HFILL }},
2331 { &hf_h460_4_x121CountryCode,
2332 { "countryCode", "h460.4.countryCode",
2333 FT_STRING, BASE_NONE, NULL, 0,
2334 "X121CountryCode", HFILL }},
2335 { &hf_h460_4_e164,
2336 { "e164", "h460.4.e164_element",
2337 FT_NONE, BASE_NONE, NULL, 0,
2338 NULL, HFILL }},
2339 { &hf_h460_4_e164CountryCode,
2340 { "countryCode", "h460.4.countryCode",
2341 FT_STRING, BASE_NONE, NULL, 0,
2342 "E164CountryCode", HFILL }},
2343 { &hf_h460_4_identificationCode,
2344 { "identificationCode", "h460.4.identificationCode",
2345 FT_STRING, BASE_NONE, NULL, 0,
2346 NULL, HFILL }},
2348 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
2350 { &hf_h460_9_h460_9_QosMonitoringReportData_PDU,
2351 { "QosMonitoringReportData", "h460.9.QosMonitoringReportData",
2352 FT_UINT32, BASE_DEC, VALS(h460_9_QosMonitoringReportData_vals), 0,
2353 NULL, HFILL }},
2354 { &hf_h460_9_h460_9_ExtendedRTPMetrics_PDU,
2355 { "ExtendedRTPMetrics", "h460.9.ExtendedRTPMetrics_element",
2356 FT_NONE, BASE_NONE, NULL, 0,
2357 NULL, HFILL }},
2358 { &hf_h460_9_extensionId,
2359 { "extensionId", "h460.9.extensionId",
2360 FT_UINT32, BASE_DEC, VALS(h225_GenericIdentifier_vals), 0,
2361 "GenericIdentifier", HFILL }},
2362 { &hf_h460_9_extensionContent,
2363 { "extensionContent", "h460.9.extensionContent",
2364 FT_BYTES, BASE_NONE, NULL, 0,
2365 "OCTET_STRING", HFILL }},
2366 { &hf_h460_9_rtpAddress,
2367 { "rtpAddress", "h460.9.rtpAddress_element",
2368 FT_NONE, BASE_NONE, NULL, 0,
2369 "TransportChannelInfo", HFILL }},
2370 { &hf_h460_9_rtcpAddress,
2371 { "rtcpAddress", "h460.9.rtcpAddress_element",
2372 FT_NONE, BASE_NONE, NULL, 0,
2373 "TransportChannelInfo", HFILL }},
2374 { &hf_h460_9_sessionId,
2375 { "sessionId", "h460.9.sessionId",
2376 FT_UINT32, BASE_DEC, NULL, 0,
2377 "INTEGER_1_255", HFILL }},
2378 { &hf_h460_9_nonStandardData,
2379 { "nonStandardData", "h460.9.nonStandardData_element",
2380 FT_NONE, BASE_NONE, NULL, 0,
2381 "NonStandardParameter", HFILL }},
2382 { &hf_h460_9_mediaSenderMeasures,
2383 { "mediaSenderMeasures", "h460.9.mediaSenderMeasures_element",
2384 FT_NONE, BASE_NONE, NULL, 0,
2385 NULL, HFILL }},
2386 { &hf_h460_9_worstEstimatedEnd2EndDelay,
2387 { "worstEstimatedEnd2EndDelay", "h460.9.worstEstimatedEnd2EndDelay",
2388 FT_UINT32, BASE_DEC, NULL, 0,
2389 "EstimatedEnd2EndDelay", HFILL }},
2390 { &hf_h460_9_meanEstimatedEnd2EndDelay,
2391 { "meanEstimatedEnd2EndDelay", "h460.9.meanEstimatedEnd2EndDelay",
2392 FT_UINT32, BASE_DEC, NULL, 0,
2393 "EstimatedEnd2EndDelay", HFILL }},
2394 { &hf_h460_9_mediaReceiverMeasures,
2395 { "mediaReceiverMeasures", "h460.9.mediaReceiverMeasures_element",
2396 FT_NONE, BASE_NONE, NULL, 0,
2397 NULL, HFILL }},
2398 { &hf_h460_9_cumulativeNumberOfPacketsLost,
2399 { "cumulativeNumberOfPacketsLost", "h460.9.cumulativeNumberOfPacketsLost",
2400 FT_UINT32, BASE_DEC, NULL, 0,
2401 "INTEGER_0_4294967295", HFILL }},
2402 { &hf_h460_9_packetLostRate,
2403 { "packetLostRate", "h460.9.packetLostRate",
2404 FT_UINT32, BASE_DEC, NULL, 0,
2405 "INTEGER_0_65535", HFILL }},
2406 { &hf_h460_9_worstJitter,
2407 { "worstJitter", "h460.9.worstJitter",
2408 FT_UINT32, BASE_DEC, NULL, 0,
2409 "CalculatedJitter", HFILL }},
2410 { &hf_h460_9_estimatedThroughput,
2411 { "estimatedThroughput", "h460.9.estimatedThroughput",
2412 FT_UINT32, BASE_DEC, NULL, 0,
2413 "BandWidth", HFILL }},
2414 { &hf_h460_9_fractionLostRate,
2415 { "fractionLostRate", "h460.9.fractionLostRate",
2416 FT_UINT32, BASE_DEC, NULL, 0,
2417 "INTEGER_0_65535", HFILL }},
2418 { &hf_h460_9_meanJitter,
2419 { "meanJitter", "h460.9.meanJitter",
2420 FT_UINT32, BASE_DEC, NULL, 0,
2421 "CalculatedJitter", HFILL }},
2422 { &hf_h460_9_extensions,
2423 { "extensions", "h460.9.extensions",
2424 FT_UINT32, BASE_DEC, NULL, 0,
2425 "SEQUENCE_OF_Extension", HFILL }},
2426 { &hf_h460_9_extensions_item,
2427 { "Extension", "h460.9.Extension_element",
2428 FT_NONE, BASE_NONE, NULL, 0,
2429 NULL, HFILL }},
2430 { &hf_h460_9_callReferenceValue,
2431 { "callReferenceValue", "h460.9.callReferenceValue",
2432 FT_UINT32, BASE_DEC, NULL, 0,
2433 NULL, HFILL }},
2434 { &hf_h460_9_conferenceID,
2435 { "conferenceID", "h460.9.conferenceID",
2436 FT_GUID, BASE_NONE, NULL, 0,
2437 "ConferenceIdentifier", HFILL }},
2438 { &hf_h460_9_callIdentifier,
2439 { "callIdentifier", "h460.9.callIdentifier_element",
2440 FT_NONE, BASE_NONE, NULL, 0,
2441 NULL, HFILL }},
2442 { &hf_h460_9_mediaChannelsQoS,
2443 { "mediaChannelsQoS", "h460.9.mediaChannelsQoS",
2444 FT_UINT32, BASE_DEC, NULL, 0,
2445 "SEQUENCE_OF_RTCPMeasures", HFILL }},
2446 { &hf_h460_9_mediaChannelsQoS_item,
2447 { "RTCPMeasures", "h460.9.RTCPMeasures_element",
2448 FT_NONE, BASE_NONE, NULL, 0,
2449 NULL, HFILL }},
2450 { &hf_h460_9_periodic,
2451 { "periodic", "h460.9.periodic_element",
2452 FT_NONE, BASE_NONE, NULL, 0,
2453 "PeriodicQoSMonReport", HFILL }},
2454 { &hf_h460_9_final,
2455 { "final", "h460.9.final_element",
2456 FT_NONE, BASE_NONE, NULL, 0,
2457 "FinalQosMonReport", HFILL }},
2458 { &hf_h460_9_interGK,
2459 { "interGK", "h460.9.interGK_element",
2460 FT_NONE, BASE_NONE, NULL, 0,
2461 "InterGKQosMonReport", HFILL }},
2462 { &hf_h460_9_perCallInfo,
2463 { "perCallInfo", "h460.9.perCallInfo",
2464 FT_UINT32, BASE_DEC, NULL, 0,
2465 "SEQUENCE_OF_PerCallQoSReport", HFILL }},
2466 { &hf_h460_9_perCallInfo_item,
2467 { "PerCallQoSReport", "h460.9.PerCallQoSReport_element",
2468 FT_NONE, BASE_NONE, NULL, 0,
2469 NULL, HFILL }},
2470 { &hf_h460_9_mediaInfo,
2471 { "mediaInfo", "h460.9.mediaInfo",
2472 FT_UINT32, BASE_DEC, NULL, 0,
2473 "SEQUENCE_OF_RTCPMeasures", HFILL }},
2474 { &hf_h460_9_mediaInfo_item,
2475 { "RTCPMeasures", "h460.9.RTCPMeasures_element",
2476 FT_NONE, BASE_NONE, NULL, 0,
2477 NULL, HFILL }},
2478 { &hf_h460_9_networkPacketLossRate,
2479 { "networkPacketLossRate", "h460.9.networkPacketLossRate",
2480 FT_UINT32, BASE_DEC, NULL, 0,
2481 "INTEGER_0_255", HFILL }},
2482 { &hf_h460_9_jitterBufferDiscardRate,
2483 { "jitterBufferDiscardRate", "h460.9.jitterBufferDiscardRate",
2484 FT_UINT32, BASE_DEC, NULL, 0,
2485 "INTEGER_0_255", HFILL }},
2486 { &hf_h460_9_burstMetrics,
2487 { "burstMetrics", "h460.9.burstMetrics_element",
2488 FT_NONE, BASE_NONE, NULL, 0,
2489 NULL, HFILL }},
2490 { &hf_h460_9_rtcpRoundTripDelay,
2491 { "rtcpRoundTripDelay", "h460.9.rtcpRoundTripDelay",
2492 FT_UINT32, BASE_DEC, NULL, 0,
2493 "INTEGER_0_65535", HFILL }},
2494 { &hf_h460_9_endSystemDelay,
2495 { "endSystemDelay", "h460.9.endSystemDelay",
2496 FT_UINT32, BASE_DEC, NULL, 0,
2497 "INTEGER_0_65535", HFILL }},
2498 { &hf_h460_9_signalLevel,
2499 { "signalLevel", "h460.9.signalLevel",
2500 FT_INT32, BASE_DEC, NULL, 0,
2501 "INTEGER_M127_10", HFILL }},
2502 { &hf_h460_9_noiseLevel,
2503 { "noiseLevel", "h460.9.noiseLevel",
2504 FT_INT32, BASE_DEC, NULL, 0,
2505 "INTEGER_M127_0", HFILL }},
2506 { &hf_h460_9_residualEchoReturnLoss,
2507 { "residualEchoReturnLoss", "h460.9.residualEchoReturnLoss",
2508 FT_UINT32, BASE_DEC, NULL, 0,
2509 "INTEGER_0_127", HFILL }},
2510 { &hf_h460_9_rFactor,
2511 { "rFactor", "h460.9.rFactor",
2512 FT_UINT32, BASE_DEC, NULL, 0,
2513 "INTEGER_0_100", HFILL }},
2514 { &hf_h460_9_extRFactor,
2515 { "extRFactor", "h460.9.extRFactor",
2516 FT_UINT32, BASE_DEC, NULL, 0,
2517 "INTEGER_0_100", HFILL }},
2518 { &hf_h460_9_estimatedMOSLQ,
2519 { "estimatedMOSLQ", "h460.9.estimatedMOSLQ",
2520 FT_UINT32, BASE_DEC, NULL, 0,
2521 "INTEGER_10_50", HFILL }},
2522 { &hf_h460_9_estimatedMOSCQ,
2523 { "estimatedMOSCQ", "h460.9.estimatedMOSCQ",
2524 FT_UINT32, BASE_DEC, NULL, 0,
2525 "INTEGER_10_50", HFILL }},
2526 { &hf_h460_9_plcType,
2527 { "plcType", "h460.9.plcType",
2528 FT_UINT32, BASE_DEC, VALS(h460_9_PLCtypes_vals), 0,
2529 "PLCtypes", HFILL }},
2530 { &hf_h460_9_jitterBufferParms,
2531 { "jitterBufferParms", "h460.9.jitterBufferParms_element",
2532 FT_NONE, BASE_NONE, NULL, 0,
2533 NULL, HFILL }},
2534 { &hf_h460_9_gmin,
2535 { "gmin", "h460.9.gmin",
2536 FT_UINT32, BASE_DEC, NULL, 0,
2537 "INTEGER_0_255", HFILL }},
2538 { &hf_h460_9_burstLossDensity,
2539 { "burstLossDensity", "h460.9.burstLossDensity",
2540 FT_UINT32, BASE_DEC, NULL, 0,
2541 "INTEGER_0_255", HFILL }},
2542 { &hf_h460_9_gapLossDensity,
2543 { "gapLossDensity", "h460.9.gapLossDensity",
2544 FT_UINT32, BASE_DEC, NULL, 0,
2545 "INTEGER_0_255", HFILL }},
2546 { &hf_h460_9_burstDuration,
2547 { "burstDuration", "h460.9.burstDuration",
2548 FT_UINT32, BASE_DEC, NULL, 0,
2549 "INTEGER_0_65535", HFILL }},
2550 { &hf_h460_9_gapDuration,
2551 { "gapDuration", "h460.9.gapDuration",
2552 FT_UINT32, BASE_DEC, NULL, 0,
2553 "INTEGER_0_65535", HFILL }},
2554 { &hf_h460_9_unspecified,
2555 { "unspecified", "h460.9.unspecified_element",
2556 FT_NONE, BASE_NONE, NULL, 0,
2557 NULL, HFILL }},
2558 { &hf_h460_9_disabled,
2559 { "disabled", "h460.9.disabled_element",
2560 FT_NONE, BASE_NONE, NULL, 0,
2561 NULL, HFILL }},
2562 { &hf_h460_9_enhanced,
2563 { "enhanced", "h460.9.enhanced_element",
2564 FT_NONE, BASE_NONE, NULL, 0,
2565 NULL, HFILL }},
2566 { &hf_h460_9_standard,
2567 { "standard", "h460.9.standard_element",
2568 FT_NONE, BASE_NONE, NULL, 0,
2569 NULL, HFILL }},
2570 { &hf_h460_9_jitterBufferType,
2571 { "jitterBufferType", "h460.9.jitterBufferType",
2572 FT_UINT32, BASE_DEC, VALS(h460_9_JitterBufferTypes_vals), 0,
2573 "JitterBufferTypes", HFILL }},
2574 { &hf_h460_9_jitterBufferAdaptRate,
2575 { "jitterBufferAdaptRate", "h460.9.jitterBufferAdaptRate",
2576 FT_UINT32, BASE_DEC, NULL, 0,
2577 "INTEGER_0_15", HFILL }},
2578 { &hf_h460_9_jitterBufferNominalSize,
2579 { "jitterBufferNominalSize", "h460.9.jitterBufferNominalSize",
2580 FT_UINT32, BASE_DEC, NULL, 0,
2581 "INTEGER_0_65535", HFILL }},
2582 { &hf_h460_9_jitterBufferMaxSize,
2583 { "jitterBufferMaxSize", "h460.9.jitterBufferMaxSize",
2584 FT_UINT32, BASE_DEC, NULL, 0,
2585 "INTEGER_0_65535", HFILL }},
2586 { &hf_h460_9_jitterBufferAbsoluteMax,
2587 { "jitterBufferAbsoluteMax", "h460.9.jitterBufferAbsoluteMax",
2588 FT_UINT32, BASE_DEC, NULL, 0,
2589 "INTEGER_0_65535", HFILL }},
2590 { &hf_h460_9_unknown,
2591 { "unknown", "h460.9.unknown_element",
2592 FT_NONE, BASE_NONE, NULL, 0,
2593 NULL, HFILL }},
2594 { &hf_h460_9_reserved,
2595 { "reserved", "h460.9.reserved_element",
2596 FT_NONE, BASE_NONE, NULL, 0,
2597 NULL, HFILL }},
2598 { &hf_h460_9_nonadaptive,
2599 { "nonadaptive", "h460.9.nonadaptive_element",
2600 FT_NONE, BASE_NONE, NULL, 0,
2601 NULL, HFILL }},
2602 { &hf_h460_9_adaptive,
2603 { "adaptive", "h460.9.adaptive_element",
2604 FT_NONE, BASE_NONE, NULL, 0,
2605 NULL, HFILL }},
2607 /* --- Module CALL-PARTY-CATEGORY --- --- --- */
2609 { &hf_h460_10_h460_10_CallPartyCategoryInfo_PDU,
2610 { "CallPartyCategoryInfo", "h460.10.CallPartyCategoryInfo_element",
2611 FT_NONE, BASE_NONE, NULL, 0,
2612 NULL, HFILL }},
2613 { &hf_h460_10_callPartyCategory,
2614 { "callPartyCategory", "h460.10.callPartyCategory",
2615 FT_UINT32, BASE_DEC, NULL, 0,
2616 NULL, HFILL }},
2617 { &hf_h460_10_originatingLineInfo,
2618 { "originatingLineInfo", "h460.10.originatingLineInfo",
2619 FT_UINT32, BASE_DEC, NULL, 0,
2620 NULL, HFILL }},
2622 /* --- Module MLPP --- --- --- */
2624 { &hf_h460_14_h460_14_MLPPInfo_PDU,
2625 { "MLPPInfo", "h460.14.MLPPInfo_element",
2626 FT_NONE, BASE_NONE, NULL, 0,
2627 NULL, HFILL }},
2628 { &hf_h460_14_precedence,
2629 { "precedence", "h460.14.precedence",
2630 FT_UINT32, BASE_DEC, VALS(h460_14_MlppPrecedence_vals), 0,
2631 "MlppPrecedence", HFILL }},
2632 { &hf_h460_14_mlppReason,
2633 { "mlppReason", "h460.14.mlppReason",
2634 FT_UINT32, BASE_DEC, VALS(h460_14_MlppReason_vals), 0,
2635 NULL, HFILL }},
2636 { &hf_h460_14_mlppNotification,
2637 { "mlppNotification", "h460.14.mlppNotification",
2638 FT_UINT32, BASE_DEC, VALS(h460_14_MlppNotification_vals), 0,
2639 NULL, HFILL }},
2640 { &hf_h460_14_alternateParty,
2641 { "alternateParty", "h460.14.alternateParty_element",
2642 FT_NONE, BASE_NONE, NULL, 0,
2643 NULL, HFILL }},
2644 { &hf_h460_14_releaseCall,
2645 { "releaseCall", "h460.14.releaseCall_element",
2646 FT_NONE, BASE_NONE, NULL, 0,
2647 NULL, HFILL }},
2648 { &hf_h460_14_preemptionPending,
2649 { "preemptionPending", "h460.14.preemptionPending_element",
2650 FT_NONE, BASE_NONE, NULL, 0,
2651 NULL, HFILL }},
2652 { &hf_h460_14_preemptionInProgress,
2653 { "preemptionInProgress", "h460.14.preemptionInProgress_element",
2654 FT_NONE, BASE_NONE, NULL, 0,
2655 NULL, HFILL }},
2656 { &hf_h460_14_preemptionEnd,
2657 { "preemptionEnd", "h460.14.preemptionEnd_element",
2658 FT_NONE, BASE_NONE, NULL, 0,
2659 NULL, HFILL }},
2660 { &hf_h460_14_preemptionComplete,
2661 { "preemptionComplete", "h460.14.preemptionComplete_element",
2662 FT_NONE, BASE_NONE, NULL, 0,
2663 NULL, HFILL }},
2664 { &hf_h460_14_altID,
2665 { "altID", "h460.14.altID",
2666 FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2667 "AliasAddress", HFILL }},
2668 { &hf_h460_14_altTimer,
2669 { "altTimer", "h460.14.altTimer",
2670 FT_UINT32, BASE_DEC, NULL, 0,
2671 "INTEGER_0_255", HFILL }},
2672 { &hf_h460_14_preemptCallID,
2673 { "preemptCallID", "h460.14.preemptCallID_element",
2674 FT_NONE, BASE_NONE, NULL, 0,
2675 "CallIdentifier", HFILL }},
2676 { &hf_h460_14_releaseReason,
2677 { "releaseReason", "h460.14.releaseReason",
2678 FT_UINT32, BASE_DEC, VALS(h460_14_MlppReason_vals), 0,
2679 "MlppReason", HFILL }},
2680 { &hf_h460_14_releaseDelay,
2681 { "releaseDelay", "h460.14.releaseDelay",
2682 FT_UINT32, BASE_DEC, NULL, 0,
2683 "INTEGER_0_255", HFILL }},
2685 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- --- */
2687 { &hf_h460_15_h460_15_SignallingChannelData_PDU,
2688 { "SignallingChannelData", "h460.15.SignallingChannelData_element",
2689 FT_NONE, BASE_NONE, NULL, 0,
2690 NULL, HFILL }},
2691 { &hf_h460_15_signallingChannelData,
2692 { "signallingChannelData", "h460.15.signallingChannelData",
2693 FT_UINT32, BASE_DEC, VALS(h460_15_T_signallingChannelData_vals), 0,
2694 NULL, HFILL }},
2695 { &hf_h460_15_channelSuspendRequest,
2696 { "channelSuspendRequest", "h460.15.channelSuspendRequest_element",
2697 FT_NONE, BASE_NONE, NULL, 0,
2698 NULL, HFILL }},
2699 { &hf_h460_15_channelSuspendResponse,
2700 { "channelSuspendResponse", "h460.15.channelSuspendResponse_element",
2701 FT_NONE, BASE_NONE, NULL, 0,
2702 NULL, HFILL }},
2703 { &hf_h460_15_channelSuspendConfirm,
2704 { "channelSuspendConfirm", "h460.15.channelSuspendConfirm_element",
2705 FT_NONE, BASE_NONE, NULL, 0,
2706 NULL, HFILL }},
2707 { &hf_h460_15_channelSuspendCancel,
2708 { "channelSuspendCancel", "h460.15.channelSuspendCancel_element",
2709 FT_NONE, BASE_NONE, NULL, 0,
2710 NULL, HFILL }},
2711 { &hf_h460_15_channelResumeRequest,
2712 { "channelResumeRequest", "h460.15.channelResumeRequest_element",
2713 FT_NONE, BASE_NONE, NULL, 0,
2714 NULL, HFILL }},
2715 { &hf_h460_15_channelResumeResponse,
2716 { "channelResumeResponse", "h460.15.channelResumeResponse_element",
2717 FT_NONE, BASE_NONE, NULL, 0,
2718 NULL, HFILL }},
2719 { &hf_h460_15_channelResumeAddress,
2720 { "channelResumeAddress", "h460.15.channelResumeAddress",
2721 FT_UINT32, BASE_DEC, NULL, 0,
2722 "SEQUENCE_OF_TransportAddress", HFILL }},
2723 { &hf_h460_15_channelResumeAddress_item,
2724 { "TransportAddress", "h460.15.TransportAddress",
2725 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
2726 NULL, HFILL }},
2727 { &hf_h460_15_immediateResume,
2728 { "immediateResume", "h460.15.immediateResume",
2729 FT_BOOLEAN, BASE_NONE, NULL, 0,
2730 "BOOLEAN", HFILL }},
2731 { &hf_h460_15_resetH245,
2732 { "resetH245", "h460.15.resetH245_element",
2733 FT_NONE, BASE_NONE, NULL, 0,
2734 NULL, HFILL }},
2735 { &hf_h460_15_okToSuspend,
2736 { "okToSuspend", "h460.15.okToSuspend",
2737 FT_BOOLEAN, BASE_NONE, NULL, 0,
2738 "BOOLEAN", HFILL }},
2739 { &hf_h460_15_randomNumber,
2740 { "randomNumber", "h460.15.randomNumber",
2741 FT_UINT32, BASE_DEC, NULL, 0,
2742 "INTEGER_0_4294967295", HFILL }},
2744 /* --- Module SIGNALLING-TRAVERSAL --- --- --- */
2746 { &hf_h460_18_h460_18_IncomingCallIndication_PDU,
2747 { "IncomingCallIndication", "h460.18.IncomingCallIndication_element",
2748 FT_NONE, BASE_NONE, NULL, 0,
2749 NULL, HFILL }},
2750 { &hf_h460_18_h460_18_LRQKeepAliveData_PDU,
2751 { "LRQKeepAliveData", "h460.18.LRQKeepAliveData_element",
2752 FT_NONE, BASE_NONE, NULL, 0,
2753 NULL, HFILL }},
2754 { &hf_h460_18_callSignallingAddress,
2755 { "callSignallingAddress", "h460.18.callSignallingAddress",
2756 FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
2757 "TransportAddress", HFILL }},
2758 { &hf_h460_18_callID,
2759 { "callID", "h460.18.callID_element",
2760 FT_NONE, BASE_NONE, NULL, 0,
2761 "CallIdentifier", HFILL }},
2762 { &hf_h460_18_lrqKeepAliveInterval,
2763 { "lrqKeepAliveInterval", "h460.18.lrqKeepAliveInterval",
2764 FT_UINT32, BASE_DEC, NULL, 0,
2765 "TimeToLive", HFILL }},
2767 /* --- Module MEDIA-TRAVERSAL --- --- --- */
2769 { &hf_h460_19_h460_19_TraversalParameters_PDU,
2770 { "TraversalParameters", "h460.19.TraversalParameters_element",
2771 FT_NONE, BASE_NONE, NULL, 0,
2772 NULL, HFILL }},
2773 { &hf_h460_19_multiplexedMediaChannel,
2774 { "multiplexedMediaChannel", "h460.19.multiplexedMediaChannel",
2775 FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2776 "TransportAddress", HFILL }},
2777 { &hf_h460_19_multiplexedMediaControlChannel,
2778 { "multiplexedMediaControlChannel", "h460.19.multiplexedMediaControlChannel",
2779 FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2780 "TransportAddress", HFILL }},
2781 { &hf_h460_19_multiplexID,
2782 { "multiplexID", "h460.19.multiplexID",
2783 FT_UINT32, BASE_DEC, NULL, 0,
2784 "INTEGER_0_4294967295", HFILL }},
2785 { &hf_h460_19_keepAliveChannel,
2786 { "keepAliveChannel", "h460.19.keepAliveChannel",
2787 FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2788 "TransportAddress", HFILL }},
2789 { &hf_h460_19_keepAlivePayloadType,
2790 { "keepAlivePayloadType", "h460.19.keepAlivePayloadType",
2791 FT_UINT32, BASE_DEC, NULL, 0,
2792 "INTEGER_0_127", HFILL }},
2793 { &hf_h460_19_keepAliveInterval,
2794 { "keepAliveInterval", "h460.19.keepAliveInterval",
2795 FT_UINT32, BASE_DEC, NULL, 0,
2796 "TimeToLive", HFILL }},
2798 /* --- Module MESSAGE-BROADCAST --- --- --- */
2800 { &hf_h460_21_h460_21_CapabilityAdvertisement_PDU,
2801 { "CapabilityAdvertisement", "h460.21.CapabilityAdvertisement_element",
2802 FT_NONE, BASE_NONE, NULL, 0,
2803 NULL, HFILL }},
2804 { &hf_h460_21_receiveCapabilities,
2805 { "receiveCapabilities", "h460.21.receiveCapabilities_element",
2806 FT_NONE, BASE_NONE, NULL, 0,
2807 NULL, HFILL }},
2808 { &hf_h460_21_transmitCapabilities,
2809 { "transmitCapabilities", "h460.21.transmitCapabilities",
2810 FT_UINT32, BASE_DEC, NULL, 0,
2811 "SEQUENCE_SIZE_1_256_OF_TransmitCapabilities", HFILL }},
2812 { &hf_h460_21_transmitCapabilities_item,
2813 { "TransmitCapabilities", "h460.21.TransmitCapabilities_element",
2814 FT_NONE, BASE_NONE, NULL, 0,
2815 NULL, HFILL }},
2816 { &hf_h460_21_capabilities,
2817 { "capabilities", "h460.21.capabilities",
2818 FT_UINT32, BASE_DEC, NULL, 0,
2819 "SEQUENCE_SIZE_1_256_OF_Capability", HFILL }},
2820 { &hf_h460_21_capabilities_item,
2821 { "Capability", "h460.21.Capability",
2822 FT_UINT32, BASE_DEC, VALS(h245_Capability_vals), 0,
2823 NULL, HFILL }},
2824 { &hf_h460_21_maxGroups,
2825 { "maxGroups", "h460.21.maxGroups",
2826 FT_UINT32, BASE_DEC, NULL, 0,
2827 "INTEGER_1_65535", HFILL }},
2828 { &hf_h460_21_groupIdentifer,
2829 { "groupIdentifer", "h460.21.groupIdentifer",
2830 FT_BYTES, BASE_NONE, NULL, 0,
2831 "GloballyUniqueID", HFILL }},
2832 { &hf_h460_21_capability,
2833 { "capability", "h460.21.capability",
2834 FT_UINT32, BASE_DEC, VALS(h245_Capability_vals), 0,
2835 NULL, HFILL }},
2836 { &hf_h460_21_sourceAddress,
2837 { "sourceAddress", "h460.21.sourceAddress",
2838 FT_UINT32, BASE_DEC, VALS(h245_UnicastAddress_vals), 0,
2839 "UnicastAddress", HFILL }},
2842 /* List of subtrees */
2843 static int *ett[] = {
2845 /* --- Module NUMBER-PORTABILITY --- --- --- */
2847 &ett_h460_2_NumberPortabilityInfo,
2848 &ett_h460_2_T_nUMBERPORTABILITYDATA,
2849 &ett_h460_2_NumberPortabilityRejectReason,
2850 &ett_h460_2_PortabilityAddress,
2851 &ett_h460_2_NumberPortabilityTypeOfNumber,
2852 &ett_h460_2_PortabilityTypeOfNumber,
2853 &ett_h460_2_RegionalParameters,
2855 /* --- Module CIRCUIT-STATUS-MAP --- --- --- */
2857 &ett_h460_3_CircuitStatus,
2858 &ett_h460_3_SEQUENCE_OF_CircuitStatusMap,
2859 &ett_h460_3_CircuitStatusMap,
2860 &ett_h460_3_CircuitStatusType,
2862 /* --- Module CALL-PRIORITY --- --- --- */
2864 &ett_h460_4_CallPriorityInfo,
2865 &ett_h460_4_T_priorityValue,
2866 &ett_h460_4_SEQUENCE_OF_ClearToken,
2867 &ett_h460_4_SEQUENCE_OF_CryptoToken,
2868 &ett_h460_4_T_rejectReason,
2869 &ett_h460_4_CountryInternationalNetworkCallOriginationIdentification,
2870 &ett_h460_4_T_numberingPlan,
2871 &ett_h460_4_T_x121,
2872 &ett_h460_4_T_e164,
2874 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
2876 &ett_h460_9_Extension,
2877 &ett_h460_9_RTCPMeasures,
2878 &ett_h460_9_T_mediaSenderMeasures,
2879 &ett_h460_9_T_mediaReceiverMeasures,
2880 &ett_h460_9_SEQUENCE_OF_Extension,
2881 &ett_h460_9_PerCallQoSReport,
2882 &ett_h460_9_SEQUENCE_OF_RTCPMeasures,
2883 &ett_h460_9_QosMonitoringReportData,
2884 &ett_h460_9_PeriodicQoSMonReport,
2885 &ett_h460_9_SEQUENCE_OF_PerCallQoSReport,
2886 &ett_h460_9_FinalQosMonReport,
2887 &ett_h460_9_InterGKQosMonReport,
2888 &ett_h460_9_ExtendedRTPMetrics,
2889 &ett_h460_9_BurstMetrics,
2890 &ett_h460_9_PLCtypes,
2891 &ett_h460_9_JitterBufferParms,
2892 &ett_h460_9_JitterBufferTypes,
2894 /* --- Module CALL-PARTY-CATEGORY --- --- --- */
2896 &ett_h460_10_CallPartyCategoryInfo,
2898 /* --- Module MLPP --- --- --- */
2900 &ett_h460_14_MLPPInfo,
2901 &ett_h460_14_MlppNotification,
2902 &ett_h460_14_AlternateParty,
2903 &ett_h460_14_ReleaseCall,
2905 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- --- */
2907 &ett_h460_15_SignallingChannelData,
2908 &ett_h460_15_T_signallingChannelData,
2909 &ett_h460_15_ChannelSuspendRequest,
2910 &ett_h460_15_SEQUENCE_OF_TransportAddress,
2911 &ett_h460_15_ChannelSuspendResponse,
2912 &ett_h460_15_ChannelSuspendConfirm,
2913 &ett_h460_15_ChannelSuspendCancel,
2914 &ett_h460_15_ChannelResumeRequest,
2915 &ett_h460_15_ChannelResumeResponse,
2917 /* --- Module SIGNALLING-TRAVERSAL --- --- --- */
2919 &ett_h460_18_IncomingCallIndication,
2920 &ett_h460_18_LRQKeepAliveData,
2922 /* --- Module MEDIA-TRAVERSAL --- --- --- */
2924 &ett_h460_19_TraversalParameters,
2926 /* --- Module MESSAGE-BROADCAST --- --- --- */
2928 &ett_h460_21_CapabilityAdvertisement,
2929 &ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities,
2930 &ett_h460_21_ReceiveCapabilities,
2931 &ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability,
2932 &ett_h460_21_TransmitCapabilities,
2935 /* Register protocol */
2936 proto_h460 = proto_register_protocol(PNAME, PSNAME, PFNAME);
2938 /* Register fields and subtrees */
2939 proto_register_field_array(proto_h460, hf, array_length(hf));
2940 proto_register_subtree_array(ett, array_length(ett));
2942 h460_name_handle = register_dissector(PFNAME, dissect_h460_name, proto_h460);
2943 for (ftr=h460_feature_tab; ftr->id; ftr++) {
2944 if (ftr->opt & GD) ftr->key_gd = wmem_strdup_printf(wmem_epan_scope(), "GenericData/%s", ftr->id);
2945 if (ftr->opt & FD) ftr->key_fd = wmem_strdup_printf(wmem_epan_scope(), "FeatureDescriptor/%s", ftr->id);
2946 if (ftr->opt & GM) ftr->key_gm = wmem_strdup_printf(wmem_epan_scope(), "GenericMessage/%s", ftr->id);
2947 if (ftr->opt & GI) ftr->key_gi = wmem_strdup_printf(wmem_epan_scope(), "GenericInformation/%s", ftr->id);
2948 if (ftr->content_pdu) ftr->content_hnd = create_dissector_handle(ftr->content_pdu, proto_h460);
2952 /*--- proto_reg_handoff_h460 -------------------------------------------*/
2953 void proto_reg_handoff_h460(void)
2955 h460_feature_t *ftr;
2957 q931_ie_handle = find_dissector_add_dependency("q931.ie", proto_h460);
2958 h225_ras_handle = find_dissector_add_dependency("h225.ras", proto_h460);
2960 for (ftr=h460_feature_tab; ftr->id; ftr++) {
2961 if (ftr->key_gd) dissector_add_string("h225.gef.name", ftr->key_gd, h460_name_handle);
2962 if (ftr->key_fd) dissector_add_string("h225.gef.name", ftr->key_fd, h460_name_handle);
2963 if (ftr->key_gm) dissector_add_string("h245.gef.name", ftr->key_gm, h460_name_handle);
2964 if (ftr->key_gi) dissector_add_string("h245.gef.name", ftr->key_gi, h460_name_handle);
2965 if (ftr->content_hnd) {
2966 if (ftr->key_gd) dissector_add_string("h225.gef.content", ftr->key_gd, ftr->content_hnd);
2967 if (ftr->key_fd) dissector_add_string("h225.gef.content", ftr->key_fd, ftr->content_hnd);
2968 if (ftr->key_gm) dissector_add_string("h245.gef.content", ftr->key_gm, ftr->content_hnd);
2969 if (ftr->key_gi) dissector_add_string("h245.gef.content", ftr->key_gi, ftr->content_hnd);