Coverage Report

Created: 2025-08-04 07:15

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