Coverage Report

Created: 2026-05-14 06:28

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