Fixup: tvb_get_string(z) -> tvb_get_string(z)_enc
[metze/wireshark/wip.git] / epan / dissectors / packet-h460.c
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 /* ../../tools/asn2wrs.py -c ./h460.cnf -s ./packet-h460-template -D . -O ../../epan/dissectors 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 */
5
6 /* Input file: packet-h460-template.c */
7
8 #line 1 "../../asn1/h460/packet-h460-template.c"
9 /* packet-h460.c
10  * Routines for H.460.x packet dissection
11  * 2007  Tomas Kukosa
12  *
13  * Wireshark - Network traffic analyzer
14  * By Gerald Combs <gerald@wireshark.org>
15  * Copyright 1998 Gerald Combs
16  *
17  * This program is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU General Public License
19  * as published by the Free Software Foundation; either version 2
20  * of the License, or (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30  */
31
32 #include "config.h"
33
34 #include <glib.h>
35 #include <epan/packet.h>
36 #include <epan/oids.h>
37 #include <epan/asn1.h>
38
39 #include <string.h>
40
41 #include "packet-per.h"
42 #include "packet-h225.h"
43 #include "packet-h235.h"
44 #include "packet-h245.h"
45
46 #define PNAME  "H.460 Supplementary Services"
47 #define PSNAME "H.460"
48 #define PFNAME "h460"
49
50 void proto_register_h460(void);
51 void proto_reg_handoff_h460(void);
52
53 /* Initialize the protocol and registered fields */
54 static int proto_h460 = -1;
55
56 /*--- Included file: packet-h460-hf.c ---*/
57 #line 1 "../../asn1/h460/packet-h460-hf.c"
58
59 /* --- Module NUMBER-PORTABILITY --- --- ---                                  */
60
61 static int hf_h460_2_h460_2_NumberPortabilityInfo_PDU = -1;  /* NumberPortabilityInfo */
62 static int hf_h460_2_numberPortabilityRejectReason = -1;  /* NumberPortabilityRejectReason */
63 static int hf_h460_2_nUMBERPORTABILITYDATA = -1;  /* T_nUMBERPORTABILITYDATA */
64 static int hf_h460_2_addressTranslated = -1;      /* NULL */
65 static int hf_h460_2_portedAddress = -1;          /* PortabilityAddress */
66 static int hf_h460_2_routingAddress = -1;         /* PortabilityAddress */
67 static int hf_h460_2_regionalParams = -1;         /* RegionalParameters */
68 static int hf_h460_2_unspecified = -1;            /* NULL */
69 static int hf_h460_2_qorPortedNumber = -1;        /* NULL */
70 static int hf_h460_2_aliasAddress = -1;           /* AliasAddress */
71 static int hf_h460_2_typeOfAddress = -1;          /* NumberPortabilityTypeOfNumber */
72 static int hf_h460_2_publicTypeOfNumber = -1;     /* PublicTypeOfNumber */
73 static int hf_h460_2_privateTypeOfNumber = -1;    /* PrivateTypeOfNumber */
74 static int hf_h460_2_portabilityTypeOfNumber = -1;  /* PortabilityTypeOfNumber */
75 static int hf_h460_2_portedNumber = -1;           /* NULL */
76 static int hf_h460_2_routingNumber = -1;          /* NULL */
77 static int hf_h460_2_concatenatedNumber = -1;     /* NULL */
78 static int hf_h460_2_t35CountryCode = -1;         /* INTEGER_0_255 */
79 static int hf_h460_2_t35Extension = -1;           /* INTEGER_0_255 */
80 static int hf_h460_2_variantIdentifier = -1;      /* INTEGER_1_255 */
81 static int hf_h460_2_regionalData = -1;           /* OCTET_STRING */
82
83 /* --- Module CIRCUIT-STATUS-MAP --- --- ---                                  */
84
85 static int hf_h460_3_h460_3_CircuitStatus_PDU = -1;  /* CircuitStatus */
86 static int hf_h460_3_circuitStatusMap = -1;       /* SEQUENCE_OF_CircuitStatusMap */
87 static int hf_h460_3_circuitStatusMap_item = -1;  /* CircuitStatusMap */
88 static int hf_h460_3_statusType = -1;             /* CircuitStatusType */
89 static int hf_h460_3_baseCircuitID = -1;          /* CircuitIdentifier */
90 static int hf_h460_3_range = -1;                  /* INTEGER_0_4095 */
91 static int hf_h460_3_status = -1;                 /* OCTET_STRING */
92 static int hf_h460_3_serviceStatus = -1;          /* NULL */
93 static int hf_h460_3_busyStatus = -1;             /* NULL */
94
95 /* --- Module CALL-PRIORITY --- --- ---                                       */
96
97 static int hf_h460_4_h460_4_CallPriorityInfo_PDU = -1;  /* CallPriorityInfo */
98 static int hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU = -1;  /* CountryInternationalNetworkCallOriginationIdentification */
99 static int hf_h460_4_priorityValue = -1;          /* T_priorityValue */
100 static int hf_h460_4_emergencyAuthorized = -1;    /* NULL */
101 static int hf_h460_4_emergencyPublic = -1;        /* NULL */
102 static int hf_h460_4_high = -1;                   /* NULL */
103 static int hf_h460_4_normal = -1;                 /* NULL */
104 static int hf_h460_4_priorityExtension = -1;      /* INTEGER_0_255 */
105 static int hf_h460_4_tokens = -1;                 /* SEQUENCE_OF_ClearToken */
106 static int hf_h460_4_tokens_item = -1;            /* ClearToken */
107 static int hf_h460_4_cryptoTokens = -1;           /* SEQUENCE_OF_CryptoToken */
108 static int hf_h460_4_cryptoTokens_item = -1;      /* CryptoToken */
109 static int hf_h460_4_rejectReason = -1;           /* T_rejectReason */
110 static int hf_h460_4_priorityUnavailable = -1;    /* NULL */
111 static int hf_h460_4_priorityUnauthorized = -1;   /* NULL */
112 static int hf_h460_4_priorityValueUnknown = -1;   /* NULL */
113 static int hf_h460_4_numberingPlan = -1;          /* T_numberingPlan */
114 static int hf_h460_4_x121 = -1;                   /* T_x121 */
115 static int hf_h460_4_x121CountryCode = -1;        /* X121CountryCode */
116 static int hf_h460_4_e164 = -1;                   /* T_e164 */
117 static int hf_h460_4_e164CountryCode = -1;        /* E164CountryCode */
118 static int hf_h460_4_identificationCode = -1;     /* T_identificationCode */
119
120 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
121
122 static int hf_h460_9_h460_9_QosMonitoringReportData_PDU = -1;  /* QosMonitoringReportData */
123 static int hf_h460_9_h460_9_ExtendedRTPMetrics_PDU = -1;  /* ExtendedRTPMetrics */
124 static int hf_h460_9_extensionId = -1;            /* GenericIdentifier */
125 static int hf_h460_9_extensionContent = -1;       /* OCTET_STRING */
126 static int hf_h460_9_rtpAddress = -1;             /* TransportChannelInfo */
127 static int hf_h460_9_rtcpAddress = -1;            /* TransportChannelInfo */
128 static int hf_h460_9_sessionId = -1;              /* INTEGER_1_255 */
129 static int hf_h460_9_nonStandardData = -1;        /* NonStandardParameter */
130 static int hf_h460_9_mediaSenderMeasures = -1;    /* T_mediaSenderMeasures */
131 static int hf_h460_9_worstEstimatedEnd2EndDelay = -1;  /* EstimatedEnd2EndDelay */
132 static int hf_h460_9_meanEstimatedEnd2EndDelay = -1;  /* EstimatedEnd2EndDelay */
133 static int hf_h460_9_mediaReceiverMeasures = -1;  /* T_mediaReceiverMeasures */
134 static int hf_h460_9_cumulativeNumberOfPacketsLost = -1;  /* INTEGER_0_4294967295 */
135 static int hf_h460_9_packetLostRate = -1;         /* INTEGER_0_65535 */
136 static int hf_h460_9_worstJitter = -1;            /* CalculatedJitter */
137 static int hf_h460_9_estimatedThroughput = -1;    /* BandWidth */
138 static int hf_h460_9_fractionLostRate = -1;       /* INTEGER_0_65535 */
139 static int hf_h460_9_meanJitter = -1;             /* CalculatedJitter */
140 static int hf_h460_9_extensions = -1;             /* SEQUENCE_OF_Extension */
141 static int hf_h460_9_extensions_item = -1;        /* Extension */
142 static int hf_h460_9_callReferenceValue = -1;     /* CallReferenceValue */
143 static int hf_h460_9_conferenceID = -1;           /* ConferenceIdentifier */
144 static int hf_h460_9_callIdentifier = -1;         /* CallIdentifier */
145 static int hf_h460_9_mediaChannelsQoS = -1;       /* SEQUENCE_OF_RTCPMeasures */
146 static int hf_h460_9_mediaChannelsQoS_item = -1;  /* RTCPMeasures */
147 static int hf_h460_9_periodic = -1;               /* PeriodicQoSMonReport */
148 static int hf_h460_9_final = -1;                  /* FinalQosMonReport */
149 static int hf_h460_9_interGK = -1;                /* InterGKQosMonReport */
150 static int hf_h460_9_perCallInfo = -1;            /* SEQUENCE_OF_PerCallQoSReport */
151 static int hf_h460_9_perCallInfo_item = -1;       /* PerCallQoSReport */
152 static int hf_h460_9_mediaInfo = -1;              /* SEQUENCE_OF_RTCPMeasures */
153 static int hf_h460_9_mediaInfo_item = -1;         /* RTCPMeasures */
154 static int hf_h460_9_networkPacketLossRate = -1;  /* INTEGER_0_255 */
155 static int hf_h460_9_jitterBufferDiscardRate = -1;  /* INTEGER_0_255 */
156 static int hf_h460_9_burstMetrics = -1;           /* BurstMetrics */
157 static int hf_h460_9_rtcpRoundTripDelay = -1;     /* INTEGER_0_65535 */
158 static int hf_h460_9_endSystemDelay = -1;         /* INTEGER_0_65535 */
159 static int hf_h460_9_signalLevel = -1;            /* INTEGER_M127_10 */
160 static int hf_h460_9_noiseLevel = -1;             /* INTEGER_M127_0 */
161 static int hf_h460_9_residualEchoReturnLoss = -1;  /* INTEGER_0_127 */
162 static int hf_h460_9_rFactor = -1;                /* INTEGER_0_100 */
163 static int hf_h460_9_extRFactor = -1;             /* INTEGER_0_100 */
164 static int hf_h460_9_estimatedMOSLQ = -1;         /* INTEGER_10_50 */
165 static int hf_h460_9_estimatedMOSCQ = -1;         /* INTEGER_10_50 */
166 static int hf_h460_9_plcType = -1;                /* PLCtypes */
167 static int hf_h460_9_jitterBufferParms = -1;      /* JitterBufferParms */
168 static int hf_h460_9_gmin = -1;                   /* INTEGER_0_255 */
169 static int hf_h460_9_burstLossDensity = -1;       /* INTEGER_0_255 */
170 static int hf_h460_9_gapLossDensity = -1;         /* INTEGER_0_255 */
171 static int hf_h460_9_burstDuration = -1;          /* INTEGER_0_65535 */
172 static int hf_h460_9_gapDuration = -1;            /* INTEGER_0_65535 */
173 static int hf_h460_9_unspecified = -1;            /* NULL */
174 static int hf_h460_9_disabled = -1;               /* NULL */
175 static int hf_h460_9_enhanced = -1;               /* NULL */
176 static int hf_h460_9_standard = -1;               /* NULL */
177 static int hf_h460_9_jitterBufferType = -1;       /* JitterBufferTypes */
178 static int hf_h460_9_jitterBufferAdaptRate = -1;  /* INTEGER_0_15 */
179 static int hf_h460_9_jitterBufferNominalSize = -1;  /* INTEGER_0_65535 */
180 static int hf_h460_9_jitterBufferMaxSize = -1;    /* INTEGER_0_65535 */
181 static int hf_h460_9_jitterBufferAbsoluteMax = -1;  /* INTEGER_0_65535 */
182 static int hf_h460_9_unknown = -1;                /* NULL */
183 static int hf_h460_9_reserved = -1;               /* NULL */
184 static int hf_h460_9_nonadaptive = -1;            /* NULL */
185 static int hf_h460_9_adaptive = -1;               /* NULL */
186
187 /* --- Module CALL-PARTY-CATEGORY --- --- ---                                 */
188
189 static int hf_h460_10_h460_10_CallPartyCategoryInfo_PDU = -1;  /* CallPartyCategoryInfo */
190 static int hf_h460_10_callPartyCategory = -1;     /* CallPartyCategory */
191 static int hf_h460_10_originatingLineInfo = -1;   /* OriginatingLineInfo */
192
193 /* --- Module MLPP --- --- ---                                                */
194
195 static int hf_h460_14_h460_14_MLPPInfo_PDU = -1;  /* MLPPInfo */
196 static int hf_h460_14_precedence = -1;            /* MlppPrecedence */
197 static int hf_h460_14_mlppReason = -1;            /* MlppReason */
198 static int hf_h460_14_mlppNotification = -1;      /* MlppNotification */
199 static int hf_h460_14_alternateParty = -1;        /* AlternateParty */
200 static int hf_h460_14_releaseCall = -1;           /* ReleaseCall */
201 static int hf_h460_14_preemptionPending = -1;     /* NULL */
202 static int hf_h460_14_preemptionInProgress = -1;  /* NULL */
203 static int hf_h460_14_preemptionEnd = -1;         /* NULL */
204 static int hf_h460_14_preemptionComplete = -1;    /* NULL */
205 static int hf_h460_14_altID = -1;                 /* AliasAddress */
206 static int hf_h460_14_altTimer = -1;              /* INTEGER_0_255 */
207 static int hf_h460_14_preemptCallID = -1;         /* CallIdentifier */
208 static int hf_h460_14_releaseReason = -1;         /* MlppReason */
209 static int hf_h460_14_releaseDelay = -1;          /* INTEGER_0_255 */
210
211 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- ---                 */
212
213 static int hf_h460_15_h460_15_SignallingChannelData_PDU = -1;  /* SignallingChannelData */
214 static int hf_h460_15_signallingChannelData = -1;  /* T_signallingChannelData */
215 static int hf_h460_15_channelSuspendRequest = -1;  /* ChannelSuspendRequest */
216 static int hf_h460_15_channelSuspendResponse = -1;  /* ChannelSuspendResponse */
217 static int hf_h460_15_channelSuspendConfirm = -1;  /* ChannelSuspendConfirm */
218 static int hf_h460_15_channelSuspendCancel = -1;  /* ChannelSuspendCancel */
219 static int hf_h460_15_channelResumeRequest = -1;  /* ChannelResumeRequest */
220 static int hf_h460_15_channelResumeResponse = -1;  /* ChannelResumeResponse */
221 static int hf_h460_15_channelResumeAddress = -1;  /* SEQUENCE_OF_TransportAddress */
222 static int hf_h460_15_channelResumeAddress_item = -1;  /* TransportAddress */
223 static int hf_h460_15_immediateResume = -1;       /* BOOLEAN */
224 static int hf_h460_15_resetH245 = -1;             /* NULL */
225 static int hf_h460_15_okToSuspend = -1;           /* BOOLEAN */
226 static int hf_h460_15_randomNumber = -1;          /* INTEGER_0_4294967295 */
227
228 /* --- Module SIGNALLING-TRAVERSAL --- --- ---                                */
229
230 static int hf_h460_18_h460_18_IncomingCallIndication_PDU = -1;  /* IncomingCallIndication */
231 static int hf_h460_18_h460_18_LRQKeepAliveData_PDU = -1;  /* LRQKeepAliveData */
232 static int hf_h460_18_callSignallingAddress = -1;  /* TransportAddress */
233 static int hf_h460_18_callID = -1;                /* CallIdentifier */
234 static int hf_h460_18_lrqKeepAliveInterval = -1;  /* TimeToLive */
235
236 /* --- Module MEDIA-TRAVERSAL --- --- ---                                     */
237
238 static int hf_h460_19_h460_19_TraversalParameters_PDU = -1;  /* TraversalParameters */
239 static int hf_h460_19_multiplexedMediaChannel = -1;  /* TransportAddress */
240 static int hf_h460_19_multiplexedMediaControlChannel = -1;  /* TransportAddress */
241 static int hf_h460_19_multiplexID = -1;           /* INTEGER_0_4294967295 */
242 static int hf_h460_19_keepAliveChannel = -1;      /* TransportAddress */
243 static int hf_h460_19_keepAlivePayloadType = -1;  /* INTEGER_0_127 */
244 static int hf_h460_19_keepAliveInterval = -1;     /* TimeToLive */
245
246 /* --- Module MESSAGE-BROADCAST --- --- ---                                   */
247
248 static int hf_h460_21_h460_21_CapabilityAdvertisement_PDU = -1;  /* CapabilityAdvertisement */
249 static int hf_h460_21_receiveCapabilities = -1;   /* ReceiveCapabilities */
250 static int hf_h460_21_transmitCapabilities = -1;  /* SEQUENCE_SIZE_1_256_OF_TransmitCapabilities */
251 static int hf_h460_21_transmitCapabilities_item = -1;  /* TransmitCapabilities */
252 static int hf_h460_21_capabilities = -1;          /* SEQUENCE_SIZE_1_256_OF_Capability */
253 static int hf_h460_21_capabilities_item = -1;     /* Capability */
254 static int hf_h460_21_maxGroups = -1;             /* INTEGER_1_65535 */
255 static int hf_h460_21_groupIdentifer = -1;        /* GloballyUniqueID */
256 static int hf_h460_21_capability = -1;            /* Capability */
257 static int hf_h460_21_sourceAddress = -1;         /* UnicastAddress */
258
259 /*--- End of included file: packet-h460-hf.c ---*/
260 #line 48 "../../asn1/h460/packet-h460-template.c"
261
262 /* Initialize the subtree pointers */
263
264 /*--- Included file: packet-h460-ett.c ---*/
265 #line 1 "../../asn1/h460/packet-h460-ett.c"
266
267 /* --- Module NUMBER-PORTABILITY --- --- ---                                  */
268
269 static gint ett_h460_2_NumberPortabilityInfo = -1;
270 static gint ett_h460_2_T_nUMBERPORTABILITYDATA = -1;
271 static gint ett_h460_2_NumberPortabilityRejectReason = -1;
272 static gint ett_h460_2_PortabilityAddress = -1;
273 static gint ett_h460_2_NumberPortabilityTypeOfNumber = -1;
274 static gint ett_h460_2_PortabilityTypeOfNumber = -1;
275 static gint ett_h460_2_RegionalParameters = -1;
276
277 /* --- Module CIRCUIT-STATUS-MAP --- --- ---                                  */
278
279 static gint ett_h460_3_CircuitStatus = -1;
280 static gint ett_h460_3_SEQUENCE_OF_CircuitStatusMap = -1;
281 static gint ett_h460_3_CircuitStatusMap = -1;
282 static gint ett_h460_3_CircuitStatusType = -1;
283
284 /* --- Module CALL-PRIORITY --- --- ---                                       */
285
286 static gint ett_h460_4_CallPriorityInfo = -1;
287 static gint ett_h460_4_T_priorityValue = -1;
288 static gint ett_h460_4_SEQUENCE_OF_ClearToken = -1;
289 static gint ett_h460_4_SEQUENCE_OF_CryptoToken = -1;
290 static gint ett_h460_4_T_rejectReason = -1;
291 static gint ett_h460_4_CountryInternationalNetworkCallOriginationIdentification = -1;
292 static gint ett_h460_4_T_numberingPlan = -1;
293 static gint ett_h460_4_T_x121 = -1;
294 static gint ett_h460_4_T_e164 = -1;
295
296 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
297
298 static gint ett_h460_9_Extension = -1;
299 static gint ett_h460_9_RTCPMeasures = -1;
300 static gint ett_h460_9_T_mediaSenderMeasures = -1;
301 static gint ett_h460_9_T_mediaReceiverMeasures = -1;
302 static gint ett_h460_9_SEQUENCE_OF_Extension = -1;
303 static gint ett_h460_9_PerCallQoSReport = -1;
304 static gint ett_h460_9_SEQUENCE_OF_RTCPMeasures = -1;
305 static gint ett_h460_9_QosMonitoringReportData = -1;
306 static gint ett_h460_9_PeriodicQoSMonReport = -1;
307 static gint ett_h460_9_SEQUENCE_OF_PerCallQoSReport = -1;
308 static gint ett_h460_9_FinalQosMonReport = -1;
309 static gint ett_h460_9_InterGKQosMonReport = -1;
310 static gint ett_h460_9_ExtendedRTPMetrics = -1;
311 static gint ett_h460_9_BurstMetrics = -1;
312 static gint ett_h460_9_PLCtypes = -1;
313 static gint ett_h460_9_JitterBufferParms = -1;
314 static gint ett_h460_9_JitterBufferTypes = -1;
315
316 /* --- Module CALL-PARTY-CATEGORY --- --- ---                                 */
317
318 static gint ett_h460_10_CallPartyCategoryInfo = -1;
319
320 /* --- Module MLPP --- --- ---                                                */
321
322 static gint ett_h460_14_MLPPInfo = -1;
323 static gint ett_h460_14_MlppNotification = -1;
324 static gint ett_h460_14_AlternateParty = -1;
325 static gint ett_h460_14_ReleaseCall = -1;
326
327 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- ---                 */
328
329 static gint ett_h460_15_SignallingChannelData = -1;
330 static gint ett_h460_15_T_signallingChannelData = -1;
331 static gint ett_h460_15_ChannelSuspendRequest = -1;
332 static gint ett_h460_15_SEQUENCE_OF_TransportAddress = -1;
333 static gint ett_h460_15_ChannelSuspendResponse = -1;
334 static gint ett_h460_15_ChannelSuspendConfirm = -1;
335 static gint ett_h460_15_ChannelSuspendCancel = -1;
336 static gint ett_h460_15_ChannelResumeRequest = -1;
337 static gint ett_h460_15_ChannelResumeResponse = -1;
338
339 /* --- Module SIGNALLING-TRAVERSAL --- --- ---                                */
340
341 static gint ett_h460_18_IncomingCallIndication = -1;
342 static gint ett_h460_18_LRQKeepAliveData = -1;
343
344 /* --- Module MEDIA-TRAVERSAL --- --- ---                                     */
345
346 static gint ett_h460_19_TraversalParameters = -1;
347
348 /* --- Module MESSAGE-BROADCAST --- --- ---                                   */
349
350 static gint ett_h460_21_CapabilityAdvertisement = -1;
351 static gint ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities = -1;
352 static gint ett_h460_21_ReceiveCapabilities = -1;
353 static gint ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability = -1;
354 static gint ett_h460_21_TransmitCapabilities = -1;
355
356 /*--- End of included file: packet-h460-ett.c ---*/
357 #line 51 "../../asn1/h460/packet-h460-template.c"
358
359 /* Subdissectors */
360 static dissector_handle_t q931_ie_handle = NULL;
361 static dissector_handle_t h225_ras_handle = NULL;
362
363
364 /*--- Included file: packet-h460-fn.c ---*/
365 #line 1 "../../asn1/h460/packet-h460-fn.c"
366
367 /* --- Module NUMBER-PORTABILITY --- --- ---                                  */
368
369
370
371 static int
372 dissect_h460_2_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
373   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
374
375   return offset;
376 }
377
378
379 static const value_string h460_2_NumberPortabilityRejectReason_vals[] = {
380   {   0, "unspecified" },
381   {   1, "qorPortedNumber" },
382   { 0, NULL }
383 };
384
385 static const per_choice_t h460_2_NumberPortabilityRejectReason_choice[] = {
386   {   0, &hf_h460_2_unspecified  , ASN1_EXTENSION_ROOT    , dissect_h460_2_NULL },
387   {   1, &hf_h460_2_qorPortedNumber, ASN1_EXTENSION_ROOT    , dissect_h460_2_NULL },
388   { 0, NULL, 0, NULL }
389 };
390
391 static int
392 dissect_h460_2_NumberPortabilityRejectReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
393   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
394                                  ett_h460_2_NumberPortabilityRejectReason, h460_2_NumberPortabilityRejectReason_choice,
395                                  NULL);
396
397   return offset;
398 }
399
400
401 static const value_string h460_2_PortabilityTypeOfNumber_vals[] = {
402   {   0, "portedNumber" },
403   {   1, "routingNumber" },
404   {   2, "concatenatedNumber" },
405   { 0, NULL }
406 };
407
408 static const per_choice_t h460_2_PortabilityTypeOfNumber_choice[] = {
409   {   0, &hf_h460_2_portedNumber , ASN1_EXTENSION_ROOT    , dissect_h460_2_NULL },
410   {   1, &hf_h460_2_routingNumber, ASN1_EXTENSION_ROOT    , dissect_h460_2_NULL },
411   {   2, &hf_h460_2_concatenatedNumber, ASN1_EXTENSION_ROOT    , dissect_h460_2_NULL },
412   { 0, NULL, 0, NULL }
413 };
414
415 static int
416 dissect_h460_2_PortabilityTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
417   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
418                                  ett_h460_2_PortabilityTypeOfNumber, h460_2_PortabilityTypeOfNumber_choice,
419                                  NULL);
420
421   return offset;
422 }
423
424
425 static const value_string h460_2_NumberPortabilityTypeOfNumber_vals[] = {
426   {   0, "publicTypeOfNumber" },
427   {   1, "privateTypeOfNumber" },
428   {   2, "portabilityTypeOfNumber" },
429   { 0, NULL }
430 };
431
432 static const per_choice_t h460_2_NumberPortabilityTypeOfNumber_choice[] = {
433   {   0, &hf_h460_2_publicTypeOfNumber, ASN1_EXTENSION_ROOT    , dissect_h225_PublicTypeOfNumber },
434   {   1, &hf_h460_2_privateTypeOfNumber, ASN1_EXTENSION_ROOT    , dissect_h225_PrivateTypeOfNumber },
435   {   2, &hf_h460_2_portabilityTypeOfNumber, ASN1_EXTENSION_ROOT    , dissect_h460_2_PortabilityTypeOfNumber },
436   { 0, NULL, 0, NULL }
437 };
438
439 static int
440 dissect_h460_2_NumberPortabilityTypeOfNumber(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
441   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
442                                  ett_h460_2_NumberPortabilityTypeOfNumber, h460_2_NumberPortabilityTypeOfNumber_choice,
443                                  NULL);
444
445   return offset;
446 }
447
448
449 static const per_sequence_t h460_2_PortabilityAddress_sequence[] = {
450   { &hf_h460_2_aliasAddress , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
451   { &hf_h460_2_typeOfAddress, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_NumberPortabilityTypeOfNumber },
452   { NULL, 0, 0, NULL }
453 };
454
455 static int
456 dissect_h460_2_PortabilityAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
458                                    ett_h460_2_PortabilityAddress, h460_2_PortabilityAddress_sequence);
459
460   return offset;
461 }
462
463
464
465 static int
466 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_) {
467   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
468                                                             0U, 255U, NULL, FALSE);
469
470   return offset;
471 }
472
473
474
475 static int
476 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_) {
477   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
478                                                             1U, 255U, NULL, FALSE);
479
480   return offset;
481 }
482
483
484
485 static int
486 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_) {
487   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
488                                        NO_BOUND, NO_BOUND, FALSE, NULL);
489
490   return offset;
491 }
492
493
494 static const per_sequence_t h460_2_RegionalParameters_sequence[] = {
495   { &hf_h460_2_t35CountryCode, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_2_INTEGER_0_255 },
496   { &hf_h460_2_t35Extension , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_2_INTEGER_0_255 },
497   { &hf_h460_2_variantIdentifier, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_INTEGER_1_255 },
498   { &hf_h460_2_regionalData , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_2_OCTET_STRING },
499   { NULL, 0, 0, NULL }
500 };
501
502 static int
503 dissect_h460_2_RegionalParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
504   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
505                                    ett_h460_2_RegionalParameters, h460_2_RegionalParameters_sequence);
506
507   return offset;
508 }
509
510
511 static const per_sequence_t h460_2_T_nUMBERPORTABILITYDATA_sequence[] = {
512   { &hf_h460_2_addressTranslated, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_NULL },
513   { &hf_h460_2_portedAddress, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_PortabilityAddress },
514   { &hf_h460_2_routingAddress, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_PortabilityAddress },
515   { &hf_h460_2_regionalParams, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_2_RegionalParameters },
516   { NULL, 0, 0, NULL }
517 };
518
519 static int
520 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_) {
521   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
522                                    ett_h460_2_T_nUMBERPORTABILITYDATA, h460_2_T_nUMBERPORTABILITYDATA_sequence);
523
524   return offset;
525 }
526
527
528 static const value_string h460_2_NumberPortabilityInfo_vals[] = {
529   {   0, "numberPortabilityRejectReason" },
530   {   1, "nUMBERPORTABILITYDATA" },
531   { 0, NULL }
532 };
533
534 static const per_choice_t h460_2_NumberPortabilityInfo_choice[] = {
535   {   0, &hf_h460_2_numberPortabilityRejectReason, ASN1_EXTENSION_ROOT    , dissect_h460_2_NumberPortabilityRejectReason },
536   {   1, &hf_h460_2_nUMBERPORTABILITYDATA, ASN1_EXTENSION_ROOT    , dissect_h460_2_T_nUMBERPORTABILITYDATA },
537   { 0, NULL, 0, NULL }
538 };
539
540 static int
541 dissect_h460_2_NumberPortabilityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
542   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
543                                  ett_h460_2_NumberPortabilityInfo, h460_2_NumberPortabilityInfo_choice,
544                                  NULL);
545
546   return offset;
547 }
548
549 /*--- PDUs ---*/
550
551 static int dissect_h460_2_NumberPortabilityInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
552   int offset = 0;
553   asn1_ctx_t asn1_ctx;
554   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
555   offset = dissect_h460_2_NumberPortabilityInfo(tvb, offset, &asn1_ctx, tree, hf_h460_2_h460_2_NumberPortabilityInfo_PDU);
556   offset += 7; offset >>= 3;
557   return offset;
558 }
559
560
561 /* --- Module CIRCUIT-STATUS-MAP --- --- ---                                  */
562
563
564
565 static int
566 dissect_h460_3_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
567   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
568
569   return offset;
570 }
571
572
573 static const value_string h460_3_CircuitStatusType_vals[] = {
574   {   0, "serviceStatus" },
575   {   1, "busyStatus" },
576   { 0, NULL }
577 };
578
579 static const per_choice_t h460_3_CircuitStatusType_choice[] = {
580   {   0, &hf_h460_3_serviceStatus, ASN1_EXTENSION_ROOT    , dissect_h460_3_NULL },
581   {   1, &hf_h460_3_busyStatus   , ASN1_EXTENSION_ROOT    , dissect_h460_3_NULL },
582   { 0, NULL, 0, NULL }
583 };
584
585 static int
586 dissect_h460_3_CircuitStatusType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
587   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
588                                  ett_h460_3_CircuitStatusType, h460_3_CircuitStatusType_choice,
589                                  NULL);
590
591   return offset;
592 }
593
594
595
596 static int
597 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_) {
598   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
599                                                             0U, 4095U, NULL, FALSE);
600
601   return offset;
602 }
603
604
605
606 static int
607 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_) {
608   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
609                                        NO_BOUND, NO_BOUND, FALSE, NULL);
610
611   return offset;
612 }
613
614
615 static const per_sequence_t h460_3_CircuitStatusMap_sequence[] = {
616   { &hf_h460_3_statusType   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_3_CircuitStatusType },
617   { &hf_h460_3_baseCircuitID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CircuitIdentifier },
618   { &hf_h460_3_range        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_3_INTEGER_0_4095 },
619   { &hf_h460_3_status       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_3_OCTET_STRING },
620   { NULL, 0, 0, NULL }
621 };
622
623 static int
624 dissect_h460_3_CircuitStatusMap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
625   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
626                                    ett_h460_3_CircuitStatusMap, h460_3_CircuitStatusMap_sequence);
627
628   return offset;
629 }
630
631
632 static const per_sequence_t h460_3_SEQUENCE_OF_CircuitStatusMap_sequence_of[1] = {
633   { &hf_h460_3_circuitStatusMap_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h460_3_CircuitStatusMap },
634 };
635
636 static int
637 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_) {
638   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
639                                       ett_h460_3_SEQUENCE_OF_CircuitStatusMap, h460_3_SEQUENCE_OF_CircuitStatusMap_sequence_of);
640
641   return offset;
642 }
643
644
645 static const per_sequence_t h460_3_CircuitStatus_sequence[] = {
646   { &hf_h460_3_circuitStatusMap, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_3_SEQUENCE_OF_CircuitStatusMap },
647   { NULL, 0, 0, NULL }
648 };
649
650 static int
651 dissect_h460_3_CircuitStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
652   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
653                                    ett_h460_3_CircuitStatus, h460_3_CircuitStatus_sequence);
654
655   return offset;
656 }
657
658 /*--- PDUs ---*/
659
660 static int dissect_h460_3_CircuitStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
661   int offset = 0;
662   asn1_ctx_t asn1_ctx;
663   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
664   offset = dissect_h460_3_CircuitStatus(tvb, offset, &asn1_ctx, tree, hf_h460_3_h460_3_CircuitStatus_PDU);
665   offset += 7; offset >>= 3;
666   return offset;
667 }
668
669
670 /* --- Module CALL-PRIORITY --- --- ---                                       */
671
672
673
674 static int
675 dissect_h460_4_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
676   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
677
678   return offset;
679 }
680
681
682 static const value_string h460_4_T_priorityValue_vals[] = {
683   {   0, "emergencyAuthorized" },
684   {   1, "emergencyPublic" },
685   {   2, "high" },
686   {   3, "normal" },
687   { 0, NULL }
688 };
689
690 static const per_choice_t h460_4_T_priorityValue_choice[] = {
691   {   0, &hf_h460_4_emergencyAuthorized, ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
692   {   1, &hf_h460_4_emergencyPublic, ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
693   {   2, &hf_h460_4_high         , ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
694   {   3, &hf_h460_4_normal       , ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
695   { 0, NULL, 0, NULL }
696 };
697
698 static int
699 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_) {
700   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
701                                  ett_h460_4_T_priorityValue, h460_4_T_priorityValue_choice,
702                                  NULL);
703
704   return offset;
705 }
706
707
708
709 static int
710 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_) {
711   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
712                                                             0U, 255U, NULL, FALSE);
713
714   return offset;
715 }
716
717
718 static const per_sequence_t h460_4_SEQUENCE_OF_ClearToken_sequence_of[1] = {
719   { &hf_h460_4_tokens_item  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h235_ClearToken },
720 };
721
722 static int
723 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_) {
724   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
725                                       ett_h460_4_SEQUENCE_OF_ClearToken, h460_4_SEQUENCE_OF_ClearToken_sequence_of);
726
727   return offset;
728 }
729
730
731 static const per_sequence_t h460_4_SEQUENCE_OF_CryptoToken_sequence_of[1] = {
732   { &hf_h460_4_cryptoTokens_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h235_CryptoToken },
733 };
734
735 static int
736 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_) {
737   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
738                                       ett_h460_4_SEQUENCE_OF_CryptoToken, h460_4_SEQUENCE_OF_CryptoToken_sequence_of);
739
740   return offset;
741 }
742
743
744 static const value_string h460_4_T_rejectReason_vals[] = {
745   {   0, "priorityUnavailable" },
746   {   1, "priorityUnauthorized" },
747   {   2, "priorityValueUnknown" },
748   { 0, NULL }
749 };
750
751 static const per_choice_t h460_4_T_rejectReason_choice[] = {
752   {   0, &hf_h460_4_priorityUnavailable, ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
753   {   1, &hf_h460_4_priorityUnauthorized, ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
754   {   2, &hf_h460_4_priorityValueUnknown, ASN1_EXTENSION_ROOT    , dissect_h460_4_NULL },
755   { 0, NULL, 0, NULL }
756 };
757
758 static int
759 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_) {
760   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
761                                  ett_h460_4_T_rejectReason, h460_4_T_rejectReason_choice,
762                                  NULL);
763
764   return offset;
765 }
766
767
768 static const per_sequence_t h460_4_CallPriorityInfo_sequence[] = {
769   { &hf_h460_4_priorityValue, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_4_T_priorityValue },
770   { &hf_h460_4_priorityExtension, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_4_INTEGER_0_255 },
771   { &hf_h460_4_tokens       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_4_SEQUENCE_OF_ClearToken },
772   { &hf_h460_4_cryptoTokens , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_4_SEQUENCE_OF_CryptoToken },
773   { &hf_h460_4_rejectReason , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_4_T_rejectReason },
774   { NULL, 0, 0, NULL }
775 };
776
777 static int
778 dissect_h460_4_CallPriorityInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
779   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
780                                    ett_h460_4_CallPriorityInfo, h460_4_CallPriorityInfo_sequence);
781
782   return offset;
783 }
784
785
786
787 static int
788 dissect_h460_4_X121CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
790                                                       3, 3, FALSE, "0123456789", 10,
791                                                       NULL);
792
793   return offset;
794 }
795
796
797 static const per_sequence_t h460_4_T_x121_sequence[] = {
798   { &hf_h460_4_x121CountryCode, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_4_X121CountryCode },
799   { NULL, 0, 0, NULL }
800 };
801
802 static int
803 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_) {
804   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
805                                    ett_h460_4_T_x121, h460_4_T_x121_sequence);
806
807   return offset;
808 }
809
810
811
812 static int
813 dissect_h460_4_E164CountryCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
814   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
815                                                       3, 3, FALSE, "0123456789", 10,
816                                                       NULL);
817
818   return offset;
819 }
820
821
822
823 static int
824 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_) {
825   offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index,
826                                                       1, 4, FALSE, "0123456789", 10,
827                                                       NULL);
828
829   return offset;
830 }
831
832
833 static const per_sequence_t h460_4_T_e164_sequence[] = {
834   { &hf_h460_4_e164CountryCode, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_4_E164CountryCode },
835   { &hf_h460_4_identificationCode, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_4_T_identificationCode },
836   { NULL, 0, 0, NULL }
837 };
838
839 static int
840 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_) {
841   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
842                                    ett_h460_4_T_e164, h460_4_T_e164_sequence);
843
844   return offset;
845 }
846
847
848 static const value_string h460_4_T_numberingPlan_vals[] = {
849   {   0, "x121" },
850   {   1, "e164" },
851   { 0, NULL }
852 };
853
854 static const per_choice_t h460_4_T_numberingPlan_choice[] = {
855   {   0, &hf_h460_4_x121         , ASN1_EXTENSION_ROOT    , dissect_h460_4_T_x121 },
856   {   1, &hf_h460_4_e164         , ASN1_EXTENSION_ROOT    , dissect_h460_4_T_e164 },
857   { 0, NULL, 0, NULL }
858 };
859
860 static int
861 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_) {
862   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
863                                  ett_h460_4_T_numberingPlan, h460_4_T_numberingPlan_choice,
864                                  NULL);
865
866   return offset;
867 }
868
869
870 static const per_sequence_t h460_4_CountryInternationalNetworkCallOriginationIdentification_sequence[] = {
871   { &hf_h460_4_numberingPlan, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_4_T_numberingPlan },
872   { NULL, 0, 0, NULL }
873 };
874
875 static int
876 dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
877   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
878                                    ett_h460_4_CountryInternationalNetworkCallOriginationIdentification, h460_4_CountryInternationalNetworkCallOriginationIdentification_sequence);
879
880   return offset;
881 }
882
883 /*--- PDUs ---*/
884
885 static int dissect_h460_4_CallPriorityInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
886   int offset = 0;
887   asn1_ctx_t asn1_ctx;
888   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
889   offset = dissect_h460_4_CallPriorityInfo(tvb, offset, &asn1_ctx, tree, hf_h460_4_h460_4_CallPriorityInfo_PDU);
890   offset += 7; offset >>= 3;
891   return offset;
892 }
893 static int dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
894   int offset = 0;
895   asn1_ctx_t asn1_ctx;
896   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
897   offset = dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification(tvb, offset, &asn1_ctx, tree, hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU);
898   offset += 7; offset >>= 3;
899   return offset;
900 }
901
902
903 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
904
905
906
907 static int
908 dissect_h460_9_EstimatedEnd2EndDelay(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
909   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
910                                                             0U, 4294967295U, NULL, FALSE);
911
912   return offset;
913 }
914
915
916
917 static int
918 dissect_h460_9_CalculatedJitter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
919   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
920                                                             0U, 4294967295U, NULL, FALSE);
921
922   return offset;
923 }
924
925
926
927 static int
928 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_) {
929   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
930                                        NO_BOUND, NO_BOUND, FALSE, NULL);
931
932   return offset;
933 }
934
935
936 static const per_sequence_t h460_9_Extension_sequence[] = {
937   { &hf_h460_9_extensionId  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_GenericIdentifier },
938   { &hf_h460_9_extensionContent, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_OCTET_STRING },
939   { NULL, 0, 0, NULL }
940 };
941
942 static int
943 dissect_h460_9_Extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
944   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
945                                    ett_h460_9_Extension, h460_9_Extension_sequence);
946
947   return offset;
948 }
949
950
951
952 static int
953 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_) {
954   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
955                                                             1U, 255U, NULL, FALSE);
956
957   return offset;
958 }
959
960
961 static const per_sequence_t h460_9_T_mediaSenderMeasures_sequence[] = {
962   { &hf_h460_9_worstEstimatedEnd2EndDelay, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_EstimatedEnd2EndDelay },
963   { &hf_h460_9_meanEstimatedEnd2EndDelay, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_EstimatedEnd2EndDelay },
964   { NULL, 0, 0, NULL }
965 };
966
967 static int
968 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_) {
969   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
970                                    ett_h460_9_T_mediaSenderMeasures, h460_9_T_mediaSenderMeasures_sequence);
971
972   return offset;
973 }
974
975
976
977 static int
978 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_) {
979   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
980                                                             0U, 4294967295U, NULL, FALSE);
981
982   return offset;
983 }
984
985
986
987 static int
988 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_) {
989   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
990                                                             0U, 65535U, NULL, FALSE);
991
992   return offset;
993 }
994
995
996 static const per_sequence_t h460_9_T_mediaReceiverMeasures_sequence[] = {
997   { &hf_h460_9_cumulativeNumberOfPacketsLost, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_4294967295 },
998   { &hf_h460_9_packetLostRate, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
999   { &hf_h460_9_worstJitter  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_CalculatedJitter },
1000   { &hf_h460_9_estimatedThroughput, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_BandWidth },
1001   { &hf_h460_9_fractionLostRate, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1002   { &hf_h460_9_meanJitter   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_CalculatedJitter },
1003   { NULL, 0, 0, NULL }
1004 };
1005
1006 static int
1007 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_) {
1008   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1009                                    ett_h460_9_T_mediaReceiverMeasures, h460_9_T_mediaReceiverMeasures_sequence);
1010
1011   return offset;
1012 }
1013
1014
1015 static const per_sequence_t h460_9_SEQUENCE_OF_Extension_sequence_of[1] = {
1016   { &hf_h460_9_extensions_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h460_9_Extension },
1017 };
1018
1019 static int
1020 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_) {
1021   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1022                                       ett_h460_9_SEQUENCE_OF_Extension, h460_9_SEQUENCE_OF_Extension_sequence_of);
1023
1024   return offset;
1025 }
1026
1027
1028 static const per_sequence_t h460_9_RTCPMeasures_sequence[] = {
1029   { &hf_h460_9_rtpAddress   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
1030   { &hf_h460_9_rtcpAddress  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_TransportChannelInfo },
1031   { &hf_h460_9_sessionId    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_9_INTEGER_1_255 },
1032   { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_NonStandardParameter },
1033   { &hf_h460_9_mediaSenderMeasures, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_T_mediaSenderMeasures },
1034   { &hf_h460_9_mediaReceiverMeasures, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_T_mediaReceiverMeasures },
1035   { &hf_h460_9_extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_Extension },
1036   { NULL, 0, 0, NULL }
1037 };
1038
1039 static int
1040 dissect_h460_9_RTCPMeasures(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1041   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1042                                    ett_h460_9_RTCPMeasures, h460_9_RTCPMeasures_sequence);
1043
1044   return offset;
1045 }
1046
1047
1048 static const per_sequence_t h460_9_SEQUENCE_OF_RTCPMeasures_sequence_of[1] = {
1049   { &hf_h460_9_mediaChannelsQoS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h460_9_RTCPMeasures },
1050 };
1051
1052 static int
1053 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_) {
1054   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1055                                       ett_h460_9_SEQUENCE_OF_RTCPMeasures, h460_9_SEQUENCE_OF_RTCPMeasures_sequence_of);
1056
1057   return offset;
1058 }
1059
1060
1061 static const per_sequence_t h460_9_PerCallQoSReport_sequence[] = {
1062   { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_NonStandardParameter },
1063   { &hf_h460_9_callReferenceValue, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CallReferenceValue },
1064   { &hf_h460_9_conferenceID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_ConferenceIdentifier },
1065   { &hf_h460_9_callIdentifier, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1066   { &hf_h460_9_mediaChannelsQoS, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1067   { &hf_h460_9_extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_Extension },
1068   { NULL, 0, 0, NULL }
1069 };
1070
1071 static int
1072 dissect_h460_9_PerCallQoSReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1073   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1074                                    ett_h460_9_PerCallQoSReport, h460_9_PerCallQoSReport_sequence);
1075
1076   return offset;
1077 }
1078
1079
1080 static const per_sequence_t h460_9_SEQUENCE_OF_PerCallQoSReport_sequence_of[1] = {
1081   { &hf_h460_9_perCallInfo_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h460_9_PerCallQoSReport },
1082 };
1083
1084 static int
1085 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_) {
1086   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1087                                       ett_h460_9_SEQUENCE_OF_PerCallQoSReport, h460_9_SEQUENCE_OF_PerCallQoSReport_sequence_of);
1088
1089   return offset;
1090 }
1091
1092
1093 static const per_sequence_t h460_9_PeriodicQoSMonReport_sequence[] = {
1094   { &hf_h460_9_perCallInfo  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_PerCallQoSReport },
1095   { &hf_h460_9_extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_Extension },
1096   { NULL, 0, 0, NULL }
1097 };
1098
1099 static int
1100 dissect_h460_9_PeriodicQoSMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1101   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1102                                    ett_h460_9_PeriodicQoSMonReport, h460_9_PeriodicQoSMonReport_sequence);
1103
1104   return offset;
1105 }
1106
1107
1108 static const per_sequence_t h460_9_FinalQosMonReport_sequence[] = {
1109   { &hf_h460_9_mediaInfo    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1110   { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_NonStandardParameter },
1111   { &hf_h460_9_extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_Extension },
1112   { NULL, 0, 0, NULL }
1113 };
1114
1115 static int
1116 dissect_h460_9_FinalQosMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1117   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1118                                    ett_h460_9_FinalQosMonReport, h460_9_FinalQosMonReport_sequence);
1119
1120   return offset;
1121 }
1122
1123
1124 static const per_sequence_t h460_9_InterGKQosMonReport_sequence[] = {
1125   { &hf_h460_9_mediaInfo    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_9_SEQUENCE_OF_RTCPMeasures },
1126   { &hf_h460_9_nonStandardData, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_NonStandardParameter },
1127   { &hf_h460_9_extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_SEQUENCE_OF_Extension },
1128   { NULL, 0, 0, NULL }
1129 };
1130
1131 static int
1132 dissect_h460_9_InterGKQosMonReport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1133   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1134                                    ett_h460_9_InterGKQosMonReport, h460_9_InterGKQosMonReport_sequence);
1135
1136   return offset;
1137 }
1138
1139
1140 static const value_string h460_9_QosMonitoringReportData_vals[] = {
1141   {   0, "periodic" },
1142   {   1, "final" },
1143   {   2, "interGK" },
1144   { 0, NULL }
1145 };
1146
1147 static const per_choice_t h460_9_QosMonitoringReportData_choice[] = {
1148   {   0, &hf_h460_9_periodic     , ASN1_EXTENSION_ROOT    , dissect_h460_9_PeriodicQoSMonReport },
1149   {   1, &hf_h460_9_final        , ASN1_EXTENSION_ROOT    , dissect_h460_9_FinalQosMonReport },
1150   {   2, &hf_h460_9_interGK      , ASN1_EXTENSION_ROOT    , dissect_h460_9_InterGKQosMonReport },
1151   { 0, NULL, 0, NULL }
1152 };
1153
1154 static int
1155 dissect_h460_9_QosMonitoringReportData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1156   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1157                                  ett_h460_9_QosMonitoringReportData, h460_9_QosMonitoringReportData_choice,
1158                                  NULL);
1159
1160   return offset;
1161 }
1162
1163
1164
1165 static int
1166 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_) {
1167   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1168                                                             0U, 255U, NULL, FALSE);
1169
1170   return offset;
1171 }
1172
1173
1174 static const per_sequence_t h460_9_BurstMetrics_sequence[] = {
1175   { &hf_h460_9_gmin         , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_255 },
1176   { &hf_h460_9_burstLossDensity, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_255 },
1177   { &hf_h460_9_gapLossDensity, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_255 },
1178   { &hf_h460_9_burstDuration, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1179   { &hf_h460_9_gapDuration  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1180   { NULL, 0, 0, NULL }
1181 };
1182
1183 static int
1184 dissect_h460_9_BurstMetrics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1185   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1186                                    ett_h460_9_BurstMetrics, h460_9_BurstMetrics_sequence);
1187
1188   return offset;
1189 }
1190
1191
1192
1193 static int
1194 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_) {
1195   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1196                                                             -127, 10U, NULL, FALSE);
1197
1198   return offset;
1199 }
1200
1201
1202
1203 static int
1204 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_) {
1205   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1206                                                             -127, 0U, NULL, FALSE);
1207
1208   return offset;
1209 }
1210
1211
1212
1213 static int
1214 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_) {
1215   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1216                                                             0U, 127U, NULL, FALSE);
1217
1218   return offset;
1219 }
1220
1221
1222
1223 static int
1224 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_) {
1225   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1226                                                             0U, 100U, NULL, FALSE);
1227
1228   return offset;
1229 }
1230
1231
1232
1233 static int
1234 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_) {
1235   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1236                                                             10U, 50U, NULL, FALSE);
1237
1238   return offset;
1239 }
1240
1241
1242
1243 static int
1244 dissect_h460_9_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1245   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1246
1247   return offset;
1248 }
1249
1250
1251 static const value_string h460_9_PLCtypes_vals[] = {
1252   {   0, "unspecified" },
1253   {   1, "disabled" },
1254   {   2, "enhanced" },
1255   {   3, "standard" },
1256   { 0, NULL }
1257 };
1258
1259 static const per_choice_t h460_9_PLCtypes_choice[] = {
1260   {   0, &hf_h460_9_unspecified  , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1261   {   1, &hf_h460_9_disabled     , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1262   {   2, &hf_h460_9_enhanced     , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1263   {   3, &hf_h460_9_standard     , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1264   { 0, NULL, 0, NULL }
1265 };
1266
1267 static int
1268 dissect_h460_9_PLCtypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1270                                  ett_h460_9_PLCtypes, h460_9_PLCtypes_choice,
1271                                  NULL);
1272
1273   return offset;
1274 }
1275
1276
1277 static const value_string h460_9_JitterBufferTypes_vals[] = {
1278   {   0, "unknown" },
1279   {   1, "reserved" },
1280   {   2, "nonadaptive" },
1281   {   3, "adaptive" },
1282   { 0, NULL }
1283 };
1284
1285 static const per_choice_t h460_9_JitterBufferTypes_choice[] = {
1286   {   0, &hf_h460_9_unknown      , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1287   {   1, &hf_h460_9_reserved     , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1288   {   2, &hf_h460_9_nonadaptive  , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1289   {   3, &hf_h460_9_adaptive     , ASN1_EXTENSION_ROOT    , dissect_h460_9_NULL },
1290   { 0, NULL, 0, NULL }
1291 };
1292
1293 static int
1294 dissect_h460_9_JitterBufferTypes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1295   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1296                                  ett_h460_9_JitterBufferTypes, h460_9_JitterBufferTypes_choice,
1297                                  NULL);
1298
1299   return offset;
1300 }
1301
1302
1303
1304 static int
1305 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_) {
1306   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1307                                                             0U, 15U, NULL, FALSE);
1308
1309   return offset;
1310 }
1311
1312
1313 static const per_sequence_t h460_9_JitterBufferParms_sequence[] = {
1314   { &hf_h460_9_jitterBufferType, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_JitterBufferTypes },
1315   { &hf_h460_9_jitterBufferAdaptRate, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_15 },
1316   { &hf_h460_9_jitterBufferNominalSize, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1317   { &hf_h460_9_jitterBufferMaxSize, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1318   { &hf_h460_9_jitterBufferAbsoluteMax, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1319   { NULL, 0, 0, NULL }
1320 };
1321
1322 static int
1323 dissect_h460_9_JitterBufferParms(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1325                                    ett_h460_9_JitterBufferParms, h460_9_JitterBufferParms_sequence);
1326
1327   return offset;
1328 }
1329
1330
1331 static const per_sequence_t h460_9_ExtendedRTPMetrics_sequence[] = {
1332   { &hf_h460_9_networkPacketLossRate, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_255 },
1333   { &hf_h460_9_jitterBufferDiscardRate, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_255 },
1334   { &hf_h460_9_burstMetrics , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_BurstMetrics },
1335   { &hf_h460_9_rtcpRoundTripDelay, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1336   { &hf_h460_9_endSystemDelay, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_65535 },
1337   { &hf_h460_9_signalLevel  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_M127_10 },
1338   { &hf_h460_9_noiseLevel   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_M127_0 },
1339   { &hf_h460_9_residualEchoReturnLoss, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_127 },
1340   { &hf_h460_9_rFactor      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_100 },
1341   { &hf_h460_9_extRFactor   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_0_100 },
1342   { &hf_h460_9_estimatedMOSLQ, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_10_50 },
1343   { &hf_h460_9_estimatedMOSCQ, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_INTEGER_10_50 },
1344   { &hf_h460_9_plcType      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_PLCtypes },
1345   { &hf_h460_9_jitterBufferParms, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_9_JitterBufferParms },
1346   { NULL, 0, 0, NULL }
1347 };
1348
1349 static int
1350 dissect_h460_9_ExtendedRTPMetrics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1351   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1352                                    ett_h460_9_ExtendedRTPMetrics, h460_9_ExtendedRTPMetrics_sequence);
1353
1354   return offset;
1355 }
1356
1357 /*--- PDUs ---*/
1358
1359 static int dissect_h460_9_QosMonitoringReportData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1360   int offset = 0;
1361   asn1_ctx_t asn1_ctx;
1362   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1363   offset = dissect_h460_9_QosMonitoringReportData(tvb, offset, &asn1_ctx, tree, hf_h460_9_h460_9_QosMonitoringReportData_PDU);
1364   offset += 7; offset >>= 3;
1365   return offset;
1366 }
1367 static int dissect_h460_9_ExtendedRTPMetrics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1368   int offset = 0;
1369   asn1_ctx_t asn1_ctx;
1370   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1371   offset = dissect_h460_9_ExtendedRTPMetrics(tvb, offset, &asn1_ctx, tree, hf_h460_9_h460_9_ExtendedRTPMetrics_PDU);
1372   offset += 7; offset >>= 3;
1373   return offset;
1374 }
1375
1376
1377 /* --- Module CALL-PARTY-CATEGORY --- --- ---                                 */
1378
1379
1380
1381 static int
1382 dissect_h460_10_CallPartyCategory(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1383   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1384                                                             0U, 255U, NULL, FALSE);
1385
1386   return offset;
1387 }
1388
1389
1390
1391 static int
1392 dissect_h460_10_OriginatingLineInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1394                                                             0U, 255U, NULL, FALSE);
1395
1396   return offset;
1397 }
1398
1399
1400 static const per_sequence_t h460_10_CallPartyCategoryInfo_sequence[] = {
1401   { &hf_h460_10_callPartyCategory, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_10_CallPartyCategory },
1402   { &hf_h460_10_originatingLineInfo, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_10_OriginatingLineInfo },
1403   { NULL, 0, 0, NULL }
1404 };
1405
1406 static int
1407 dissect_h460_10_CallPartyCategoryInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1408   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1409                                    ett_h460_10_CallPartyCategoryInfo, h460_10_CallPartyCategoryInfo_sequence);
1410
1411   return offset;
1412 }
1413
1414 /*--- PDUs ---*/
1415
1416 static int dissect_h460_10_CallPartyCategoryInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1417   int offset = 0;
1418   asn1_ctx_t asn1_ctx;
1419   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1420   offset = dissect_h460_10_CallPartyCategoryInfo(tvb, offset, &asn1_ctx, tree, hf_h460_10_h460_10_CallPartyCategoryInfo_PDU);
1421   offset += 7; offset >>= 3;
1422   return offset;
1423 }
1424
1425
1426 /* --- Module MLPP --- --- ---                                                */
1427
1428
1429 static const value_string h460_14_MlppPrecedence_vals[] = {
1430   {   0, "flashOveride" },
1431   {   1, "flash" },
1432   {   2, "immediate" },
1433   {   3, "priority" },
1434   {   4, "routine" },
1435   { 0, NULL }
1436 };
1437
1438
1439 static int
1440 dissect_h460_14_MlppPrecedence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1441   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1442                                      5, NULL, TRUE, 0, NULL);
1443
1444   return offset;
1445 }
1446
1447
1448 static const value_string h460_14_MlppReason_vals[] = {
1449   {   8, "preemptionNoReservation" },
1450   {   9, "preemptionReservation" },
1451   {  46, "callBlocked" },
1452   { 0, NULL }
1453 };
1454
1455 static guint32 h460_14_MlppReason_value_map[3+0] = {8, 9, 46};
1456
1457 static int
1458 dissect_h460_14_MlppReason(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1459   offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1460                                      3, NULL, TRUE, 0, h460_14_MlppReason_value_map);
1461
1462   return offset;
1463 }
1464
1465
1466
1467 static int
1468 dissect_h460_14_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1469   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1470
1471   return offset;
1472 }
1473
1474
1475 static const value_string h460_14_MlppNotification_vals[] = {
1476   {   0, "preemptionPending" },
1477   {   1, "preemptionInProgress" },
1478   {   2, "preemptionEnd" },
1479   {   3, "preemptionComplete" },
1480   { 0, NULL }
1481 };
1482
1483 static const per_choice_t h460_14_MlppNotification_choice[] = {
1484   {   0, &hf_h460_14_preemptionPending, ASN1_EXTENSION_ROOT    , dissect_h460_14_NULL },
1485   {   1, &hf_h460_14_preemptionInProgress, ASN1_EXTENSION_ROOT    , dissect_h460_14_NULL },
1486   {   2, &hf_h460_14_preemptionEnd, ASN1_EXTENSION_ROOT    , dissect_h460_14_NULL },
1487   {   3, &hf_h460_14_preemptionComplete, ASN1_EXTENSION_ROOT    , dissect_h460_14_NULL },
1488   { 0, NULL, 0, NULL }
1489 };
1490
1491 static int
1492 dissect_h460_14_MlppNotification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1493   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1494                                  ett_h460_14_MlppNotification, h460_14_MlppNotification_choice,
1495                                  NULL);
1496
1497   return offset;
1498 }
1499
1500
1501
1502 static int
1503 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_) {
1504   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1505                                                             0U, 255U, NULL, FALSE);
1506
1507   return offset;
1508 }
1509
1510
1511 static const per_sequence_t h460_14_AlternateParty_sequence[] = {
1512   { &hf_h460_14_altID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_AliasAddress },
1513   { &hf_h460_14_altTimer    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_INTEGER_0_255 },
1514   { NULL, 0, 0, NULL }
1515 };
1516
1517 static int
1518 dissect_h460_14_AlternateParty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1519   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1520                                    ett_h460_14_AlternateParty, h460_14_AlternateParty_sequence);
1521
1522   return offset;
1523 }
1524
1525
1526 static const per_sequence_t h460_14_ReleaseCall_sequence[] = {
1527   { &hf_h460_14_preemptCallID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1528   { &hf_h460_14_releaseReason, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_14_MlppReason },
1529   { &hf_h460_14_releaseDelay, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_INTEGER_0_255 },
1530   { NULL, 0, 0, NULL }
1531 };
1532
1533 static int
1534 dissect_h460_14_ReleaseCall(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1535   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1536                                    ett_h460_14_ReleaseCall, h460_14_ReleaseCall_sequence);
1537
1538   return offset;
1539 }
1540
1541
1542 static const per_sequence_t h460_14_MLPPInfo_sequence[] = {
1543   { &hf_h460_14_precedence  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_MlppPrecedence },
1544   { &hf_h460_14_mlppReason  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_MlppReason },
1545   { &hf_h460_14_mlppNotification, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_MlppNotification },
1546   { &hf_h460_14_alternateParty, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_AlternateParty },
1547   { &hf_h460_14_releaseCall , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_14_ReleaseCall },
1548   { NULL, 0, 0, NULL }
1549 };
1550
1551 static int
1552 dissect_h460_14_MLPPInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1553   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1554                                    ett_h460_14_MLPPInfo, h460_14_MLPPInfo_sequence);
1555
1556   return offset;
1557 }
1558
1559 /*--- PDUs ---*/
1560
1561 static int dissect_h460_14_MLPPInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1562   int offset = 0;
1563   asn1_ctx_t asn1_ctx;
1564   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1565   offset = dissect_h460_14_MLPPInfo(tvb, offset, &asn1_ctx, tree, hf_h460_14_h460_14_MLPPInfo_PDU);
1566   offset += 7; offset >>= 3;
1567   return offset;
1568 }
1569
1570
1571 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- ---                 */
1572
1573
1574 static const per_sequence_t h460_15_SEQUENCE_OF_TransportAddress_sequence_of[1] = {
1575   { &hf_h460_15_channelResumeAddress_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
1576 };
1577
1578 static int
1579 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_) {
1580   offset = dissect_per_sequence_of(tvb, offset, actx, tree, hf_index,
1581                                       ett_h460_15_SEQUENCE_OF_TransportAddress, h460_15_SEQUENCE_OF_TransportAddress_sequence_of);
1582
1583   return offset;
1584 }
1585
1586
1587
1588 static int
1589 dissect_h460_15_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1590   offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
1591
1592   return offset;
1593 }
1594
1595
1596
1597 static int
1598 dissect_h460_15_NULL(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1599   offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1600
1601   return offset;
1602 }
1603
1604
1605 static const per_sequence_t h460_15_ChannelSuspendRequest_sequence[] = {
1606   { &hf_h460_15_channelResumeAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_SEQUENCE_OF_TransportAddress },
1607   { &hf_h460_15_immediateResume, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_BOOLEAN },
1608   { &hf_h460_15_resetH245   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_15_NULL },
1609   { NULL, 0, 0, NULL }
1610 };
1611
1612 static int
1613 dissect_h460_15_ChannelSuspendRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1614   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1615                                    ett_h460_15_ChannelSuspendRequest, h460_15_ChannelSuspendRequest_sequence);
1616
1617   return offset;
1618 }
1619
1620
1621 static const per_sequence_t h460_15_ChannelSuspendResponse_sequence[] = {
1622   { &hf_h460_15_okToSuspend , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_BOOLEAN },
1623   { &hf_h460_15_channelResumeAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_SEQUENCE_OF_TransportAddress },
1624   { NULL, 0, 0, NULL }
1625 };
1626
1627 static int
1628 dissect_h460_15_ChannelSuspendResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1629   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1630                                    ett_h460_15_ChannelSuspendResponse, h460_15_ChannelSuspendResponse_sequence);
1631
1632   return offset;
1633 }
1634
1635
1636 static const per_sequence_t h460_15_ChannelSuspendConfirm_sequence[] = {
1637   { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1638 };
1639
1640 static int
1641 dissect_h460_15_ChannelSuspendConfirm(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1642   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1643                                    ett_h460_15_ChannelSuspendConfirm, h460_15_ChannelSuspendConfirm_sequence);
1644
1645   return offset;
1646 }
1647
1648
1649 static const per_sequence_t h460_15_ChannelSuspendCancel_sequence[] = {
1650   { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1651 };
1652
1653 static int
1654 dissect_h460_15_ChannelSuspendCancel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1655   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1656                                    ett_h460_15_ChannelSuspendCancel, h460_15_ChannelSuspendCancel_sequence);
1657
1658   return offset;
1659 }
1660
1661
1662
1663 static int
1664 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_) {
1665   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1666                                                             0U, 4294967295U, NULL, FALSE);
1667
1668   return offset;
1669 }
1670
1671
1672 static const per_sequence_t h460_15_ChannelResumeRequest_sequence[] = {
1673   { &hf_h460_15_randomNumber, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_INTEGER_0_4294967295 },
1674   { &hf_h460_15_resetH245   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_15_NULL },
1675   { NULL, 0, 0, NULL }
1676 };
1677
1678 static int
1679 dissect_h460_15_ChannelResumeRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1680   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1681                                    ett_h460_15_ChannelResumeRequest, h460_15_ChannelResumeRequest_sequence);
1682
1683   return offset;
1684 }
1685
1686
1687 static const per_sequence_t h460_15_ChannelResumeResponse_sequence[] = {
1688   { NULL, ASN1_EXTENSION_ROOT, 0, NULL }
1689 };
1690
1691 static int
1692 dissect_h460_15_ChannelResumeResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1693   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1694                                    ett_h460_15_ChannelResumeResponse, h460_15_ChannelResumeResponse_sequence);
1695
1696   return offset;
1697 }
1698
1699
1700 static const value_string h460_15_T_signallingChannelData_vals[] = {
1701   {   0, "channelSuspendRequest" },
1702   {   1, "channelSuspendResponse" },
1703   {   2, "channelSuspendConfirm" },
1704   {   3, "channelSuspendCancel" },
1705   {   4, "channelResumeRequest" },
1706   {   5, "channelResumeResponse" },
1707   { 0, NULL }
1708 };
1709
1710 static const per_choice_t h460_15_T_signallingChannelData_choice[] = {
1711   {   0, &hf_h460_15_channelSuspendRequest, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelSuspendRequest },
1712   {   1, &hf_h460_15_channelSuspendResponse, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelSuspendResponse },
1713   {   2, &hf_h460_15_channelSuspendConfirm, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelSuspendConfirm },
1714   {   3, &hf_h460_15_channelSuspendCancel, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelSuspendCancel },
1715   {   4, &hf_h460_15_channelResumeRequest, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelResumeRequest },
1716   {   5, &hf_h460_15_channelResumeResponse, ASN1_EXTENSION_ROOT    , dissect_h460_15_ChannelResumeResponse },
1717   { 0, NULL, 0, NULL }
1718 };
1719
1720 static int
1721 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_) {
1722   offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1723                                  ett_h460_15_T_signallingChannelData, h460_15_T_signallingChannelData_choice,
1724                                  NULL);
1725
1726   return offset;
1727 }
1728
1729
1730 static const per_sequence_t h460_15_SignallingChannelData_sequence[] = {
1731   { &hf_h460_15_signallingChannelData, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_15_T_signallingChannelData },
1732   { NULL, 0, 0, NULL }
1733 };
1734
1735 static int
1736 dissect_h460_15_SignallingChannelData(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_15_SignallingChannelData, h460_15_SignallingChannelData_sequence);
1739
1740   return offset;
1741 }
1742
1743 /*--- PDUs ---*/
1744
1745 static int dissect_h460_15_SignallingChannelData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1746   int offset = 0;
1747   asn1_ctx_t asn1_ctx;
1748   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1749   offset = dissect_h460_15_SignallingChannelData(tvb, offset, &asn1_ctx, tree, hf_h460_15_h460_15_SignallingChannelData_PDU);
1750   offset += 7; offset >>= 3;
1751   return offset;
1752 }
1753
1754
1755 /* --- Module SIGNALLING-TRAVERSAL --- --- ---                                */
1756
1757
1758 static const per_sequence_t h460_18_IncomingCallIndication_sequence[] = {
1759   { &hf_h460_18_callSignallingAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_TransportAddress },
1760   { &hf_h460_18_callID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_CallIdentifier },
1761   { NULL, 0, 0, NULL }
1762 };
1763
1764 static int
1765 dissect_h460_18_IncomingCallIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1766   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1767                                    ett_h460_18_IncomingCallIndication, h460_18_IncomingCallIndication_sequence);
1768
1769   return offset;
1770 }
1771
1772
1773 static const per_sequence_t h460_18_LRQKeepAliveData_sequence[] = {
1774   { &hf_h460_18_lrqKeepAliveInterval, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h225_TimeToLive },
1775   { NULL, 0, 0, NULL }
1776 };
1777
1778 static int
1779 dissect_h460_18_LRQKeepAliveData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1780   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1781                                    ett_h460_18_LRQKeepAliveData, h460_18_LRQKeepAliveData_sequence);
1782
1783   return offset;
1784 }
1785
1786 /*--- PDUs ---*/
1787
1788 static int dissect_h460_18_IncomingCallIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1789   int offset = 0;
1790   asn1_ctx_t asn1_ctx;
1791   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1792   offset = dissect_h460_18_IncomingCallIndication(tvb, offset, &asn1_ctx, tree, hf_h460_18_h460_18_IncomingCallIndication_PDU);
1793   offset += 7; offset >>= 3;
1794   return offset;
1795 }
1796 static int dissect_h460_18_LRQKeepAliveData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1797   int offset = 0;
1798   asn1_ctx_t asn1_ctx;
1799   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1800   offset = dissect_h460_18_LRQKeepAliveData(tvb, offset, &asn1_ctx, tree, hf_h460_18_h460_18_LRQKeepAliveData_PDU);
1801   offset += 7; offset >>= 3;
1802   return offset;
1803 }
1804
1805
1806 /* --- Module MEDIA-TRAVERSAL --- --- ---                                     */
1807
1808
1809
1810 static int
1811 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_) {
1812   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1813                                                             0U, 4294967295U, NULL, FALSE);
1814
1815   return offset;
1816 }
1817
1818
1819
1820 static int
1821 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_) {
1822   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1823                                                             0U, 127U, NULL, FALSE);
1824
1825   return offset;
1826 }
1827
1828
1829 static const per_sequence_t h460_19_TraversalParameters_sequence[] = {
1830   { &hf_h460_19_multiplexedMediaChannel, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245_TransportAddress },
1831   { &hf_h460_19_multiplexedMediaControlChannel, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245_TransportAddress },
1832   { &hf_h460_19_multiplexID , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_19_INTEGER_0_4294967295 },
1833   { &hf_h460_19_keepAliveChannel, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h245_TransportAddress },
1834   { &hf_h460_19_keepAlivePayloadType, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_19_INTEGER_0_127 },
1835   { &hf_h460_19_keepAliveInterval, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h225_TimeToLive },
1836   { NULL, 0, 0, NULL }
1837 };
1838
1839 static int
1840 dissect_h460_19_TraversalParameters(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1841   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1842                                    ett_h460_19_TraversalParameters, h460_19_TraversalParameters_sequence);
1843
1844   return offset;
1845 }
1846
1847 /*--- PDUs ---*/
1848
1849 static int dissect_h460_19_TraversalParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1850   int offset = 0;
1851   asn1_ctx_t asn1_ctx;
1852   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1853   offset = dissect_h460_19_TraversalParameters(tvb, offset, &asn1_ctx, tree, hf_h460_19_h460_19_TraversalParameters_PDU);
1854   offset += 7; offset >>= 3;
1855   return offset;
1856 }
1857
1858
1859 /* --- Module MESSAGE-BROADCAST --- --- ---                                   */
1860
1861
1862 static const per_sequence_t h460_21_SEQUENCE_SIZE_1_256_OF_Capability_sequence_of[1] = {
1863   { &hf_h460_21_capabilities_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h245_Capability },
1864 };
1865
1866 static int
1867 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_) {
1868   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1869                                                   ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability, h460_21_SEQUENCE_SIZE_1_256_OF_Capability_sequence_of,
1870                                                   1, 256, FALSE);
1871
1872   return offset;
1873 }
1874
1875
1876
1877 static int
1878 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_) {
1879   offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1880                                                             1U, 65535U, NULL, FALSE);
1881
1882   return offset;
1883 }
1884
1885
1886 static const per_sequence_t h460_21_ReceiveCapabilities_sequence[] = {
1887   { &hf_h460_21_capabilities, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_21_SEQUENCE_SIZE_1_256_OF_Capability },
1888   { &hf_h460_21_maxGroups   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_21_INTEGER_1_65535 },
1889   { NULL, 0, 0, NULL }
1890 };
1891
1892 static int
1893 dissect_h460_21_ReceiveCapabilities(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1894   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1895                                    ett_h460_21_ReceiveCapabilities, h460_21_ReceiveCapabilities_sequence);
1896
1897   return offset;
1898 }
1899
1900
1901
1902 static int
1903 dissect_h460_21_GloballyUniqueID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1904   offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1905                                        16, 16, FALSE, NULL);
1906
1907   return offset;
1908 }
1909
1910
1911 static const per_sequence_t h460_21_TransmitCapabilities_sequence[] = {
1912   { &hf_h460_21_groupIdentifer, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h460_21_GloballyUniqueID },
1913   { &hf_h460_21_capability  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245_Capability },
1914   { &hf_h460_21_sourceAddress, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_h245_UnicastAddress },
1915   { NULL, 0, 0, NULL }
1916 };
1917
1918 static int
1919 dissect_h460_21_TransmitCapabilities(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_TransmitCapabilities, h460_21_TransmitCapabilities_sequence);
1922
1923   return offset;
1924 }
1925
1926
1927 static const per_sequence_t h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities_sequence_of[1] = {
1928   { &hf_h460_21_transmitCapabilities_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_h460_21_TransmitCapabilities },
1929 };
1930
1931 static int
1932 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_) {
1933   offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1934                                                   ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities, h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities_sequence_of,
1935                                                   1, 256, FALSE);
1936
1937   return offset;
1938 }
1939
1940
1941 static const per_sequence_t h460_21_CapabilityAdvertisement_sequence[] = {
1942   { &hf_h460_21_receiveCapabilities, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_21_ReceiveCapabilities },
1943   { &hf_h460_21_transmitCapabilities, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities },
1944   { NULL, 0, 0, NULL }
1945 };
1946
1947 static int
1948 dissect_h460_21_CapabilityAdvertisement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1949   offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1950                                    ett_h460_21_CapabilityAdvertisement, h460_21_CapabilityAdvertisement_sequence);
1951
1952   return offset;
1953 }
1954
1955 /*--- PDUs ---*/
1956
1957 static int dissect_h460_21_CapabilityAdvertisement_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1958   int offset = 0;
1959   asn1_ctx_t asn1_ctx;
1960   asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1961   offset = dissect_h460_21_CapabilityAdvertisement(tvb, offset, &asn1_ctx, tree, hf_h460_21_h460_21_CapabilityAdvertisement_PDU);
1962   offset += 7; offset >>= 3;
1963   return offset;
1964 }
1965
1966
1967 /*--- End of included file: packet-h460-fn.c ---*/
1968 #line 57 "../../asn1/h460/packet-h460-template.c"
1969
1970 static int
1971 dissect_ies(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
1972   int offset = 0;
1973
1974   if (q931_ie_handle) {
1975     call_dissector(q931_ie_handle, tvb, pinfo, tree);
1976     offset += tvb_length_remaining(tvb, offset);
1977   }
1978   return offset;
1979 }
1980
1981 static int
1982 dissect_ras(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) {
1983   int offset = 0;
1984
1985   if (h225_ras_handle) {
1986     call_dissector(h225_ras_handle, tvb, pinfo, tree);
1987     offset += tvb_length_remaining(tvb, offset);
1988   }
1989   return offset;
1990 }
1991
1992 typedef struct _h460_feature_t {
1993   guint32 opt;
1994   const gchar *id;
1995   const gchar *name;
1996   new_dissector_t content_pdu;
1997   /*---*/
1998   const gchar *key_gd;
1999   const gchar *key_fd;
2000   const gchar *key_gm;
2001   const gchar *key_gi;
2002   dissector_handle_t content_hnd;
2003 } h460_feature_t;
2004
2005 /* Fill in the items after content_pdu */
2006 #define FFILL   NULL, NULL, NULL, NULL, NULL
2007
2008 /* options */
2009 #define GD 0x01  /* present in H.225 GenericData */
2010 #define FD 0x02  /* present in H.225 FeatureDescriptor */
2011 #define GM 0x04  /* present in H.245 GenericMessage */
2012 #define GI 0x08  /* present in H.245 GenericInformation */
2013
2014 static h460_feature_t h460_feature_tab[] = {
2015   /* H.460.3 */
2016   { GD|FD,  "2",   "Number Portability", NULL, FFILL },
2017   { GD|FD,  "2/1", "NumberPortabilityData", dissect_h460_2_NumberPortabilityInfo_PDU, FFILL },
2018   /* H.460.3 */
2019   { GD|FD,  "3",   "Circuit Status", NULL, FFILL },
2020   { GD|FD,  "3/1", "Circuit Status Map", dissect_h460_3_CircuitStatus_PDU, FFILL },
2021   /* H.460.4 */
2022   { GD|FD,  "4",   "CallPriorityDesignation", NULL, FFILL },
2023   { GD|FD,  "4/1", "CallPriorityRequest", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
2024   { GD|FD,  "4/2", "CallPriorityConfirm", dissect_h460_4_CallPriorityInfo_PDU, FFILL },
2025   { GD|FD,  "4/3", "Country/InternationalNetworkCallOriginationRequest", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
2026   { GD|FD,  "4/4", "Country/InternationalNetworkCallOriginationConfirm", dissect_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU, FFILL },
2027   /* H.460.5 */
2028   { GD|FD,  "5",   "DuplicateIEs", NULL, FFILL },
2029   { GD|FD,  "5/1", "IEsString", dissect_ies, FFILL },
2030   /* H.460.6 */
2031   { GD|FD,  "6",   "Extended Fast Connect", NULL, FFILL },
2032   { GD|FD,  "6/1", "EFC Proposal", NULL, FFILL },
2033   { GD|FD,  "6/2", "EFC Close All Media Channels", NULL, FFILL },
2034   { GD|FD,  "6/3", "EFC Request New Proposals", NULL, FFILL },
2035   { GD|FD,  "6/4", "EFC Require Symmetric Operation", NULL, FFILL },
2036   /* H.460.7 */
2037   { GD|FD,  "7",   "Digit Maps", NULL, FFILL },
2038   {    FD,  "7/1", "Digit Maps Length", NULL, FFILL },
2039   {    FD,  "7/2", "Digit Map Length for Overlapped Sending", NULL, FFILL },
2040   {    FD,  "7/3", "HTTP Digit Maps Download Capability", NULL, FFILL },
2041   { GD   ,  "7/1", "Start Timer", NULL, FFILL },
2042   { GD   ,  "7/2", "Short Timer", NULL, FFILL },
2043   { GD   ,  "7/3", "Long Timer", NULL, FFILL },
2044   { GD   ,  "7/4", "Digit Map String", NULL, FFILL },
2045   { GD   ,  "7/5",   "ToN Associated Digit Map", NULL, FFILL },
2046   { GD   ,  "7/5/1", "Type of Number", NULL, FFILL },
2047   { GD   ,  "7/5/2", "Digit Map Strings for ToN", NULL, FFILL },
2048   { GD   ,  "7/6", "Digit Map URL", NULL, FFILL },
2049   /* H.460.8 */
2050   { GD|FD,  "8",   "Querying for Alternate Routes", NULL, FFILL },
2051   { GD|FD,  "8/1", "Query Count", NULL, FFILL },
2052   { GD|FD,  "8/2", "Call Termination Cause", NULL, FFILL },
2053   /* H.460.9 */
2054   { GD|FD,  "9",   "QoS-monitoring Reporting", NULL, FFILL },
2055   { GD|FD,  "9/0", "qosMonitoringFinalOnly", NULL, FFILL },
2056   { GD|FD,  "9/1", "qosMonitoringReportData", dissect_h460_9_QosMonitoringReportData_PDU, FFILL },
2057   { GD|FD,  "9/2", "qosMonitoringExtendedRTPMetrics", dissect_h460_9_ExtendedRTPMetrics_PDU, FFILL },
2058   /* H.460.10 */
2059   { GD|FD, "10",   "Call Party Category", NULL, FFILL },
2060   { GD|FD, "10/1", "Call party category info", dissect_h460_10_CallPartyCategoryInfo_PDU, FFILL },
2061   /* H.460.11 */
2062   { GD|FD, "11",   "Delayed Call Establishment", NULL, FFILL },
2063   { GD|FD, "11/1", "Delay Point Indicator", NULL, FFILL },
2064   { GD|FD, "11/2", "Implicit DCE Release", NULL, FFILL },
2065   { GD|FD, "11/3", "Delay Point Reached", NULL, FFILL },
2066   { GD|FD, "11/4", "DCE Release", NULL, FFILL },
2067   /* H.460.12 */
2068   { GD|FD, "12",   "Glare Control Indicator", NULL, FFILL },
2069   { GD|FD, "12/1", "Glare Control Indicator Parameter", NULL, FFILL },
2070   /* H.460.13 */
2071   { GD|FD, "13",   "Called User Release Control", NULL, FFILL },
2072   { GD|FD, "13/1", "Called User Release Control", NULL, FFILL },
2073   /* H.460.14 */
2074   { GD|FD, "14",   "Multi-Level Precedence and Preemption", NULL, FFILL },
2075   { GD|FD, "14/1", "MLPP Information", dissect_h460_14_MLPPInfo_PDU, FFILL },
2076   /* H.460.15 */
2077   { GD|FD, "15",   "Call signalling transport channel suspension and redirection", NULL, FFILL },
2078   { GD|FD, "15/1", "Signalling channel suspend and redirect", dissect_h460_15_SignallingChannelData_PDU, FFILL },
2079   /* H.460.16 */
2080   { GD|FD, "16",   "Multiple-message Release Sequence", NULL, FFILL },
2081   { GD|FD, "16/1", "MMRS use required", NULL, FFILL },
2082   { GD|FD, "16/2", "MMRS procedure", NULL, FFILL },
2083   { GD|FD, "16/3", "MMRS additional IEs", dissect_ies, FFILL },
2084   /* H.460.17 */
2085   { GD|FD, "17",   "RAS over H.225.0", NULL, FFILL },
2086   { GD|FD, "17/1", "RAS message", dissect_ras, FFILL },
2087   /* H.460.18 */
2088   { GD|FD   , "18",   "Signalling Traversal", NULL, FFILL },
2089   { GD|FD   , "18/1", "IncomingCallIndication", dissect_h460_18_IncomingCallIndication_PDU, FFILL },
2090   { GD|FD   , "18/2", "LRQKeepAliveData", dissect_h460_18_LRQKeepAliveData_PDU, FFILL },
2091   {       GM, "0.0.8.460.18.0.1",   "Signalling Traversal", NULL, FFILL },
2092   {       GM, "0.0.8.460.18.0.1-1",   "connectionCorrelation", NULL, FFILL },
2093   {       GM, "0.0.8.460.18.0.1-1/1", "callIdentifier", NULL, FFILL },
2094   {       GM, "0.0.8.460.18.0.1-1/2", "answerCall", NULL, FFILL },
2095   /* H.460.19 */
2096   { GD|FD   , "19", "mediaNATFWTraversal", NULL, FFILL },
2097   { GD|FD   , "19/1", "supportTransmitMultiplexedMedia", NULL, FFILL },
2098   { GD|FD   , "19/2", "mediaTraversalServer", NULL, FFILL },
2099   {       GI, "0.0.8.460.19.0.1", "mediaNATFWTraversal", NULL, FFILL },
2100   {       GI, "0.0.8.460.19.0.1/1", "Traversal Parameters", dissect_h460_19_TraversalParameters_PDU, FFILL },
2101   /* H.460.20 */
2102   { GD|FD, "20",   "LocationSourceAddress", NULL, FFILL },
2103   { GD|FD, "20/1", "LocationSourceAddress", dissect_h225_ExtendedAliasAddress_PDU, FFILL },
2104   /* H.460.21 */
2105   { GD|FD, "21",   "Message Broadcast", NULL, FFILL },
2106   { GD|FD, "21/1", "MessageBroadcastParameter", dissect_h460_21_CapabilityAdvertisement_PDU, FFILL },
2107   /* H.460.22 */
2108   { GD|FD, "22",     "securityProtocolNegotiation", NULL, FFILL },
2109   { GD|FD, "22/1",   "tlsSecurityProtocol", NULL, FFILL },
2110   { GD|FD, "22/1/1", "priority", NULL, FFILL },
2111   { GD|FD, "22/1/2", "connectionAddress", NULL, FFILL },
2112   { GD|FD, "22/2",   "ipsecSecurityProtocol", NULL, FFILL },
2113   { GD|FD, "22/2/1", "priority", NULL, FFILL },
2114   { 0, NULL, NULL, NULL, FFILL },
2115 };
2116
2117 static h460_feature_t *find_ftr(const gchar *key) {
2118   h460_feature_t *ftr = NULL;
2119   h460_feature_t *f;
2120
2121   for (f=h460_feature_tab; f->id; f++) {
2122     if (f->key_gd && !strcmp(key, f->key_gd)) { ftr = f; break; }
2123     if (f->key_fd && !strcmp(key, f->key_fd)) { ftr = f; break; }
2124     if (f->key_gm && !strcmp(key, f->key_gm)) { ftr = f; break; }
2125     if (f->key_gi && !strcmp(key, f->key_gi)) { ftr = f; break; }
2126   }
2127   return ftr;
2128 }
2129
2130 /*--- dissect_h460_name -------------------------------------------*/
2131 static int
2132 dissect_h460_name(tvbuff_t *tvb _U_, packet_info *pinfo, proto_tree *tree, void *data) {
2133   int offset = 0;
2134   asn1_ctx_t *actx;
2135   h460_feature_t *ftr;
2136
2137   /* Reject the packet if data is NULL */
2138   if (data == NULL)
2139     return 0;
2140   actx = get_asn1_ctx(data);
2141   DISSECTOR_ASSERT(actx);
2142
2143   if (tree) {
2144     /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: %s", pinfo->match_string);*/
2145     ftr = find_ftr(pinfo->match_string);
2146     /* DEBUG */ /*proto_tree_add_text(tree, tvb, 0, 0, "*** DEBUG dissect_h460_name: ftr %s", (ftr)?ftr->name:"-none-");*/
2147     if (ftr) {
2148       proto_item_append_text(actx->created_item, " - %s", ftr->name);
2149       proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), ": %s", ftr->name);
2150     } else {
2151       proto_item_append_text(actx->created_item, " - unknown(%s)", pinfo->match_string);
2152     }
2153   }
2154
2155   return offset;
2156 }
2157
2158 /*--- proto_register_h460 ----------------------------------------------*/
2159 void proto_register_h460(void) {
2160   h460_feature_t *ftr;
2161
2162   /* List of fields */
2163   static hf_register_info hf[] = {
2164
2165 /*--- Included file: packet-h460-hfarr.c ---*/
2166 #line 1 "../../asn1/h460/packet-h460-hfarr.c"
2167
2168 /* --- Module NUMBER-PORTABILITY --- --- ---                                  */
2169
2170     { &hf_h460_2_h460_2_NumberPortabilityInfo_PDU,
2171       { "NumberPortabilityInfo", "h460.2.NumberPortabilityInfo",
2172         FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityInfo_vals), 0,
2173         NULL, HFILL }},
2174     { &hf_h460_2_numberPortabilityRejectReason,
2175       { "numberPortabilityRejectReason", "h460.2.numberPortabilityRejectReason",
2176         FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityRejectReason_vals), 0,
2177         NULL, HFILL }},
2178     { &hf_h460_2_nUMBERPORTABILITYDATA,
2179       { "nUMBERPORTABILITYDATA", "h460.2.nUMBERPORTABILITYDATA_element",
2180         FT_NONE, BASE_NONE, NULL, 0,
2181         NULL, HFILL }},
2182     { &hf_h460_2_addressTranslated,
2183       { "addressTranslated", "h460.2.addressTranslated_element",
2184         FT_NONE, BASE_NONE, NULL, 0,
2185         NULL, HFILL }},
2186     { &hf_h460_2_portedAddress,
2187       { "portedAddress", "h460.2.portedAddress_element",
2188         FT_NONE, BASE_NONE, NULL, 0,
2189         "PortabilityAddress", HFILL }},
2190     { &hf_h460_2_routingAddress,
2191       { "routingAddress", "h460.2.routingAddress_element",
2192         FT_NONE, BASE_NONE, NULL, 0,
2193         "PortabilityAddress", HFILL }},
2194     { &hf_h460_2_regionalParams,
2195       { "regionalParams", "h460.2.regionalParams_element",
2196         FT_NONE, BASE_NONE, NULL, 0,
2197         "RegionalParameters", HFILL }},
2198     { &hf_h460_2_unspecified,
2199       { "unspecified", "h460.2.unspecified_element",
2200         FT_NONE, BASE_NONE, NULL, 0,
2201         NULL, HFILL }},
2202     { &hf_h460_2_qorPortedNumber,
2203       { "qorPortedNumber", "h460.2.qorPortedNumber_element",
2204         FT_NONE, BASE_NONE, NULL, 0,
2205         NULL, HFILL }},
2206     { &hf_h460_2_aliasAddress,
2207       { "aliasAddress", "h460.2.aliasAddress",
2208         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2209         NULL, HFILL }},
2210     { &hf_h460_2_typeOfAddress,
2211       { "typeOfAddress", "h460.2.typeOfAddress",
2212         FT_UINT32, BASE_DEC, VALS(h460_2_NumberPortabilityTypeOfNumber_vals), 0,
2213         "NumberPortabilityTypeOfNumber", HFILL }},
2214     { &hf_h460_2_publicTypeOfNumber,
2215       { "publicTypeOfNumber", "h460.2.publicTypeOfNumber",
2216         FT_UINT32, BASE_DEC, VALS(h225_PublicTypeOfNumber_vals), 0,
2217         NULL, HFILL }},
2218     { &hf_h460_2_privateTypeOfNumber,
2219       { "privateTypeOfNumber", "h460.2.privateTypeOfNumber",
2220         FT_UINT32, BASE_DEC, VALS(h225_PrivateTypeOfNumber_vals), 0,
2221         NULL, HFILL }},
2222     { &hf_h460_2_portabilityTypeOfNumber,
2223       { "portabilityTypeOfNumber", "h460.2.portabilityTypeOfNumber",
2224         FT_UINT32, BASE_DEC, VALS(h460_2_PortabilityTypeOfNumber_vals), 0,
2225         NULL, HFILL }},
2226     { &hf_h460_2_portedNumber,
2227       { "portedNumber", "h460.2.portedNumber_element",
2228         FT_NONE, BASE_NONE, NULL, 0,
2229         NULL, HFILL }},
2230     { &hf_h460_2_routingNumber,
2231       { "routingNumber", "h460.2.routingNumber_element",
2232         FT_NONE, BASE_NONE, NULL, 0,
2233         NULL, HFILL }},
2234     { &hf_h460_2_concatenatedNumber,
2235       { "concatenatedNumber", "h460.2.concatenatedNumber_element",
2236         FT_NONE, BASE_NONE, NULL, 0,
2237         NULL, HFILL }},
2238     { &hf_h460_2_t35CountryCode,
2239       { "t35CountryCode", "h460.2.t35CountryCode",
2240         FT_UINT32, BASE_DEC, NULL, 0,
2241         "INTEGER_0_255", HFILL }},
2242     { &hf_h460_2_t35Extension,
2243       { "t35Extension", "h460.2.t35Extension",
2244         FT_UINT32, BASE_DEC, NULL, 0,
2245         "INTEGER_0_255", HFILL }},
2246     { &hf_h460_2_variantIdentifier,
2247       { "variantIdentifier", "h460.2.variantIdentifier",
2248         FT_UINT32, BASE_DEC, NULL, 0,
2249         "INTEGER_1_255", HFILL }},
2250     { &hf_h460_2_regionalData,
2251       { "regionalData", "h460.2.regionalData",
2252         FT_BYTES, BASE_NONE, NULL, 0,
2253         "OCTET_STRING", HFILL }},
2254
2255 /* --- Module CIRCUIT-STATUS-MAP --- --- ---                                  */
2256
2257     { &hf_h460_3_h460_3_CircuitStatus_PDU,
2258       { "CircuitStatus", "h460.3.CircuitStatus_element",
2259         FT_NONE, BASE_NONE, NULL, 0,
2260         NULL, HFILL }},
2261     { &hf_h460_3_circuitStatusMap,
2262       { "circuitStatusMap", "h460.3.circuitStatusMap",
2263         FT_UINT32, BASE_DEC, NULL, 0,
2264         "SEQUENCE_OF_CircuitStatusMap", HFILL }},
2265     { &hf_h460_3_circuitStatusMap_item,
2266       { "CircuitStatusMap", "h460.3.CircuitStatusMap_element",
2267         FT_NONE, BASE_NONE, NULL, 0,
2268         NULL, HFILL }},
2269     { &hf_h460_3_statusType,
2270       { "statusType", "h460.3.statusType",
2271         FT_UINT32, BASE_DEC, VALS(h460_3_CircuitStatusType_vals), 0,
2272         "CircuitStatusType", HFILL }},
2273     { &hf_h460_3_baseCircuitID,
2274       { "baseCircuitID", "h460.3.baseCircuitID_element",
2275         FT_NONE, BASE_NONE, NULL, 0,
2276         "CircuitIdentifier", HFILL }},
2277     { &hf_h460_3_range,
2278       { "range", "h460.3.range",
2279         FT_UINT32, BASE_DEC, NULL, 0,
2280         "INTEGER_0_4095", HFILL }},
2281     { &hf_h460_3_status,
2282       { "status", "h460.3.status",
2283         FT_BYTES, BASE_NONE, NULL, 0,
2284         "OCTET_STRING", HFILL }},
2285     { &hf_h460_3_serviceStatus,
2286       { "serviceStatus", "h460.3.serviceStatus_element",
2287         FT_NONE, BASE_NONE, NULL, 0,
2288         NULL, HFILL }},
2289     { &hf_h460_3_busyStatus,
2290       { "busyStatus", "h460.3.busyStatus_element",
2291         FT_NONE, BASE_NONE, NULL, 0,
2292         NULL, HFILL }},
2293
2294 /* --- Module CALL-PRIORITY --- --- ---                                       */
2295
2296     { &hf_h460_4_h460_4_CallPriorityInfo_PDU,
2297       { "CallPriorityInfo", "h460.4.CallPriorityInfo_element",
2298         FT_NONE, BASE_NONE, NULL, 0,
2299         NULL, HFILL }},
2300     { &hf_h460_4_h460_4_CountryInternationalNetworkCallOriginationIdentification_PDU,
2301       { "CountryInternationalNetworkCallOriginationIdentification", "h460.4.CountryInternationalNetworkCallOriginationIdentification_element",
2302         FT_NONE, BASE_NONE, NULL, 0,
2303         NULL, HFILL }},
2304     { &hf_h460_4_priorityValue,
2305       { "priorityValue", "h460.4.priorityValue",
2306         FT_UINT32, BASE_DEC, VALS(h460_4_T_priorityValue_vals), 0,
2307         NULL, HFILL }},
2308     { &hf_h460_4_emergencyAuthorized,
2309       { "emergencyAuthorized", "h460.4.emergencyAuthorized_element",
2310         FT_NONE, BASE_NONE, NULL, 0,
2311         NULL, HFILL }},
2312     { &hf_h460_4_emergencyPublic,
2313       { "emergencyPublic", "h460.4.emergencyPublic_element",
2314         FT_NONE, BASE_NONE, NULL, 0,
2315         NULL, HFILL }},
2316     { &hf_h460_4_high,
2317       { "high", "h460.4.high_element",
2318         FT_NONE, BASE_NONE, NULL, 0,
2319         NULL, HFILL }},
2320     { &hf_h460_4_normal,
2321       { "normal", "h460.4.normal_element",
2322         FT_NONE, BASE_NONE, NULL, 0,
2323         NULL, HFILL }},
2324     { &hf_h460_4_priorityExtension,
2325       { "priorityExtension", "h460.4.priorityExtension",
2326         FT_UINT32, BASE_DEC, NULL, 0,
2327         "INTEGER_0_255", HFILL }},
2328     { &hf_h460_4_tokens,
2329       { "tokens", "h460.4.tokens",
2330         FT_UINT32, BASE_DEC, NULL, 0,
2331         "SEQUENCE_OF_ClearToken", HFILL }},
2332     { &hf_h460_4_tokens_item,
2333       { "ClearToken", "h460.4.ClearToken_element",
2334         FT_NONE, BASE_NONE, NULL, 0,
2335         NULL, HFILL }},
2336     { &hf_h460_4_cryptoTokens,
2337       { "cryptoTokens", "h460.4.cryptoTokens",
2338         FT_UINT32, BASE_DEC, NULL, 0,
2339         "SEQUENCE_OF_CryptoToken", HFILL }},
2340     { &hf_h460_4_cryptoTokens_item,
2341       { "CryptoToken", "h460.4.CryptoToken",
2342         FT_UINT32, BASE_DEC, VALS(h235_CryptoToken_vals), 0,
2343         NULL, HFILL }},
2344     { &hf_h460_4_rejectReason,
2345       { "rejectReason", "h460.4.rejectReason",
2346         FT_UINT32, BASE_DEC, VALS(h460_4_T_rejectReason_vals), 0,
2347         NULL, HFILL }},
2348     { &hf_h460_4_priorityUnavailable,
2349       { "priorityUnavailable", "h460.4.priorityUnavailable_element",
2350         FT_NONE, BASE_NONE, NULL, 0,
2351         NULL, HFILL }},
2352     { &hf_h460_4_priorityUnauthorized,
2353       { "priorityUnauthorized", "h460.4.priorityUnauthorized_element",
2354         FT_NONE, BASE_NONE, NULL, 0,
2355         NULL, HFILL }},
2356     { &hf_h460_4_priorityValueUnknown,
2357       { "priorityValueUnknown", "h460.4.priorityValueUnknown_element",
2358         FT_NONE, BASE_NONE, NULL, 0,
2359         NULL, HFILL }},
2360     { &hf_h460_4_numberingPlan,
2361       { "numberingPlan", "h460.4.numberingPlan",
2362         FT_UINT32, BASE_DEC, VALS(h460_4_T_numberingPlan_vals), 0,
2363         NULL, HFILL }},
2364     { &hf_h460_4_x121,
2365       { "x121", "h460.4.x121_element",
2366         FT_NONE, BASE_NONE, NULL, 0,
2367         NULL, HFILL }},
2368     { &hf_h460_4_x121CountryCode,
2369       { "countryCode", "h460.4.countryCode",
2370         FT_STRING, BASE_NONE, NULL, 0,
2371         "X121CountryCode", HFILL }},
2372     { &hf_h460_4_e164,
2373       { "e164", "h460.4.e164_element",
2374         FT_NONE, BASE_NONE, NULL, 0,
2375         NULL, HFILL }},
2376     { &hf_h460_4_e164CountryCode,
2377       { "countryCode", "h460.4.countryCode",
2378         FT_STRING, BASE_NONE, NULL, 0,
2379         "E164CountryCode", HFILL }},
2380     { &hf_h460_4_identificationCode,
2381       { "identificationCode", "h460.4.identificationCode",
2382         FT_STRING, BASE_NONE, NULL, 0,
2383         NULL, HFILL }},
2384
2385 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
2386
2387     { &hf_h460_9_h460_9_QosMonitoringReportData_PDU,
2388       { "QosMonitoringReportData", "h460.9.QosMonitoringReportData",
2389         FT_UINT32, BASE_DEC, VALS(h460_9_QosMonitoringReportData_vals), 0,
2390         NULL, HFILL }},
2391     { &hf_h460_9_h460_9_ExtendedRTPMetrics_PDU,
2392       { "ExtendedRTPMetrics", "h460.9.ExtendedRTPMetrics_element",
2393         FT_NONE, BASE_NONE, NULL, 0,
2394         NULL, HFILL }},
2395     { &hf_h460_9_extensionId,
2396       { "extensionId", "h460.9.extensionId",
2397         FT_UINT32, BASE_DEC, VALS(h225_GenericIdentifier_vals), 0,
2398         "GenericIdentifier", HFILL }},
2399     { &hf_h460_9_extensionContent,
2400       { "extensionContent", "h460.9.extensionContent",
2401         FT_BYTES, BASE_NONE, NULL, 0,
2402         "OCTET_STRING", HFILL }},
2403     { &hf_h460_9_rtpAddress,
2404       { "rtpAddress", "h460.9.rtpAddress_element",
2405         FT_NONE, BASE_NONE, NULL, 0,
2406         "TransportChannelInfo", HFILL }},
2407     { &hf_h460_9_rtcpAddress,
2408       { "rtcpAddress", "h460.9.rtcpAddress_element",
2409         FT_NONE, BASE_NONE, NULL, 0,
2410         "TransportChannelInfo", HFILL }},
2411     { &hf_h460_9_sessionId,
2412       { "sessionId", "h460.9.sessionId",
2413         FT_UINT32, BASE_DEC, NULL, 0,
2414         "INTEGER_1_255", HFILL }},
2415     { &hf_h460_9_nonStandardData,
2416       { "nonStandardData", "h460.9.nonStandardData_element",
2417         FT_NONE, BASE_NONE, NULL, 0,
2418         "NonStandardParameter", HFILL }},
2419     { &hf_h460_9_mediaSenderMeasures,
2420       { "mediaSenderMeasures", "h460.9.mediaSenderMeasures_element",
2421         FT_NONE, BASE_NONE, NULL, 0,
2422         NULL, HFILL }},
2423     { &hf_h460_9_worstEstimatedEnd2EndDelay,
2424       { "worstEstimatedEnd2EndDelay", "h460.9.worstEstimatedEnd2EndDelay",
2425         FT_UINT32, BASE_DEC, NULL, 0,
2426         "EstimatedEnd2EndDelay", HFILL }},
2427     { &hf_h460_9_meanEstimatedEnd2EndDelay,
2428       { "meanEstimatedEnd2EndDelay", "h460.9.meanEstimatedEnd2EndDelay",
2429         FT_UINT32, BASE_DEC, NULL, 0,
2430         "EstimatedEnd2EndDelay", HFILL }},
2431     { &hf_h460_9_mediaReceiverMeasures,
2432       { "mediaReceiverMeasures", "h460.9.mediaReceiverMeasures_element",
2433         FT_NONE, BASE_NONE, NULL, 0,
2434         NULL, HFILL }},
2435     { &hf_h460_9_cumulativeNumberOfPacketsLost,
2436       { "cumulativeNumberOfPacketsLost", "h460.9.cumulativeNumberOfPacketsLost",
2437         FT_UINT32, BASE_DEC, NULL, 0,
2438         "INTEGER_0_4294967295", HFILL }},
2439     { &hf_h460_9_packetLostRate,
2440       { "packetLostRate", "h460.9.packetLostRate",
2441         FT_UINT32, BASE_DEC, NULL, 0,
2442         "INTEGER_0_65535", HFILL }},
2443     { &hf_h460_9_worstJitter,
2444       { "worstJitter", "h460.9.worstJitter",
2445         FT_UINT32, BASE_DEC, NULL, 0,
2446         "CalculatedJitter", HFILL }},
2447     { &hf_h460_9_estimatedThroughput,
2448       { "estimatedThroughput", "h460.9.estimatedThroughput",
2449         FT_UINT32, BASE_DEC, NULL, 0,
2450         "BandWidth", HFILL }},
2451     { &hf_h460_9_fractionLostRate,
2452       { "fractionLostRate", "h460.9.fractionLostRate",
2453         FT_UINT32, BASE_DEC, NULL, 0,
2454         "INTEGER_0_65535", HFILL }},
2455     { &hf_h460_9_meanJitter,
2456       { "meanJitter", "h460.9.meanJitter",
2457         FT_UINT32, BASE_DEC, NULL, 0,
2458         "CalculatedJitter", HFILL }},
2459     { &hf_h460_9_extensions,
2460       { "extensions", "h460.9.extensions",
2461         FT_UINT32, BASE_DEC, NULL, 0,
2462         "SEQUENCE_OF_Extension", HFILL }},
2463     { &hf_h460_9_extensions_item,
2464       { "Extension", "h460.9.Extension_element",
2465         FT_NONE, BASE_NONE, NULL, 0,
2466         NULL, HFILL }},
2467     { &hf_h460_9_callReferenceValue,
2468       { "callReferenceValue", "h460.9.callReferenceValue",
2469         FT_UINT32, BASE_DEC, NULL, 0,
2470         NULL, HFILL }},
2471     { &hf_h460_9_conferenceID,
2472       { "conferenceID", "h460.9.conferenceID",
2473         FT_GUID, BASE_NONE, NULL, 0,
2474         "ConferenceIdentifier", HFILL }},
2475     { &hf_h460_9_callIdentifier,
2476       { "callIdentifier", "h460.9.callIdentifier_element",
2477         FT_NONE, BASE_NONE, NULL, 0,
2478         NULL, HFILL }},
2479     { &hf_h460_9_mediaChannelsQoS,
2480       { "mediaChannelsQoS", "h460.9.mediaChannelsQoS",
2481         FT_UINT32, BASE_DEC, NULL, 0,
2482         "SEQUENCE_OF_RTCPMeasures", HFILL }},
2483     { &hf_h460_9_mediaChannelsQoS_item,
2484       { "RTCPMeasures", "h460.9.RTCPMeasures_element",
2485         FT_NONE, BASE_NONE, NULL, 0,
2486         NULL, HFILL }},
2487     { &hf_h460_9_periodic,
2488       { "periodic", "h460.9.periodic_element",
2489         FT_NONE, BASE_NONE, NULL, 0,
2490         "PeriodicQoSMonReport", HFILL }},
2491     { &hf_h460_9_final,
2492       { "final", "h460.9.final_element",
2493         FT_NONE, BASE_NONE, NULL, 0,
2494         "FinalQosMonReport", HFILL }},
2495     { &hf_h460_9_interGK,
2496       { "interGK", "h460.9.interGK_element",
2497         FT_NONE, BASE_NONE, NULL, 0,
2498         "InterGKQosMonReport", HFILL }},
2499     { &hf_h460_9_perCallInfo,
2500       { "perCallInfo", "h460.9.perCallInfo",
2501         FT_UINT32, BASE_DEC, NULL, 0,
2502         "SEQUENCE_OF_PerCallQoSReport", HFILL }},
2503     { &hf_h460_9_perCallInfo_item,
2504       { "PerCallQoSReport", "h460.9.PerCallQoSReport_element",
2505         FT_NONE, BASE_NONE, NULL, 0,
2506         NULL, HFILL }},
2507     { &hf_h460_9_mediaInfo,
2508       { "mediaInfo", "h460.9.mediaInfo",
2509         FT_UINT32, BASE_DEC, NULL, 0,
2510         "SEQUENCE_OF_RTCPMeasures", HFILL }},
2511     { &hf_h460_9_mediaInfo_item,
2512       { "RTCPMeasures", "h460.9.RTCPMeasures_element",
2513         FT_NONE, BASE_NONE, NULL, 0,
2514         NULL, HFILL }},
2515     { &hf_h460_9_networkPacketLossRate,
2516       { "networkPacketLossRate", "h460.9.networkPacketLossRate",
2517         FT_UINT32, BASE_DEC, NULL, 0,
2518         "INTEGER_0_255", HFILL }},
2519     { &hf_h460_9_jitterBufferDiscardRate,
2520       { "jitterBufferDiscardRate", "h460.9.jitterBufferDiscardRate",
2521         FT_UINT32, BASE_DEC, NULL, 0,
2522         "INTEGER_0_255", HFILL }},
2523     { &hf_h460_9_burstMetrics,
2524       { "burstMetrics", "h460.9.burstMetrics_element",
2525         FT_NONE, BASE_NONE, NULL, 0,
2526         NULL, HFILL }},
2527     { &hf_h460_9_rtcpRoundTripDelay,
2528       { "rtcpRoundTripDelay", "h460.9.rtcpRoundTripDelay",
2529         FT_UINT32, BASE_DEC, NULL, 0,
2530         "INTEGER_0_65535", HFILL }},
2531     { &hf_h460_9_endSystemDelay,
2532       { "endSystemDelay", "h460.9.endSystemDelay",
2533         FT_UINT32, BASE_DEC, NULL, 0,
2534         "INTEGER_0_65535", HFILL }},
2535     { &hf_h460_9_signalLevel,
2536       { "signalLevel", "h460.9.signalLevel",
2537         FT_INT32, BASE_DEC, NULL, 0,
2538         "INTEGER_M127_10", HFILL }},
2539     { &hf_h460_9_noiseLevel,
2540       { "noiseLevel", "h460.9.noiseLevel",
2541         FT_INT32, BASE_DEC, NULL, 0,
2542         "INTEGER_M127_0", HFILL }},
2543     { &hf_h460_9_residualEchoReturnLoss,
2544       { "residualEchoReturnLoss", "h460.9.residualEchoReturnLoss",
2545         FT_UINT32, BASE_DEC, NULL, 0,
2546         "INTEGER_0_127", HFILL }},
2547     { &hf_h460_9_rFactor,
2548       { "rFactor", "h460.9.rFactor",
2549         FT_UINT32, BASE_DEC, NULL, 0,
2550         "INTEGER_0_100", HFILL }},
2551     { &hf_h460_9_extRFactor,
2552       { "extRFactor", "h460.9.extRFactor",
2553         FT_UINT32, BASE_DEC, NULL, 0,
2554         "INTEGER_0_100", HFILL }},
2555     { &hf_h460_9_estimatedMOSLQ,
2556       { "estimatedMOSLQ", "h460.9.estimatedMOSLQ",
2557         FT_UINT32, BASE_DEC, NULL, 0,
2558         "INTEGER_10_50", HFILL }},
2559     { &hf_h460_9_estimatedMOSCQ,
2560       { "estimatedMOSCQ", "h460.9.estimatedMOSCQ",
2561         FT_UINT32, BASE_DEC, NULL, 0,
2562         "INTEGER_10_50", HFILL }},
2563     { &hf_h460_9_plcType,
2564       { "plcType", "h460.9.plcType",
2565         FT_UINT32, BASE_DEC, VALS(h460_9_PLCtypes_vals), 0,
2566         "PLCtypes", HFILL }},
2567     { &hf_h460_9_jitterBufferParms,
2568       { "jitterBufferParms", "h460.9.jitterBufferParms_element",
2569         FT_NONE, BASE_NONE, NULL, 0,
2570         NULL, HFILL }},
2571     { &hf_h460_9_gmin,
2572       { "gmin", "h460.9.gmin",
2573         FT_UINT32, BASE_DEC, NULL, 0,
2574         "INTEGER_0_255", HFILL }},
2575     { &hf_h460_9_burstLossDensity,
2576       { "burstLossDensity", "h460.9.burstLossDensity",
2577         FT_UINT32, BASE_DEC, NULL, 0,
2578         "INTEGER_0_255", HFILL }},
2579     { &hf_h460_9_gapLossDensity,
2580       { "gapLossDensity", "h460.9.gapLossDensity",
2581         FT_UINT32, BASE_DEC, NULL, 0,
2582         "INTEGER_0_255", HFILL }},
2583     { &hf_h460_9_burstDuration,
2584       { "burstDuration", "h460.9.burstDuration",
2585         FT_UINT32, BASE_DEC, NULL, 0,
2586         "INTEGER_0_65535", HFILL }},
2587     { &hf_h460_9_gapDuration,
2588       { "gapDuration", "h460.9.gapDuration",
2589         FT_UINT32, BASE_DEC, NULL, 0,
2590         "INTEGER_0_65535", HFILL }},
2591     { &hf_h460_9_unspecified,
2592       { "unspecified", "h460.9.unspecified_element",
2593         FT_NONE, BASE_NONE, NULL, 0,
2594         NULL, HFILL }},
2595     { &hf_h460_9_disabled,
2596       { "disabled", "h460.9.disabled_element",
2597         FT_NONE, BASE_NONE, NULL, 0,
2598         NULL, HFILL }},
2599     { &hf_h460_9_enhanced,
2600       { "enhanced", "h460.9.enhanced_element",
2601         FT_NONE, BASE_NONE, NULL, 0,
2602         NULL, HFILL }},
2603     { &hf_h460_9_standard,
2604       { "standard", "h460.9.standard_element",
2605         FT_NONE, BASE_NONE, NULL, 0,
2606         NULL, HFILL }},
2607     { &hf_h460_9_jitterBufferType,
2608       { "jitterBufferType", "h460.9.jitterBufferType",
2609         FT_UINT32, BASE_DEC, VALS(h460_9_JitterBufferTypes_vals), 0,
2610         "JitterBufferTypes", HFILL }},
2611     { &hf_h460_9_jitterBufferAdaptRate,
2612       { "jitterBufferAdaptRate", "h460.9.jitterBufferAdaptRate",
2613         FT_UINT32, BASE_DEC, NULL, 0,
2614         "INTEGER_0_15", HFILL }},
2615     { &hf_h460_9_jitterBufferNominalSize,
2616       { "jitterBufferNominalSize", "h460.9.jitterBufferNominalSize",
2617         FT_UINT32, BASE_DEC, NULL, 0,
2618         "INTEGER_0_65535", HFILL }},
2619     { &hf_h460_9_jitterBufferMaxSize,
2620       { "jitterBufferMaxSize", "h460.9.jitterBufferMaxSize",
2621         FT_UINT32, BASE_DEC, NULL, 0,
2622         "INTEGER_0_65535", HFILL }},
2623     { &hf_h460_9_jitterBufferAbsoluteMax,
2624       { "jitterBufferAbsoluteMax", "h460.9.jitterBufferAbsoluteMax",
2625         FT_UINT32, BASE_DEC, NULL, 0,
2626         "INTEGER_0_65535", HFILL }},
2627     { &hf_h460_9_unknown,
2628       { "unknown", "h460.9.unknown_element",
2629         FT_NONE, BASE_NONE, NULL, 0,
2630         NULL, HFILL }},
2631     { &hf_h460_9_reserved,
2632       { "reserved", "h460.9.reserved_element",
2633         FT_NONE, BASE_NONE, NULL, 0,
2634         NULL, HFILL }},
2635     { &hf_h460_9_nonadaptive,
2636       { "nonadaptive", "h460.9.nonadaptive_element",
2637         FT_NONE, BASE_NONE, NULL, 0,
2638         NULL, HFILL }},
2639     { &hf_h460_9_adaptive,
2640       { "adaptive", "h460.9.adaptive_element",
2641         FT_NONE, BASE_NONE, NULL, 0,
2642         NULL, HFILL }},
2643
2644 /* --- Module CALL-PARTY-CATEGORY --- --- ---                                 */
2645
2646     { &hf_h460_10_h460_10_CallPartyCategoryInfo_PDU,
2647       { "CallPartyCategoryInfo", "h460.10.CallPartyCategoryInfo_element",
2648         FT_NONE, BASE_NONE, NULL, 0,
2649         NULL, HFILL }},
2650     { &hf_h460_10_callPartyCategory,
2651       { "callPartyCategory", "h460.10.callPartyCategory",
2652         FT_UINT32, BASE_DEC, NULL, 0,
2653         NULL, HFILL }},
2654     { &hf_h460_10_originatingLineInfo,
2655       { "originatingLineInfo", "h460.10.originatingLineInfo",
2656         FT_UINT32, BASE_DEC, NULL, 0,
2657         NULL, HFILL }},
2658
2659 /* --- Module MLPP --- --- ---                                                */
2660
2661     { &hf_h460_14_h460_14_MLPPInfo_PDU,
2662       { "MLPPInfo", "h460.14.MLPPInfo_element",
2663         FT_NONE, BASE_NONE, NULL, 0,
2664         NULL, HFILL }},
2665     { &hf_h460_14_precedence,
2666       { "precedence", "h460.14.precedence",
2667         FT_UINT32, BASE_DEC, VALS(h460_14_MlppPrecedence_vals), 0,
2668         "MlppPrecedence", HFILL }},
2669     { &hf_h460_14_mlppReason,
2670       { "mlppReason", "h460.14.mlppReason",
2671         FT_UINT32, BASE_DEC, VALS(h460_14_MlppReason_vals), 0,
2672         NULL, HFILL }},
2673     { &hf_h460_14_mlppNotification,
2674       { "mlppNotification", "h460.14.mlppNotification",
2675         FT_UINT32, BASE_DEC, VALS(h460_14_MlppNotification_vals), 0,
2676         NULL, HFILL }},
2677     { &hf_h460_14_alternateParty,
2678       { "alternateParty", "h460.14.alternateParty_element",
2679         FT_NONE, BASE_NONE, NULL, 0,
2680         NULL, HFILL }},
2681     { &hf_h460_14_releaseCall,
2682       { "releaseCall", "h460.14.releaseCall_element",
2683         FT_NONE, BASE_NONE, NULL, 0,
2684         NULL, HFILL }},
2685     { &hf_h460_14_preemptionPending,
2686       { "preemptionPending", "h460.14.preemptionPending_element",
2687         FT_NONE, BASE_NONE, NULL, 0,
2688         NULL, HFILL }},
2689     { &hf_h460_14_preemptionInProgress,
2690       { "preemptionInProgress", "h460.14.preemptionInProgress_element",
2691         FT_NONE, BASE_NONE, NULL, 0,
2692         NULL, HFILL }},
2693     { &hf_h460_14_preemptionEnd,
2694       { "preemptionEnd", "h460.14.preemptionEnd_element",
2695         FT_NONE, BASE_NONE, NULL, 0,
2696         NULL, HFILL }},
2697     { &hf_h460_14_preemptionComplete,
2698       { "preemptionComplete", "h460.14.preemptionComplete_element",
2699         FT_NONE, BASE_NONE, NULL, 0,
2700         NULL, HFILL }},
2701     { &hf_h460_14_altID,
2702       { "altID", "h460.14.altID",
2703         FT_UINT32, BASE_DEC, VALS(AliasAddress_vals), 0,
2704         "AliasAddress", HFILL }},
2705     { &hf_h460_14_altTimer,
2706       { "altTimer", "h460.14.altTimer",
2707         FT_UINT32, BASE_DEC, NULL, 0,
2708         "INTEGER_0_255", HFILL }},
2709     { &hf_h460_14_preemptCallID,
2710       { "preemptCallID", "h460.14.preemptCallID_element",
2711         FT_NONE, BASE_NONE, NULL, 0,
2712         "CallIdentifier", HFILL }},
2713     { &hf_h460_14_releaseReason,
2714       { "releaseReason", "h460.14.releaseReason",
2715         FT_UINT32, BASE_DEC, VALS(h460_14_MlppReason_vals), 0,
2716         "MlppReason", HFILL }},
2717     { &hf_h460_14_releaseDelay,
2718       { "releaseDelay", "h460.14.releaseDelay",
2719         FT_UINT32, BASE_DEC, NULL, 0,
2720         "INTEGER_0_255", HFILL }},
2721
2722 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- ---                 */
2723
2724     { &hf_h460_15_h460_15_SignallingChannelData_PDU,
2725       { "SignallingChannelData", "h460.15.SignallingChannelData_element",
2726         FT_NONE, BASE_NONE, NULL, 0,
2727         NULL, HFILL }},
2728     { &hf_h460_15_signallingChannelData,
2729       { "signallingChannelData", "h460.15.signallingChannelData",
2730         FT_UINT32, BASE_DEC, VALS(h460_15_T_signallingChannelData_vals), 0,
2731         NULL, HFILL }},
2732     { &hf_h460_15_channelSuspendRequest,
2733       { "channelSuspendRequest", "h460.15.channelSuspendRequest_element",
2734         FT_NONE, BASE_NONE, NULL, 0,
2735         NULL, HFILL }},
2736     { &hf_h460_15_channelSuspendResponse,
2737       { "channelSuspendResponse", "h460.15.channelSuspendResponse_element",
2738         FT_NONE, BASE_NONE, NULL, 0,
2739         NULL, HFILL }},
2740     { &hf_h460_15_channelSuspendConfirm,
2741       { "channelSuspendConfirm", "h460.15.channelSuspendConfirm_element",
2742         FT_NONE, BASE_NONE, NULL, 0,
2743         NULL, HFILL }},
2744     { &hf_h460_15_channelSuspendCancel,
2745       { "channelSuspendCancel", "h460.15.channelSuspendCancel_element",
2746         FT_NONE, BASE_NONE, NULL, 0,
2747         NULL, HFILL }},
2748     { &hf_h460_15_channelResumeRequest,
2749       { "channelResumeRequest", "h460.15.channelResumeRequest_element",
2750         FT_NONE, BASE_NONE, NULL, 0,
2751         NULL, HFILL }},
2752     { &hf_h460_15_channelResumeResponse,
2753       { "channelResumeResponse", "h460.15.channelResumeResponse_element",
2754         FT_NONE, BASE_NONE, NULL, 0,
2755         NULL, HFILL }},
2756     { &hf_h460_15_channelResumeAddress,
2757       { "channelResumeAddress", "h460.15.channelResumeAddress",
2758         FT_UINT32, BASE_DEC, NULL, 0,
2759         "SEQUENCE_OF_TransportAddress", HFILL }},
2760     { &hf_h460_15_channelResumeAddress_item,
2761       { "TransportAddress", "h460.15.TransportAddress",
2762         FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
2763         NULL, HFILL }},
2764     { &hf_h460_15_immediateResume,
2765       { "immediateResume", "h460.15.immediateResume",
2766         FT_BOOLEAN, BASE_NONE, NULL, 0,
2767         "BOOLEAN", HFILL }},
2768     { &hf_h460_15_resetH245,
2769       { "resetH245", "h460.15.resetH245_element",
2770         FT_NONE, BASE_NONE, NULL, 0,
2771         NULL, HFILL }},
2772     { &hf_h460_15_okToSuspend,
2773       { "okToSuspend", "h460.15.okToSuspend",
2774         FT_BOOLEAN, BASE_NONE, NULL, 0,
2775         "BOOLEAN", HFILL }},
2776     { &hf_h460_15_randomNumber,
2777       { "randomNumber", "h460.15.randomNumber",
2778         FT_UINT32, BASE_DEC, NULL, 0,
2779         "INTEGER_0_4294967295", HFILL }},
2780
2781 /* --- Module SIGNALLING-TRAVERSAL --- --- ---                                */
2782
2783     { &hf_h460_18_h460_18_IncomingCallIndication_PDU,
2784       { "IncomingCallIndication", "h460.18.IncomingCallIndication_element",
2785         FT_NONE, BASE_NONE, NULL, 0,
2786         NULL, HFILL }},
2787     { &hf_h460_18_h460_18_LRQKeepAliveData_PDU,
2788       { "LRQKeepAliveData", "h460.18.LRQKeepAliveData_element",
2789         FT_NONE, BASE_NONE, NULL, 0,
2790         NULL, HFILL }},
2791     { &hf_h460_18_callSignallingAddress,
2792       { "callSignallingAddress", "h460.18.callSignallingAddress",
2793         FT_UINT32, BASE_DEC, VALS(h225_TransportAddress_vals), 0,
2794         "TransportAddress", HFILL }},
2795     { &hf_h460_18_callID,
2796       { "callID", "h460.18.callID_element",
2797         FT_NONE, BASE_NONE, NULL, 0,
2798         "CallIdentifier", HFILL }},
2799     { &hf_h460_18_lrqKeepAliveInterval,
2800       { "lrqKeepAliveInterval", "h460.18.lrqKeepAliveInterval",
2801         FT_UINT32, BASE_DEC, NULL, 0,
2802         "TimeToLive", HFILL }},
2803
2804 /* --- Module MEDIA-TRAVERSAL --- --- ---                                     */
2805
2806     { &hf_h460_19_h460_19_TraversalParameters_PDU,
2807       { "TraversalParameters", "h460.19.TraversalParameters_element",
2808         FT_NONE, BASE_NONE, NULL, 0,
2809         NULL, HFILL }},
2810     { &hf_h460_19_multiplexedMediaChannel,
2811       { "multiplexedMediaChannel", "h460.19.multiplexedMediaChannel",
2812         FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2813         "TransportAddress", HFILL }},
2814     { &hf_h460_19_multiplexedMediaControlChannel,
2815       { "multiplexedMediaControlChannel", "h460.19.multiplexedMediaControlChannel",
2816         FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2817         "TransportAddress", HFILL }},
2818     { &hf_h460_19_multiplexID,
2819       { "multiplexID", "h460.19.multiplexID",
2820         FT_UINT32, BASE_DEC, NULL, 0,
2821         "INTEGER_0_4294967295", HFILL }},
2822     { &hf_h460_19_keepAliveChannel,
2823       { "keepAliveChannel", "h460.19.keepAliveChannel",
2824         FT_UINT32, BASE_DEC, VALS(h245_TransportAddress_vals), 0,
2825         "TransportAddress", HFILL }},
2826     { &hf_h460_19_keepAlivePayloadType,
2827       { "keepAlivePayloadType", "h460.19.keepAlivePayloadType",
2828         FT_UINT32, BASE_DEC, NULL, 0,
2829         "INTEGER_0_127", HFILL }},
2830     { &hf_h460_19_keepAliveInterval,
2831       { "keepAliveInterval", "h460.19.keepAliveInterval",
2832         FT_UINT32, BASE_DEC, NULL, 0,
2833         "TimeToLive", HFILL }},
2834
2835 /* --- Module MESSAGE-BROADCAST --- --- ---                                   */
2836
2837     { &hf_h460_21_h460_21_CapabilityAdvertisement_PDU,
2838       { "CapabilityAdvertisement", "h460.21.CapabilityAdvertisement_element",
2839         FT_NONE, BASE_NONE, NULL, 0,
2840         NULL, HFILL }},
2841     { &hf_h460_21_receiveCapabilities,
2842       { "receiveCapabilities", "h460.21.receiveCapabilities_element",
2843         FT_NONE, BASE_NONE, NULL, 0,
2844         NULL, HFILL }},
2845     { &hf_h460_21_transmitCapabilities,
2846       { "transmitCapabilities", "h460.21.transmitCapabilities",
2847         FT_UINT32, BASE_DEC, NULL, 0,
2848         "SEQUENCE_SIZE_1_256_OF_TransmitCapabilities", HFILL }},
2849     { &hf_h460_21_transmitCapabilities_item,
2850       { "TransmitCapabilities", "h460.21.TransmitCapabilities_element",
2851         FT_NONE, BASE_NONE, NULL, 0,
2852         NULL, HFILL }},
2853     { &hf_h460_21_capabilities,
2854       { "capabilities", "h460.21.capabilities",
2855         FT_UINT32, BASE_DEC, NULL, 0,
2856         "SEQUENCE_SIZE_1_256_OF_Capability", HFILL }},
2857     { &hf_h460_21_capabilities_item,
2858       { "Capability", "h460.21.Capability",
2859         FT_UINT32, BASE_DEC, VALS(h245_Capability_vals), 0,
2860         NULL, HFILL }},
2861     { &hf_h460_21_maxGroups,
2862       { "maxGroups", "h460.21.maxGroups",
2863         FT_UINT32, BASE_DEC, NULL, 0,
2864         "INTEGER_1_65535", HFILL }},
2865     { &hf_h460_21_groupIdentifer,
2866       { "groupIdentifer", "h460.21.groupIdentifer",
2867         FT_BYTES, BASE_NONE, NULL, 0,
2868         "GloballyUniqueID", HFILL }},
2869     { &hf_h460_21_capability,
2870       { "capability", "h460.21.capability",
2871         FT_UINT32, BASE_DEC, VALS(h245_Capability_vals), 0,
2872         NULL, HFILL }},
2873     { &hf_h460_21_sourceAddress,
2874       { "sourceAddress", "h460.21.sourceAddress",
2875         FT_UINT32, BASE_DEC, VALS(h245_UnicastAddress_vals), 0,
2876         "UnicastAddress", HFILL }},
2877
2878 /*--- End of included file: packet-h460-hfarr.c ---*/
2879 #line 253 "../../asn1/h460/packet-h460-template.c"
2880   };
2881
2882   /* List of subtrees */
2883   static gint *ett[] = {
2884
2885 /*--- Included file: packet-h460-ettarr.c ---*/
2886 #line 1 "../../asn1/h460/packet-h460-ettarr.c"
2887
2888 /* --- Module NUMBER-PORTABILITY --- --- ---                                  */
2889
2890     &ett_h460_2_NumberPortabilityInfo,
2891     &ett_h460_2_T_nUMBERPORTABILITYDATA,
2892     &ett_h460_2_NumberPortabilityRejectReason,
2893     &ett_h460_2_PortabilityAddress,
2894     &ett_h460_2_NumberPortabilityTypeOfNumber,
2895     &ett_h460_2_PortabilityTypeOfNumber,
2896     &ett_h460_2_RegionalParameters,
2897
2898 /* --- Module CIRCUIT-STATUS-MAP --- --- ---                                  */
2899
2900     &ett_h460_3_CircuitStatus,
2901     &ett_h460_3_SEQUENCE_OF_CircuitStatusMap,
2902     &ett_h460_3_CircuitStatusMap,
2903     &ett_h460_3_CircuitStatusType,
2904
2905 /* --- Module CALL-PRIORITY --- --- ---                                       */
2906
2907     &ett_h460_4_CallPriorityInfo,
2908     &ett_h460_4_T_priorityValue,
2909     &ett_h460_4_SEQUENCE_OF_ClearToken,
2910     &ett_h460_4_SEQUENCE_OF_CryptoToken,
2911     &ett_h460_4_T_rejectReason,
2912     &ett_h460_4_CountryInternationalNetworkCallOriginationIdentification,
2913     &ett_h460_4_T_numberingPlan,
2914     &ett_h460_4_T_x121,
2915     &ett_h460_4_T_e164,
2916
2917 /* --- Modules QOS-MONITORING-REPORT QOS-MONITORING-EXTENDED-VOIP-REPORT --- --- --- */
2918
2919     &ett_h460_9_Extension,
2920     &ett_h460_9_RTCPMeasures,
2921     &ett_h460_9_T_mediaSenderMeasures,
2922     &ett_h460_9_T_mediaReceiverMeasures,
2923     &ett_h460_9_SEQUENCE_OF_Extension,
2924     &ett_h460_9_PerCallQoSReport,
2925     &ett_h460_9_SEQUENCE_OF_RTCPMeasures,
2926     &ett_h460_9_QosMonitoringReportData,
2927     &ett_h460_9_PeriodicQoSMonReport,
2928     &ett_h460_9_SEQUENCE_OF_PerCallQoSReport,
2929     &ett_h460_9_FinalQosMonReport,
2930     &ett_h460_9_InterGKQosMonReport,
2931     &ett_h460_9_ExtendedRTPMetrics,
2932     &ett_h460_9_BurstMetrics,
2933     &ett_h460_9_PLCtypes,
2934     &ett_h460_9_JitterBufferParms,
2935     &ett_h460_9_JitterBufferTypes,
2936
2937 /* --- Module CALL-PARTY-CATEGORY --- --- ---                                 */
2938
2939     &ett_h460_10_CallPartyCategoryInfo,
2940
2941 /* --- Module MLPP --- --- ---                                                */
2942
2943     &ett_h460_14_MLPPInfo,
2944     &ett_h460_14_MlppNotification,
2945     &ett_h460_14_AlternateParty,
2946     &ett_h460_14_ReleaseCall,
2947
2948 /* --- Module SIGNALLING-CHANNEL-SUSPEND-REDIRECT --- --- ---                 */
2949
2950     &ett_h460_15_SignallingChannelData,
2951     &ett_h460_15_T_signallingChannelData,
2952     &ett_h460_15_ChannelSuspendRequest,
2953     &ett_h460_15_SEQUENCE_OF_TransportAddress,
2954     &ett_h460_15_ChannelSuspendResponse,
2955     &ett_h460_15_ChannelSuspendConfirm,
2956     &ett_h460_15_ChannelSuspendCancel,
2957     &ett_h460_15_ChannelResumeRequest,
2958     &ett_h460_15_ChannelResumeResponse,
2959
2960 /* --- Module SIGNALLING-TRAVERSAL --- --- ---                                */
2961
2962     &ett_h460_18_IncomingCallIndication,
2963     &ett_h460_18_LRQKeepAliveData,
2964
2965 /* --- Module MEDIA-TRAVERSAL --- --- ---                                     */
2966
2967     &ett_h460_19_TraversalParameters,
2968
2969 /* --- Module MESSAGE-BROADCAST --- --- ---                                   */
2970
2971     &ett_h460_21_CapabilityAdvertisement,
2972     &ett_h460_21_SEQUENCE_SIZE_1_256_OF_TransmitCapabilities,
2973     &ett_h460_21_ReceiveCapabilities,
2974     &ett_h460_21_SEQUENCE_SIZE_1_256_OF_Capability,
2975     &ett_h460_21_TransmitCapabilities,
2976
2977 /*--- End of included file: packet-h460-ettarr.c ---*/
2978 #line 258 "../../asn1/h460/packet-h460-template.c"
2979   };
2980
2981   /* Register protocol */
2982   proto_h460 = proto_register_protocol(PNAME, PSNAME, PFNAME);
2983
2984   /* Register fields and subtrees */
2985   proto_register_field_array(proto_h460, hf, array_length(hf));
2986   proto_register_subtree_array(ett, array_length(ett));
2987
2988   for (ftr=h460_feature_tab; ftr->id; ftr++) {
2989     if (ftr->opt & GD) ftr->key_gd = g_strdup_printf("GenericData/%s", ftr->id);
2990     if (ftr->opt & FD) ftr->key_fd = g_strdup_printf("FeatureDescriptor/%s", ftr->id);
2991     if (ftr->opt & GM) ftr->key_gm = g_strdup_printf("GenericMessage/%s", ftr->id);
2992     if (ftr->opt & GI) ftr->key_gi = g_strdup_printf("GenericInformation/%s", ftr->id);
2993     if (ftr->content_pdu) ftr->content_hnd = new_create_dissector_handle(ftr->content_pdu, proto_h460);
2994   }
2995 }
2996
2997 /*--- proto_reg_handoff_h460 -------------------------------------------*/
2998 void proto_reg_handoff_h460(void)
2999 {
3000   h460_feature_t *ftr;
3001   dissector_handle_t h460_name_handle;
3002
3003   q931_ie_handle = find_dissector("q931.ie");
3004   h225_ras_handle = find_dissector("h225.ras");
3005
3006   h460_name_handle = new_create_dissector_handle(dissect_h460_name, proto_h460);
3007   for (ftr=h460_feature_tab; ftr->id; ftr++) {
3008     if (ftr->key_gd) dissector_add_string("h225.gef.name", ftr->key_gd, h460_name_handle);
3009     if (ftr->key_fd) dissector_add_string("h225.gef.name", ftr->key_fd, h460_name_handle);
3010     if (ftr->key_gm) dissector_add_string("h245.gef.name", ftr->key_gm, h460_name_handle);
3011     if (ftr->key_gi) dissector_add_string("h245.gef.name", ftr->key_gi, h460_name_handle);
3012     if (ftr->content_hnd) {
3013       if (ftr->key_gd) dissector_add_string("h225.gef.content", ftr->key_gd, ftr->content_hnd);
3014       if (ftr->key_fd) dissector_add_string("h225.gef.content", ftr->key_fd, ftr->content_hnd);
3015       if (ftr->key_gm) dissector_add_string("h245.gef.content", ftr->key_gm, ftr->content_hnd);
3016       if (ftr->key_gi) dissector_add_string("h245.gef.content", ftr->key_gi, ftr->content_hnd);
3017     }
3018   }
3019
3020 }