Coverage Report

Created: 2025-08-04 07:15

/src/wireshark/epan/dissectors/packet-isdn-sup.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-isdn-sup.c                                                          */
4
/* asn2wrs.py -b -q -L -p isdn-sup -c ./isdn-sup.cnf -s ./packet-isdn-sup-template -D . -O ../.. Addressing-Data-Elements.asn Basic-Service-Elements.asn Embedded-Q931-Types.asn General-Errors.asn Advice-of-Charge-Operations.asn Closed-User-Group-Service-Operations.asn Conference-Add-On-Operations.asn Diversion-Operations.asn MCID-Operations.asn User-To-User-Signalling-Operations.asn Freephone-Operations.asn MLPP-Operations-And-Errors.asn */
5
6
/* packet-isdn-sup-template.c
7
 * Routines for ETSI Integrated Services Digital Network (ISDN)
8
 * supplementary services
9
 * Copyright 2013, Anders Broman <anders.broman@ericsson.com>
10
 *
11
 * Wireshark - Network traffic analyzer
12
 * By Gerald Combs <gerald@wireshark.org>
13
 * Copyright 1998 Gerald Combs
14
 *
15
 * SPDX-License-Identifier: GPL-2.0-or-later
16
 * References: ETSI 300 374
17
 */
18
19
#include "config.h"
20
21
#include <epan/packet.h>
22
#include <epan/expert.h>
23
#include <wsutil/array.h>
24
25
#include "packet-ber.h"
26
27
14
#define PNAME  "ISDN supplementary services"
28
14
#define PSNAME "ISDN_SUP"
29
56
#define PFNAME "isdn_sup"
30
31
void proto_register_isdn_sup(void);
32
void proto_reg_handoff_isdn_sup(void);
33
34
static dissector_handle_t isdn_sup_arg_handle;
35
static dissector_handle_t isdn_sup_res_handle;
36
static dissector_handle_t isdn_sup_err_handle;
37
38
#define fPHOID                         "0.4.0.210.1"
39
40
/* Initialize the protocol and registered fields */
41
static int proto_isdn_sup;
42
static int hf_isdn_sup_operation;
43
static int hf_isdn_sup_error;
44
45
/* Global variables */
46
47
#if 0
48
/* ROSE context */
49
static rose_ctx_t isdn_sup_rose_ctx;
50
#endif
51
52
typedef struct _isdn_sup_op_t {
53
  int32_t opcode;
54
  dissector_t arg_pdu;
55
  dissector_t res_pdu;
56
} isdn_sup_op_t;
57
58
typedef struct _isdn_global_sup_op_t {
59
  const char*  oid;
60
  dissector_t arg_pdu;
61
  dissector_t res_pdu;
62
} isdn_sup_global_op_t;
63
64
65
typedef struct isdn_sup_err_t {
66
  int32_t errcode;
67
  dissector_t err_pdu;
68
} isdn_sup_err_t;
69
70
static const value_string isdn_sup_str_operation[] = {
71
  {   1, "userUserService" },
72
  {   2, "cUGcall" },
73
  {   3, "mCIDRequest" },
74
  {   7, "activationDiversion" },
75
  {   8, "deactivationDiversion" },
76
  {   9, "activationStatusNotificationDiv" },
77
  {  10, "deactivationStatusNotificationDiv" },
78
  {  11, "interrogationDiversion" },
79
  {  12, "diversionInformation" },
80
  {  13, "callDeflection" },
81
  {  14, "callRerouteing" },
82
  {  15, "divertingLegInformation2" },
83
  {  17, "interrogateServedUserNumbers" },
84
  {  18, "divertingLegInformation1" },
85
  {  19, "divertingLegInformation3" },
86
  {  24, "mLPPLFBQuery" },
87
  {  25, "mLPPCallRequest" },
88
  {  26, "mLPPCallPreemption" },
89
  {  30, "chargingRequest" },
90
  {  31, "aOCSCurrency" },
91
  {  32, "aOCSSpecialArr" },
92
  {  33, "aOCDCurrency" },
93
  {  34, "aOCDChargingUnit" },
94
  {  35, "aOCECurrency" },
95
  {  36, "aOCEChargingUnit" },
96
  {  40, "beginCONF" },
97
  {  41, "addCONF" },
98
  {  42, "splitCONF" },
99
  {  43, "dropCONF" },
100
  {  44, "isolateCONF" },
101
  {  45, "reattachCONF" },
102
  {  46, "partyDISC" },
103
  {   0, NULL}
104
};
105
106
107
static const value_string isdn_sup_str_error[] = {
108
  {    0, "notSubscribed" },
109
  {    3, "notAvailable" },
110
  {    4, "notImplemented" },
111
  {    6, "invalidServedUserNr" },
112
  {    7, "invalidCallState" },
113
  {    8, "basicServiceNotProvided" },
114
  {    9, "notIncomingCall" },
115
  {   10, "supplementaryServiceInteractionNotAllowed" },
116
  {   11, "resourceUnavailable" },
117
  {   26, "noChargingInfoAvailable" },
118
  {   16, "invalidOrUnregisteredCUGIndex" },
119
  {   17, "requestedBasicServiceViolatesCUGConstraints" },
120
  {   18, "outgoingCallsBarredWithinCUG" },
121
  {   19, "incomingCallsBarredWithinCUG" },
122
  {   20, "userNotMemberOfCUG" },
123
  {   21, "inconsistencyInDesignatedFacilityAndSubscriberClass" },
124
  {   28, "illConferenceId" },
125
  {   29, "illPartyId" },
126
  {   30, "numberOfPartiesExceeded" },
127
  {   31, "notActive" },
128
  {   32, "notAllowed" },
129
  {   12, "invalidDivertedToNr" },
130
  {   14, "specialServiceNr" },
131
  {   15, "diversionToServedUserNr" },
132
  {   23, "incomingCallAccepted" },
133
  {   24, "numberOfDiversionsExceeded" },
134
  {   46, "notActivated" },
135
  {   48, "requestAlreadyAccepted" },
136
  {    1, "rejectedByTheNetwork" },
137
  {    2, "rejectedByTheUser" },
138
  {   44, "unauthorizedPrecedenceLevel" },
139
  {   0, NULL}
140
};
141
142
static int hf_isdn_sup;
143
144
static int hf_isdn_sup_ChargingRequestArg_PDU;    /* ChargingRequestArg */
145
static int hf_isdn_sup_ChargingRequestRes_PDU;    /* ChargingRequestRes */
146
static int hf_isdn_sup_AOCSCurrencyArg_PDU;       /* AOCSCurrencyArg */
147
static int hf_isdn_sup_AOCSSpecialArrArg_PDU;     /* AOCSSpecialArrArg */
148
static int hf_isdn_sup_AOCDCurrencyArg_PDU;       /* AOCDCurrencyArg */
149
static int hf_isdn_sup_AOCDChargingUnitArg_PDU;   /* AOCDChargingUnitArg */
150
static int hf_isdn_sup_AOCECurrencyArg_PDU;       /* AOCECurrencyArg */
151
static int hf_isdn_sup_AOCEChargingUnitArg_PDU;   /* AOCEChargingUnitArg */
152
static int hf_isdn_sup_CUGcallArg_PDU;            /* CUGcallArg */
153
static int hf_isdn_sup_BeginCONFArg_PDU;          /* BeginCONFArg */
154
static int hf_isdn_sup_BeginCONFRes_PDU;          /* BeginCONFRes */
155
static int hf_isdn_sup_AddCONFArg_PDU;            /* AddCONFArg */
156
static int hf_isdn_sup_AddCONFRes_PDU;            /* AddCONFRes */
157
static int hf_isdn_sup_SplitCONFArg_PDU;          /* SplitCONFArg */
158
static int hf_isdn_sup_DropCONFArg_PDU;           /* DropCONFArg */
159
static int hf_isdn_sup_IsolateCONFArg_PDU;        /* IsolateCONFArg */
160
static int hf_isdn_sup_ReattachCONFArg_PDU;       /* ReattachCONFArg */
161
static int hf_isdn_sup_PartyDISCArg_PDU;          /* PartyDISCArg */
162
static int hf_isdn_sup_ActivationDiversionArg_PDU;  /* ActivationDiversionArg */
163
static int hf_isdn_sup_DeactivationDiversionArg_PDU;  /* DeactivationDiversionArg */
164
static int hf_isdn_sup_ActivationStatusNotificationDivArg_PDU;  /* ActivationStatusNotificationDivArg */
165
static int hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU;  /* DeactivationStatusNotificationDivArg */
166
static int hf_isdn_sup_InterrogationDiversionArg_PDU;  /* InterrogationDiversionArg */
167
static int hf_isdn_sup_InterrogationDiversionRes_PDU;  /* InterrogationDiversionRes */
168
static int hf_isdn_sup_InterrogateServedUserNumbersRes_PDU;  /* InterrogateServedUserNumbersRes */
169
static int hf_isdn_sup_DiversionInformationArg_PDU;  /* DiversionInformationArg */
170
static int hf_isdn_sup_CallDeflectionArg_PDU;     /* CallDeflectionArg */
171
static int hf_isdn_sup_CallRerouteingArg_PDU;     /* CallRerouteingArg */
172
static int hf_isdn_sup_DivertingLegInformation1Arg_PDU;  /* DivertingLegInformation1Arg */
173
static int hf_isdn_sup_DivertingLegInformation2Arg_PDU;  /* DivertingLegInformation2Arg */
174
static int hf_isdn_sup_DivertingLegInformation3Arg_PDU;  /* DivertingLegInformation3Arg */
175
static int hf_isdn_sup_UserUserServiceArg_PDU;    /* UserUserServiceArg */
176
static int hf_isdn_sup_CalledFreephoneNrArg_PDU;  /* CalledFreephoneNrArg */
177
static int hf_isdn_sup_Monitor_T_FPHArg_PDU;      /* Monitor_T_FPHArg */
178
static int hf_isdn_sup_Free_T_FPHArg_PDU;         /* Free_T_FPHArg */
179
static int hf_isdn_sup_Call_T_FPHArg_PDU;         /* Call_T_FPHArg */
180
static int hf_isdn_sup_MLPPLFBArg_PDU;            /* MLPPLFBArg */
181
static int hf_isdn_sup_MLPPLFBResp_PDU;           /* MLPPLFBResp */
182
static int hf_isdn_sup_MLPPParams_PDU;            /* MLPPParams */
183
static int hf_isdn_sup_StatusRequest_PDU;         /* StatusRequest */
184
static int hf_isdn_sup_PreemptParams_PDU;         /* PreemptParams */
185
static int hf_isdn_sup_presentationallowedaddressscreened;  /* AddressScreened */
186
static int hf_isdn_sup_presentationRestricted;    /* NULL */
187
static int hf_isdn_sup_numberNotAvailableDueToInterworking;  /* NULL */
188
static int hf_isdn_sup_presentationrestrictedaddressscreened;  /* AddressScreened */
189
static int hf_isdn_sup_presentationAllowedAddress;  /* Address */
190
static int hf_isdn_sup_presentationRestrictedAddress;  /* Address */
191
static int hf_isdn_sup_presentationallowednumberscreened;  /* NumberScreened */
192
static int hf_isdn_sup_presentationrestrictednumberscreened;  /* NumberScreened */
193
static int hf_isdn_sup_presentationAllowedNumber;  /* PartyNumber */
194
static int hf_isdn_sup_presentationRestrictedNumber;  /* PartyNumber */
195
static int hf_isdn_sup_partyNumber;               /* PartyNumber */
196
static int hf_isdn_sup_screeningIndicator;        /* ScreeningIndicator */
197
static int hf_isdn_sup_partySubaddress;           /* PartySubaddress */
198
static int hf_isdn_sup_unknownPartyNumber;        /* NumberDigits */
199
static int hf_isdn_sup_publicPartyNumber;         /* PublicPartyNumber */
200
static int hf_isdn_sup_nsapEncodedNumber;         /* NsapEncodedNumber */
201
static int hf_isdn_sup_dataPartyNumber;           /* NumberDigits */
202
static int hf_isdn_sup_telexPartyNumber;          /* NumberDigits */
203
static int hf_isdn_sup_privatePartyNumber;        /* PrivatePartyNumber */
204
static int hf_isdn_sup_nationalStandardPartyNumber;  /* NumberDigits */
205
static int hf_isdn_sup_publicTypeOfNumber;        /* PublicTypeOfNumber */
206
static int hf_isdn_sup_publicNumberDigits;        /* NumberDigits */
207
static int hf_isdn_sup_privateTypeOfNumber;       /* PrivateTypeOfNumber */
208
static int hf_isdn_sup_privateNumberDigits;       /* NumberDigits */
209
static int hf_isdn_sup_userSpecifiedSubaddress;   /* UserSpecifiedSubaddress */
210
static int hf_isdn_sup_nSAPSubaddress;            /* NSAPSubaddress */
211
static int hf_isdn_sup_subaddressInformation;     /* SubaddressInformation */
212
static int hf_isdn_sup_oddCountIndicator;         /* BOOLEAN */
213
static int hf_isdn_sup_aOCSCurrencyInfoList;      /* AOCSCurrencyInfoList */
214
static int hf_isdn_sup_aOCSSpecialArrInfo;        /* AOCSSpecialArrInfo */
215
static int hf_isdn_sup_chargingInfoFollows;       /* NULL */
216
static int hf_isdn_sup_chargeNotAvailable;        /* NULL */
217
static int hf_isdn_sup_aOCDCurrencyInfo;          /* AOCDCurrencyInfo */
218
static int hf_isdn_sup_aOCDChargingUnitInfo;      /* AOCDChargingUnitInfo */
219
static int hf_isdn_sup_aOCECurrencyInfo;          /* AOCECurrencyInfo */
220
static int hf_isdn_sup_aOCEChargingUnitInfo;      /* AOCEChargingUnitInfo */
221
static int hf_isdn_sup_AOCSCurrencyInfoList_item;  /* AOCSCurrencyInfo */
222
static int hf_isdn_sup_chargedItem;               /* ChargedItem */
223
static int hf_isdn_sup_chargingtype;              /* T_chargingtype */
224
static int hf_isdn_sup_aocschargingtypespecificCurrency;  /* AOCSChargingTypeSpecificCurrency */
225
static int hf_isdn_sup_durationCurrency;          /* DurationCurrency */
226
static int hf_isdn_sup_flatRateCurrency;          /* FlatRateCurrency */
227
static int hf_isdn_sup_volumeRateCurrency;        /* VolumeRateCurrency */
228
static int hf_isdn_sup_specialChargingCode;       /* SpecialChargingCode */
229
static int hf_isdn_sup_freeOfCharge;              /* NULL */
230
static int hf_isdn_sup_currencyInfoNotAvailable;  /* NULL */
231
static int hf_isdn_sup_dCurrency;                 /* Currency */
232
static int hf_isdn_sup_dAmount;                   /* Amount */
233
static int hf_isdn_sup_dChargingType;             /* ChargingType */
234
static int hf_isdn_sup_dTime;                     /* Time */
235
static int hf_isdn_sup_dGranularity;              /* Time */
236
static int hf_isdn_sup_fRCurrency;                /* Currency */
237
static int hf_isdn_sup_fRAmount;                  /* Amount */
238
static int hf_isdn_sup_vRCurrency;                /* Currency */
239
static int hf_isdn_sup_vRAmount;                  /* Amount */
240
static int hf_isdn_sup_vRVolumeUnit;              /* VolumeUnit */
241
static int hf_isdn_sup_aocdspecificCurrency;      /* AOCDSpecificCurrency */
242
static int hf_isdn_sup_recordedCurrency;          /* RecordedCurrency */
243
static int hf_isdn_sup_typeOfChargingInfo;        /* TypeOfChargingInfo */
244
static int hf_isdn_sup_aOCDBillingId;             /* AOCDBillingId */
245
static int hf_isdn_sup_aocdspecificchargingunits;  /* AOCDSpecificChargingUnits */
246
static int hf_isdn_sup_recordedUnitsList;         /* RecordedUnitsList */
247
static int hf_isdn_sup_rCurrency;                 /* Currency */
248
static int hf_isdn_sup_rAmount;                   /* Amount */
249
static int hf_isdn_sup_RecordedUnitsList_item;    /* RecordedUnits */
250
static int hf_isdn_sup_recoredunitscc;            /* RecoredUnitsCc */
251
static int hf_isdn_sup_recordedNumberOfUnits;     /* NumberOfUnits */
252
static int hf_isdn_sup_notAvailable;              /* NULL */
253
static int hf_isdn_sup_recordedTypeOfUnits;       /* TypeOfUnit */
254
static int hf_isdn_sup_aocecurrencycc;            /* AOCECurrencyCc */
255
static int hf_isdn_sup_aoceccspecificCurrency;    /* AOCECcSpecificCurrency */
256
static int hf_isdn_sup_aOCEBillingId;             /* AOCEBillingId */
257
static int hf_isdn_sup_chargingAssociation;       /* ChargingAssociation */
258
static int hf_isdn_sup_aocechargingunitcc;        /* AOCEChargingUnitCc */
259
static int hf_isdn_sup_aoceccspecificchargingunits;  /* AOCECcSpecificChargingUnits */
260
static int hf_isdn_sup_currencyAmount;            /* CurrencyAmount */
261
static int hf_isdn_sup_multiplier;                /* Multiplier */
262
static int hf_isdn_sup_lengthOfTimeUnit;          /* LengthOfTimeUnit */
263
static int hf_isdn_sup_scale;                     /* Scale */
264
static int hf_isdn_sup_chargeNumber;              /* PartyNumber */
265
static int hf_isdn_sup_chargeIdentifier;          /* ChargeIdentifier */
266
static int hf_isdn_sup_oARequested;               /* OARequested */
267
static int hf_isdn_sup_cUGIndex;                  /* CUGIndex */
268
static int hf_isdn_sup_conferenceId;              /* ConferenceId */
269
static int hf_isdn_sup_partyId;                   /* PartyId */
270
static int hf_isdn_sup_procedure;                 /* Procedure */
271
static int hf_isdn_sup_basicService;              /* BasicService */
272
static int hf_isdn_sup_forwardedToAddress;        /* Address */
273
static int hf_isdn_sup_servedUserNr;              /* ServedUserNr */
274
static int hf_isdn_sup_noReplyTimer;              /* NoReplyTimer */
275
static int hf_isdn_sup_forwardedToAddresss;       /* Address */
276
static int hf_isdn_sup_diversionReason;           /* DiversionReason */
277
static int hf_isdn_sup_servedUserSubaddress;      /* PartySubaddress */
278
static int hf_isdn_sup_callingAddress;            /* PresentedAddressScreened */
279
static int hf_isdn_sup_originalCalledNr;          /* PresentedNumberUnscreened */
280
static int hf_isdn_sup_lastDivertingNr;           /* PresentedNumberUnscreened */
281
static int hf_isdn_sup_lastDivertingReason;       /* DiversionReason */
282
static int hf_isdn_sup_userInfo;                  /* Q931InformationElement */
283
static int hf_isdn_sup_deflectionAddress;         /* Address */
284
static int hf_isdn_sup_presentationAllowedDivertedToUser;  /* PresentationAllowedIndicator */
285
static int hf_isdn_sup_rerouteingReason;          /* DiversionReason */
286
static int hf_isdn_sup_calledAddress;             /* Address */
287
static int hf_isdn_sup_rerouteingCounter;         /* DiversionCounter */
288
static int hf_isdn_sup_q931InfoElement;           /* Q931InformationElement */
289
static int hf_isdn_sup_lastRerouteingNr;          /* PresentedNumberUnscreened */
290
static int hf_isdn_sup_subscriptionOption;        /* SubscriptionOption */
291
static int hf_isdn_sup_callingPartySubaddress;    /* PartySubaddress */
292
static int hf_isdn_sup_divertedToNumber;          /* PresentedNumberUnscreened */
293
static int hf_isdn_sup_diversionCounter;          /* DiversionCounter */
294
static int hf_isdn_sup_divertingNr;               /* PresentedNumberUnscreened */
295
static int hf_isdn_sup_IntResultList_item;        /* IntResult */
296
static int hf_isdn_sup_individualNumber;          /* PartyNumber */
297
static int hf_isdn_sup_allNumbers;                /* NULL */
298
static int hf_isdn_sup_ServedUserNumberList_item;  /* PartyNumber */
299
static int hf_isdn_sup_service;                   /* Service */
300
static int hf_isdn_sup_preferred;                 /* Preferred */
301
static int hf_isdn_sup_servedUserDestination;     /* PartyNumber */
302
static int hf_isdn_sup_queueIdentity;             /* QueueIdentity */
303
static int hf_isdn_sup_fPHReference;              /* FPHReference */
304
static int hf_isdn_sup_calledFreephoneNr;         /* CalledFreephoneNr */
305
static int hf_isdn_sup_mlppParams;                /* MLPPParams */
306
static int hf_isdn_sup_ieArg;                     /* IEArg */
307
static int hf_isdn_sup_precLevel;                 /* PrecLevel */
308
static int hf_isdn_sup_lfbIndictn;                /* LFBIndictn */
309
static int hf_isdn_sup_mlppSvcDomn;               /* MLPPSvcDomn */
310
static int hf_isdn_sup_statusQuery;               /* StatusQuery */
311
static int hf_isdn_sup_location;                  /* Location */
312
313
314
/* Initialize the subtree pointers */
315
static int ett_isdn_sup;
316
317
static int ett_isdn_sup_PresentedAddressScreened;
318
static int ett_isdn_sup_PresentedAddressUnscreened;
319
static int ett_isdn_sup_PresentedNumberScreened;
320
static int ett_isdn_sup_PresentedNumberUnscreened;
321
static int ett_isdn_sup_AddressScreened;
322
static int ett_isdn_sup_NumberScreened;
323
static int ett_isdn_sup_Address;
324
static int ett_isdn_sup_PartyNumber;
325
static int ett_isdn_sup_PublicPartyNumber;
326
static int ett_isdn_sup_PrivatePartyNumber;
327
static int ett_isdn_sup_PartySubaddress;
328
static int ett_isdn_sup_UserSpecifiedSubaddress;
329
static int ett_isdn_sup_ChargingRequestRes;
330
static int ett_isdn_sup_AOCSCurrencyArg;
331
static int ett_isdn_sup_AOCSSpecialArrArg;
332
static int ett_isdn_sup_AOCDCurrencyArg;
333
static int ett_isdn_sup_AOCDChargingUnitArg;
334
static int ett_isdn_sup_AOCECurrencyArg;
335
static int ett_isdn_sup_AOCEChargingUnitArg;
336
static int ett_isdn_sup_AOCSCurrencyInfoList;
337
static int ett_isdn_sup_AOCSCurrencyInfo;
338
static int ett_isdn_sup_T_chargingtype;
339
static int ett_isdn_sup_AOCSChargingTypeSpecificCurrency;
340
static int ett_isdn_sup_DurationCurrency;
341
static int ett_isdn_sup_FlatRateCurrency;
342
static int ett_isdn_sup_VolumeRateCurrency;
343
static int ett_isdn_sup_AOCDCurrencyInfo;
344
static int ett_isdn_sup_AOCDSpecificCurrency;
345
static int ett_isdn_sup_AOCDChargingUnitInfo;
346
static int ett_isdn_sup_AOCDSpecificChargingUnits;
347
static int ett_isdn_sup_RecordedCurrency;
348
static int ett_isdn_sup_RecordedUnitsList;
349
static int ett_isdn_sup_RecordedUnits;
350
static int ett_isdn_sup_RecoredUnitsCc;
351
static int ett_isdn_sup_AOCECurrencyInfo;
352
static int ett_isdn_sup_AOCECurrencyCc;
353
static int ett_isdn_sup_AOCECcSpecificCurrency;
354
static int ett_isdn_sup_AOCEChargingUnitInfo;
355
static int ett_isdn_sup_AOCEChargingUnitCc;
356
static int ett_isdn_sup_AOCECcSpecificChargingUnits;
357
static int ett_isdn_sup_Amount;
358
static int ett_isdn_sup_Time;
359
static int ett_isdn_sup_ChargingAssociation;
360
static int ett_isdn_sup_CUGcallArg;
361
static int ett_isdn_sup_BeginCONFRes;
362
static int ett_isdn_sup_SplitCONFArg;
363
static int ett_isdn_sup_ActivationDiversionArg;
364
static int ett_isdn_sup_DeactivationDiversionArg;
365
static int ett_isdn_sup_ActivationStatusNotificationDivArg;
366
static int ett_isdn_sup_DeactivationStatusNotificationDivArg;
367
static int ett_isdn_sup_InterrogationDiversionArg;
368
static int ett_isdn_sup_DiversionInformationArg;
369
static int ett_isdn_sup_CallDeflectionArg;
370
static int ett_isdn_sup_CallRerouteingArg;
371
static int ett_isdn_sup_DivertingLegInformation1Arg;
372
static int ett_isdn_sup_DivertingLegInformation2Arg;
373
static int ett_isdn_sup_IntResultList;
374
static int ett_isdn_sup_IntResult;
375
static int ett_isdn_sup_ServedUserNr;
376
static int ett_isdn_sup_ServedUserNumberList;
377
static int ett_isdn_sup_UserUserServiceArg;
378
static int ett_isdn_sup_Monitor_T_FPHArg;
379
static int ett_isdn_sup_Free_T_FPHArg;
380
static int ett_isdn_sup_Call_T_FPHArg;
381
static int ett_isdn_sup_MLPPLFBArg;
382
static int ett_isdn_sup_MLPPParams;
383
static int ett_isdn_sup_MLPPLFBResp;
384
385
/* static expert_field ei_isdn_sup_unsupported_arg_type; */
386
static expert_field ei_isdn_sup_unsupported_result_type;
387
static expert_field ei_isdn_sup_unsupported_error_type;
388
389
/* Preference settings default */
390
391
/* Global variables */
392
393
394
395
static int
396
0
dissect_isdn_sup_NumberDigits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
397
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
398
0
                                            actx, tree, tvb, offset, hf_index,
399
0
                                            NULL);
400
401
0
  return offset;
402
0
}
403
404
405
static const value_string isdn_sup_PublicTypeOfNumber_vals[] = {
406
  {   0, "unknown" },
407
  {   1, "internationalNumber" },
408
  {   2, "nationalNumber" },
409
  {   3, "networkSpecificNumber" },
410
  {   4, "subscriberNumber" },
411
  {   6, "abbreviatedNumber" },
412
  { 0, NULL }
413
};
414
415
416
static int
417
0
dissect_isdn_sup_PublicTypeOfNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
418
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
419
0
                                  NULL);
420
421
0
  return offset;
422
0
}
423
424
425
static const ber_sequence_t PublicPartyNumber_sequence[] = {
426
  { &hf_isdn_sup_publicTypeOfNumber, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PublicTypeOfNumber },
427
  { &hf_isdn_sup_publicNumberDigits, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberDigits },
428
  { NULL, 0, 0, 0, NULL }
429
};
430
431
static int
432
0
dissect_isdn_sup_PublicPartyNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
433
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
434
0
                                   PublicPartyNumber_sequence, hf_index, ett_isdn_sup_PublicPartyNumber);
435
436
0
  return offset;
437
0
}
438
439
440
441
static int
442
0
dissect_isdn_sup_NsapEncodedNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
443
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
444
0
                                       NULL);
445
446
0
  return offset;
447
0
}
448
449
450
static const value_string isdn_sup_PrivateTypeOfNumber_vals[] = {
451
  {   0, "unknown" },
452
  {   1, "level2RegionalNumber" },
453
  {   2, "level1RegionalNumber" },
454
  {   3, "pTNSpecificNumber" },
455
  {   4, "localNumber" },
456
  {   6, "abbreviatedNumber" },
457
  { 0, NULL }
458
};
459
460
461
static int
462
0
dissect_isdn_sup_PrivateTypeOfNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
463
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
464
0
                                  NULL);
465
466
0
  return offset;
467
0
}
468
469
470
static const ber_sequence_t PrivatePartyNumber_sequence[] = {
471
  { &hf_isdn_sup_privateTypeOfNumber, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PrivateTypeOfNumber },
472
  { &hf_isdn_sup_privateNumberDigits, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberDigits },
473
  { NULL, 0, 0, 0, NULL }
474
};
475
476
static int
477
0
dissect_isdn_sup_PrivatePartyNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
478
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
479
0
                                   PrivatePartyNumber_sequence, hf_index, ett_isdn_sup_PrivatePartyNumber);
480
481
0
  return offset;
482
0
}
483
484
485
static const value_string isdn_sup_PartyNumber_vals[] = {
486
  {   0, "unknownPartyNumber" },
487
  {   1, "publicPartyNumber" },
488
  {   2, "nsapEncodedNumber" },
489
  {   3, "dataPartyNumber" },
490
  {   4, "telexPartyNumber" },
491
  {   5, "privatePartyNumber" },
492
  {   8, "nationalStandardPartyNumber" },
493
  { 0, NULL }
494
};
495
496
static const ber_choice_t PartyNumber_choice[] = {
497
  {   0, &hf_isdn_sup_unknownPartyNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
498
  {   1, &hf_isdn_sup_publicPartyNumber, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_PublicPartyNumber },
499
  {   2, &hf_isdn_sup_nsapEncodedNumber, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NsapEncodedNumber },
500
  {   3, &hf_isdn_sup_dataPartyNumber, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
501
  {   4, &hf_isdn_sup_telexPartyNumber, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
502
  {   5, &hf_isdn_sup_privatePartyNumber, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_isdn_sup_PrivatePartyNumber },
503
  {   8, &hf_isdn_sup_nationalStandardPartyNumber, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
504
  { 0, NULL, 0, 0, 0, NULL }
505
};
506
507
static int
508
0
dissect_isdn_sup_PartyNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
509
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
510
0
                                 PartyNumber_choice, hf_index, ett_isdn_sup_PartyNumber,
511
0
                                 NULL);
512
513
0
  return offset;
514
0
}
515
516
517
static const value_string isdn_sup_ScreeningIndicator_vals[] = {
518
  {   0, "userProvidedNotScreened" },
519
  {   1, "userProvidedVerifiedAndPassed" },
520
  {   2, "userProvidedVerifiedAndFailed" },
521
  {   3, "networkProvided" },
522
  { 0, NULL }
523
};
524
525
526
static int
527
0
dissect_isdn_sup_ScreeningIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
528
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
529
0
                                  NULL);
530
531
0
  return offset;
532
0
}
533
534
535
536
static int
537
0
dissect_isdn_sup_SubaddressInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
538
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
539
0
                                       NULL);
540
541
0
  return offset;
542
0
}
543
544
545
546
static int
547
0
dissect_isdn_sup_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
548
0
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
549
550
0
  return offset;
551
0
}
552
553
554
static const ber_sequence_t UserSpecifiedSubaddress_sequence[] = {
555
  { &hf_isdn_sup_subaddressInformation, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SubaddressInformation },
556
  { &hf_isdn_sup_oddCountIndicator, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BOOLEAN },
557
  { NULL, 0, 0, 0, NULL }
558
};
559
560
static int
561
0
dissect_isdn_sup_UserSpecifiedSubaddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
562
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
563
0
                                   UserSpecifiedSubaddress_sequence, hf_index, ett_isdn_sup_UserSpecifiedSubaddress);
564
565
0
  return offset;
566
0
}
567
568
569
570
static int
571
0
dissect_isdn_sup_NSAPSubaddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
572
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
573
0
                                       NULL);
574
575
0
  return offset;
576
0
}
577
578
579
static const value_string isdn_sup_PartySubaddress_vals[] = {
580
  {   0, "userSpecifiedSubaddress" },
581
  {   1, "nSAPSubaddress" },
582
  { 0, NULL }
583
};
584
585
static const ber_choice_t PartySubaddress_choice[] = {
586
  {   0, &hf_isdn_sup_userSpecifiedSubaddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_UserSpecifiedSubaddress },
587
  {   1, &hf_isdn_sup_nSAPSubaddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NSAPSubaddress },
588
  { 0, NULL, 0, 0, 0, NULL }
589
};
590
591
static int
592
0
dissect_isdn_sup_PartySubaddress(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
594
0
                                 PartySubaddress_choice, hf_index, ett_isdn_sup_PartySubaddress,
595
0
                                 NULL);
596
597
0
  return offset;
598
0
}
599
600
601
static const ber_sequence_t AddressScreened_sequence[] = {
602
  { &hf_isdn_sup_partyNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
603
  { &hf_isdn_sup_screeningIndicator, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ScreeningIndicator },
604
  { &hf_isdn_sup_partySubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
605
  { NULL, 0, 0, 0, NULL }
606
};
607
608
static int
609
0
dissect_isdn_sup_AddressScreened(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
610
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
611
0
                                   AddressScreened_sequence, hf_index, ett_isdn_sup_AddressScreened);
612
613
0
  return offset;
614
0
}
615
616
617
618
static int
619
0
dissect_isdn_sup_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
620
0
  offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
621
622
0
  return offset;
623
0
}
624
625
626
static const value_string isdn_sup_PresentedAddressScreened_vals[] = {
627
  {   0, "presentationAllowedAddress" },
628
  {   1, "presentationRestricted" },
629
  {   2, "numberNotAvailableDueToInterworking" },
630
  {   3, "presentationRestrictedAddress" },
631
  { 0, NULL }
632
};
633
634
static const ber_choice_t PresentedAddressScreened_choice[] = {
635
  {   0, &hf_isdn_sup_presentationallowedaddressscreened, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_isdn_sup_AddressScreened },
636
  {   1, &hf_isdn_sup_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
637
  {   2, &hf_isdn_sup_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
638
  {   3, &hf_isdn_sup_presentationrestrictedaddressscreened, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_AddressScreened },
639
  { 0, NULL, 0, 0, 0, NULL }
640
};
641
642
static int
643
0
dissect_isdn_sup_PresentedAddressScreened(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
644
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
645
0
                                 PresentedAddressScreened_choice, hf_index, ett_isdn_sup_PresentedAddressScreened,
646
0
                                 NULL);
647
648
0
  return offset;
649
0
}
650
651
652
static const ber_sequence_t Address_sequence[] = {
653
  { &hf_isdn_sup_partyNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
654
  { &hf_isdn_sup_partySubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
655
  { NULL, 0, 0, 0, NULL }
656
};
657
658
static int
659
0
dissect_isdn_sup_Address(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
660
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
661
0
                                   Address_sequence, hf_index, ett_isdn_sup_Address);
662
663
0
  return offset;
664
0
}
665
666
667
668
669
670
static const value_string isdn_sup_PresentedNumberUnscreened_vals[] = {
671
  {   0, "presentationAllowedNumber" },
672
  {   1, "presentationRestricted" },
673
  {   2, "numberNotAvailableDueToInterworking" },
674
  {   3, "presentationRestrictedNumber" },
675
  { 0, NULL }
676
};
677
678
static const ber_choice_t PresentedNumberUnscreened_choice[] = {
679
  {   0, &hf_isdn_sup_presentationAllowedNumber, BER_CLASS_CON, 0, 0, dissect_isdn_sup_PartyNumber },
680
  {   1, &hf_isdn_sup_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
681
  {   2, &hf_isdn_sup_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
682
  {   3, &hf_isdn_sup_presentationRestrictedNumber, BER_CLASS_CON, 3, 0, dissect_isdn_sup_PartyNumber },
683
  { 0, NULL, 0, 0, 0, NULL }
684
};
685
686
static int
687
0
dissect_isdn_sup_PresentedNumberUnscreened(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
688
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
689
0
                                 PresentedNumberUnscreened_choice, hf_index, ett_isdn_sup_PresentedNumberUnscreened,
690
0
                                 NULL);
691
692
0
  return offset;
693
0
}
694
695
696
697
static int
698
0
dissect_isdn_sup_PresentationAllowedIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
699
0
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
700
701
0
  return offset;
702
0
}
703
704
705
static const value_string isdn_sup_BasicService_vals[] = {
706
  {   0, "allServices" },
707
  {   1, "speech" },
708
  {   2, "unrestrictedDigitalInformation" },
709
  {   3, "audio3k1Hz" },
710
  {   4, "unrestrictedDigitalInformationWithTonesAndAnnouncements" },
711
  {   5, "multirate" },
712
  {  32, "telephony3k1Hz" },
713
  {  33, "teletex" },
714
  {  34, "telefaxGroup4Class1" },
715
  {  35, "videotexSyntaxBased" },
716
  {  36, "videotelephony" },
717
  {  37, "telefaxGroup2-3" },
718
  {  38, "telephony7kHz" },
719
  {  39, "euroFileTransfer" },
720
  {  40, "fileTransferAndAccessManagement" },
721
  {  41, "videoconference" },
722
  {  42, "audioGraphicConference" },
723
  { 0, NULL }
724
};
725
726
727
static int
728
0
dissect_isdn_sup_BasicService(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
729
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
730
0
                                  NULL);
731
732
0
  return offset;
733
0
}
734
735
736
737
static int
738
0
dissect_isdn_sup_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
739
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
740
0
                                       NULL);
741
742
0
  return offset;
743
0
}
744
745
746
747
static int
748
0
dissect_isdn_sup_Q931InformationElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
749
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
750
0
                                      hf_index, BER_CLASS_APP, 0, true, dissect_isdn_sup_OCTET_STRING);
751
752
0
  return offset;
753
0
}
754
755
756
static const value_string isdn_sup_ChargingCase_vals[] = {
757
  {   0, "chargingInformationAtCallSetup" },
758
  {   1, "chargingDuringACall" },
759
  {   2, "chargingAtTheEndOfACall" },
760
  { 0, NULL }
761
};
762
763
764
static int
765
0
dissect_isdn_sup_ChargingCase(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
766
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
767
0
                                  NULL);
768
769
0
  return offset;
770
0
}
771
772
773
774
static int
775
0
dissect_isdn_sup_ChargingRequestArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
776
0
  offset = dissect_isdn_sup_ChargingCase(implicit_tag, tvb, offset, actx, tree, hf_index);
777
778
0
  return offset;
779
0
}
780
781
782
static const value_string isdn_sup_ChargedItem_vals[] = {
783
  {   0, "basicCommunication" },
784
  {   1, "callAttempt" },
785
  {   2, "callSetup" },
786
  {   3, "userToUserInfo" },
787
  {   4, "operationOfSupplementaryServ" },
788
  { 0, NULL }
789
};
790
791
792
static int
793
0
dissect_isdn_sup_ChargedItem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
794
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
795
0
                                  NULL);
796
797
0
  return offset;
798
0
}
799
800
801
802
static int
803
0
dissect_isdn_sup_Currency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
804
0
  offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
805
0
                                            actx, tree, tvb, offset, hf_index,
806
0
                                            NULL);
807
808
0
  return offset;
809
0
}
810
811
812
813
static int
814
0
dissect_isdn_sup_CurrencyAmount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
815
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
816
0
                                                NULL);
817
818
0
  return offset;
819
0
}
820
821
822
static const value_string isdn_sup_Multiplier_vals[] = {
823
  {   0, "oneThousandth" },
824
  {   1, "oneHundredth" },
825
  {   2, "oneTenth" },
826
  {   3, "one" },
827
  {   4, "ten" },
828
  {   5, "hundred" },
829
  {   6, "thousand" },
830
  { 0, NULL }
831
};
832
833
834
static int
835
0
dissect_isdn_sup_Multiplier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
836
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
837
0
                                  NULL);
838
839
0
  return offset;
840
0
}
841
842
843
static const ber_sequence_t Amount_sequence[] = {
844
  { &hf_isdn_sup_currencyAmount, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_CurrencyAmount },
845
  { &hf_isdn_sup_multiplier , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Multiplier },
846
  { NULL, 0, 0, 0, NULL }
847
};
848
849
static int
850
0
dissect_isdn_sup_Amount(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
851
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
852
0
                                   Amount_sequence, hf_index, ett_isdn_sup_Amount);
853
854
0
  return offset;
855
0
}
856
857
858
static const value_string isdn_sup_ChargingType_vals[] = {
859
  {   0, "continuousCharging" },
860
  {   1, "stepFunction" },
861
  { 0, NULL }
862
};
863
864
865
static int
866
0
dissect_isdn_sup_ChargingType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
867
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
868
0
                                  NULL);
869
870
0
  return offset;
871
0
}
872
873
874
875
static int
876
0
dissect_isdn_sup_LengthOfTimeUnit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
877
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
878
0
                                                NULL);
879
880
0
  return offset;
881
0
}
882
883
884
static const value_string isdn_sup_Scale_vals[] = {
885
  {   0, "oneHundredthSecond" },
886
  {   1, "oneTenthSecond" },
887
  {   2, "oneSecond" },
888
  {   3, "tenSeconds" },
889
  {   4, "oneMinute" },
890
  {   5, "oneHour" },
891
  {   6, "twentyFourHours" },
892
  { 0, NULL }
893
};
894
895
896
static int
897
0
dissect_isdn_sup_Scale(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
898
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
899
0
                                  NULL);
900
901
0
  return offset;
902
0
}
903
904
905
static const ber_sequence_t Time_sequence[] = {
906
  { &hf_isdn_sup_lengthOfTimeUnit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_LengthOfTimeUnit },
907
  { &hf_isdn_sup_scale      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Scale },
908
  { NULL, 0, 0, 0, NULL }
909
};
910
911
static int
912
0
dissect_isdn_sup_Time(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
913
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
914
0
                                   Time_sequence, hf_index, ett_isdn_sup_Time);
915
916
0
  return offset;
917
0
}
918
919
920
static const ber_sequence_t DurationCurrency_sequence[] = {
921
  { &hf_isdn_sup_dCurrency  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
922
  { &hf_isdn_sup_dAmount    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
923
  { &hf_isdn_sup_dChargingType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_ChargingType },
924
  { &hf_isdn_sup_dTime      , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Time },
925
  { &hf_isdn_sup_dGranularity, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_Time },
926
  { NULL, 0, 0, 0, NULL }
927
};
928
929
static int
930
0
dissect_isdn_sup_DurationCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
931
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
932
0
                                   DurationCurrency_sequence, hf_index, ett_isdn_sup_DurationCurrency);
933
934
0
  return offset;
935
0
}
936
937
938
static const ber_sequence_t FlatRateCurrency_sequence[] = {
939
  { &hf_isdn_sup_fRCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
940
  { &hf_isdn_sup_fRAmount   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
941
  { NULL, 0, 0, 0, NULL }
942
};
943
944
static int
945
0
dissect_isdn_sup_FlatRateCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
946
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
947
0
                                   FlatRateCurrency_sequence, hf_index, ett_isdn_sup_FlatRateCurrency);
948
949
0
  return offset;
950
0
}
951
952
953
static const value_string isdn_sup_VolumeUnit_vals[] = {
954
  {   0, "octet" },
955
  {   1, "segment" },
956
  {   2, "message" },
957
  { 0, NULL }
958
};
959
960
961
static int
962
0
dissect_isdn_sup_VolumeUnit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
963
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
964
0
                                  NULL);
965
966
0
  return offset;
967
0
}
968
969
970
static const ber_sequence_t VolumeRateCurrency_sequence[] = {
971
  { &hf_isdn_sup_vRCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
972
  { &hf_isdn_sup_vRAmount   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
973
  { &hf_isdn_sup_vRVolumeUnit, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_VolumeUnit },
974
  { NULL, 0, 0, 0, NULL }
975
};
976
977
static int
978
0
dissect_isdn_sup_VolumeRateCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
980
0
                                   VolumeRateCurrency_sequence, hf_index, ett_isdn_sup_VolumeRateCurrency);
981
982
0
  return offset;
983
0
}
984
985
986
static const value_string isdn_sup_AOCSChargingTypeSpecificCurrency_vals[] = {
987
  {   1, "durationCurrency" },
988
  {   2, "flatRateCurrency" },
989
  {   3, "volumeRateCurrency" },
990
  { 0, NULL }
991
};
992
993
static const ber_choice_t AOCSChargingTypeSpecificCurrency_choice[] = {
994
  {   1, &hf_isdn_sup_durationCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_DurationCurrency },
995
  {   2, &hf_isdn_sup_flatRateCurrency, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_FlatRateCurrency },
996
  {   3, &hf_isdn_sup_volumeRateCurrency, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_VolumeRateCurrency },
997
  { 0, NULL, 0, 0, 0, NULL }
998
};
999
1000
static int
1001
0
dissect_isdn_sup_AOCSChargingTypeSpecificCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1002
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1003
0
                                 AOCSChargingTypeSpecificCurrency_choice, hf_index, ett_isdn_sup_AOCSChargingTypeSpecificCurrency,
1004
0
                                 NULL);
1005
1006
0
  return offset;
1007
0
}
1008
1009
1010
1011
static int
1012
0
dissect_isdn_sup_SpecialChargingCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1013
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1014
0
                                                NULL);
1015
1016
0
  return offset;
1017
0
}
1018
1019
1020
static const value_string isdn_sup_T_chargingtype_vals[] = {
1021
  {   0, "specificCurrency" },
1022
  {   1, "specialChargingCode" },
1023
  {   2, "freeOfCharge" },
1024
  {   3, "currencyInfoNotAvailable" },
1025
  { 0, NULL }
1026
};
1027
1028
static const ber_choice_t T_chargingtype_choice[] = {
1029
  {   0, &hf_isdn_sup_aocschargingtypespecificCurrency, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSChargingTypeSpecificCurrency },
1030
  {   1, &hf_isdn_sup_specialChargingCode, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SpecialChargingCode },
1031
  {   2, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1032
  {   3, &hf_isdn_sup_currencyInfoNotAvailable, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1033
  { 0, NULL, 0, 0, 0, NULL }
1034
};
1035
1036
static int
1037
0
dissect_isdn_sup_T_chargingtype(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1038
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1039
0
                                 T_chargingtype_choice, hf_index, ett_isdn_sup_T_chargingtype,
1040
0
                                 NULL);
1041
1042
0
  return offset;
1043
0
}
1044
1045
1046
static const ber_sequence_t AOCSCurrencyInfo_sequence[] = {
1047
  { &hf_isdn_sup_chargedItem, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ChargedItem },
1048
  { &hf_isdn_sup_chargingtype, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_T_chargingtype },
1049
  { NULL, 0, 0, 0, NULL }
1050
};
1051
1052
static int
1053
0
dissect_isdn_sup_AOCSCurrencyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1054
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1055
0
                                   AOCSCurrencyInfo_sequence, hf_index, ett_isdn_sup_AOCSCurrencyInfo);
1056
1057
0
  return offset;
1058
0
}
1059
1060
1061
static const ber_sequence_t AOCSCurrencyInfoList_sequence_of[1] = {
1062
  { &hf_isdn_sup_AOCSCurrencyInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfo },
1063
};
1064
1065
static int
1066
0
dissect_isdn_sup_AOCSCurrencyInfoList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1067
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1068
0
                                      AOCSCurrencyInfoList_sequence_of, hf_index, ett_isdn_sup_AOCSCurrencyInfoList);
1069
1070
0
  return offset;
1071
0
}
1072
1073
1074
1075
static int
1076
0
dissect_isdn_sup_AOCSSpecialArrInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1077
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1078
0
                                                NULL);
1079
1080
0
  return offset;
1081
0
}
1082
1083
1084
static const value_string isdn_sup_ChargingRequestRes_vals[] = {
1085
  {   0, "aOCSCurrencyInfoList" },
1086
  {   1, "aOCSSpecialArrInfo" },
1087
  {   2, "chargingInfoFollows" },
1088
  { 0, NULL }
1089
};
1090
1091
static const ber_choice_t ChargingRequestRes_choice[] = {
1092
  {   0, &hf_isdn_sup_aOCSCurrencyInfoList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfoList },
1093
  {   1, &hf_isdn_sup_aOCSSpecialArrInfo, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSSpecialArrInfo },
1094
  {   2, &hf_isdn_sup_chargingInfoFollows, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1095
  { 0, NULL, 0, 0, 0, NULL }
1096
};
1097
1098
static int
1099
0
dissect_isdn_sup_ChargingRequestRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1101
0
                                 ChargingRequestRes_choice, hf_index, ett_isdn_sup_ChargingRequestRes,
1102
0
                                 NULL);
1103
1104
0
  return offset;
1105
0
}
1106
1107
1108
static const value_string isdn_sup_AOCSCurrencyArg_vals[] = {
1109
  {   0, "chargeNotAvailable" },
1110
  {   1, "aOCSCurrencyInfoList" },
1111
  { 0, NULL }
1112
};
1113
1114
static const ber_choice_t AOCSCurrencyArg_choice[] = {
1115
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1116
  {   1, &hf_isdn_sup_aOCSCurrencyInfoList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfoList },
1117
  { 0, NULL, 0, 0, 0, NULL }
1118
};
1119
1120
static int
1121
0
dissect_isdn_sup_AOCSCurrencyArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1122
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1123
0
                                 AOCSCurrencyArg_choice, hf_index, ett_isdn_sup_AOCSCurrencyArg,
1124
0
                                 NULL);
1125
1126
0
  return offset;
1127
0
}
1128
1129
1130
static const value_string isdn_sup_AOCSSpecialArrArg_vals[] = {
1131
  {   0, "chargeNotAvailable" },
1132
  {   1, "aOCSSpecialArrInfo" },
1133
  { 0, NULL }
1134
};
1135
1136
static const ber_choice_t AOCSSpecialArrArg_choice[] = {
1137
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1138
  {   1, &hf_isdn_sup_aOCSSpecialArrInfo, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSSpecialArrInfo },
1139
  { 0, NULL, 0, 0, 0, NULL }
1140
};
1141
1142
static int
1143
0
dissect_isdn_sup_AOCSSpecialArrArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1144
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1145
0
                                 AOCSSpecialArrArg_choice, hf_index, ett_isdn_sup_AOCSSpecialArrArg,
1146
0
                                 NULL);
1147
1148
0
  return offset;
1149
0
}
1150
1151
1152
static const ber_sequence_t RecordedCurrency_sequence[] = {
1153
  { &hf_isdn_sup_rCurrency  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
1154
  { &hf_isdn_sup_rAmount    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
1155
  { NULL, 0, 0, 0, NULL }
1156
};
1157
1158
static int
1159
0
dissect_isdn_sup_RecordedCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1160
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1161
0
                                   RecordedCurrency_sequence, hf_index, ett_isdn_sup_RecordedCurrency);
1162
1163
0
  return offset;
1164
0
}
1165
1166
1167
static const value_string isdn_sup_TypeOfChargingInfo_vals[] = {
1168
  {   0, "subTotal" },
1169
  {   1, "total" },
1170
  { 0, NULL }
1171
};
1172
1173
1174
static int
1175
0
dissect_isdn_sup_TypeOfChargingInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1176
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1177
0
                                  NULL);
1178
1179
0
  return offset;
1180
0
}
1181
1182
1183
static const value_string isdn_sup_AOCDBillingId_vals[] = {
1184
  {   0, "normalCharging" },
1185
  {   1, "reverseCharging" },
1186
  {   2, "creditCardCharging" },
1187
  { 0, NULL }
1188
};
1189
1190
1191
static int
1192
0
dissect_isdn_sup_AOCDBillingId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1193
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1194
0
                                  NULL);
1195
1196
0
  return offset;
1197
0
}
1198
1199
1200
static const ber_sequence_t AOCDSpecificCurrency_sequence[] = {
1201
  { &hf_isdn_sup_recordedCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedCurrency },
1202
  { &hf_isdn_sup_typeOfChargingInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_TypeOfChargingInfo },
1203
  { &hf_isdn_sup_aOCDBillingId, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCDBillingId },
1204
  { NULL, 0, 0, 0, NULL }
1205
};
1206
1207
static int
1208
0
dissect_isdn_sup_AOCDSpecificCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1209
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1210
0
                                   AOCDSpecificCurrency_sequence, hf_index, ett_isdn_sup_AOCDSpecificCurrency);
1211
1212
0
  return offset;
1213
0
}
1214
1215
1216
static const value_string isdn_sup_AOCDCurrencyInfo_vals[] = {
1217
  {   0, "specificCurrency" },
1218
  {   1, "freeOfCharge" },
1219
  { 0, NULL }
1220
};
1221
1222
static const ber_choice_t AOCDCurrencyInfo_choice[] = {
1223
  {   0, &hf_isdn_sup_aocdspecificCurrency, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDSpecificCurrency },
1224
  {   1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1225
  { 0, NULL, 0, 0, 0, NULL }
1226
};
1227
1228
static int
1229
0
dissect_isdn_sup_AOCDCurrencyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1230
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1231
0
                                 AOCDCurrencyInfo_choice, hf_index, ett_isdn_sup_AOCDCurrencyInfo,
1232
0
                                 NULL);
1233
1234
0
  return offset;
1235
0
}
1236
1237
1238
static const value_string isdn_sup_AOCDCurrencyArg_vals[] = {
1239
  {   0, "chargeNotAvailable" },
1240
  {   1, "aOCDCurrencyInfo" },
1241
  { 0, NULL }
1242
};
1243
1244
static const ber_choice_t AOCDCurrencyArg_choice[] = {
1245
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1246
  {   1, &hf_isdn_sup_aOCDCurrencyInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDCurrencyInfo },
1247
  { 0, NULL, 0, 0, 0, NULL }
1248
};
1249
1250
static int
1251
0
dissect_isdn_sup_AOCDCurrencyArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1252
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1253
0
                                 AOCDCurrencyArg_choice, hf_index, ett_isdn_sup_AOCDCurrencyArg,
1254
0
                                 NULL);
1255
1256
0
  return offset;
1257
0
}
1258
1259
1260
1261
static int
1262
0
dissect_isdn_sup_NumberOfUnits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1263
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1264
0
                                                NULL);
1265
1266
0
  return offset;
1267
0
}
1268
1269
1270
static const value_string isdn_sup_RecoredUnitsCc_vals[] = {
1271
  {   0, "recordedNumberOfUnits" },
1272
  {   1, "notAvailable" },
1273
  { 0, NULL }
1274
};
1275
1276
static const ber_choice_t RecoredUnitsCc_choice[] = {
1277
  {   0, &hf_isdn_sup_recordedNumberOfUnits, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberOfUnits },
1278
  {   1, &hf_isdn_sup_notAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1279
  { 0, NULL, 0, 0, 0, NULL }
1280
};
1281
1282
static int
1283
0
dissect_isdn_sup_RecoredUnitsCc(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1284
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1285
0
                                 RecoredUnitsCc_choice, hf_index, ett_isdn_sup_RecoredUnitsCc,
1286
0
                                 NULL);
1287
1288
0
  return offset;
1289
0
}
1290
1291
1292
1293
static int
1294
0
dissect_isdn_sup_TypeOfUnit(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1295
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1296
0
                                                NULL);
1297
1298
0
  return offset;
1299
0
}
1300
1301
1302
static const ber_sequence_t RecordedUnits_sequence[] = {
1303
  { &hf_isdn_sup_recoredunitscc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_RecoredUnitsCc },
1304
  { &hf_isdn_sup_recordedTypeOfUnits, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_TypeOfUnit },
1305
  { NULL, 0, 0, 0, NULL }
1306
};
1307
1308
static int
1309
0
dissect_isdn_sup_RecordedUnits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1310
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1311
0
                                   RecordedUnits_sequence, hf_index, ett_isdn_sup_RecordedUnits);
1312
1313
0
  return offset;
1314
0
}
1315
1316
1317
static const ber_sequence_t RecordedUnitsList_sequence_of[1] = {
1318
  { &hf_isdn_sup_RecordedUnitsList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_RecordedUnits },
1319
};
1320
1321
static int
1322
0
dissect_isdn_sup_RecordedUnitsList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323
0
  offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1324
0
                                      RecordedUnitsList_sequence_of, hf_index, ett_isdn_sup_RecordedUnitsList);
1325
1326
0
  return offset;
1327
0
}
1328
1329
1330
static const ber_sequence_t AOCDSpecificChargingUnits_sequence[] = {
1331
  { &hf_isdn_sup_recordedUnitsList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedUnitsList },
1332
  { &hf_isdn_sup_typeOfChargingInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_TypeOfChargingInfo },
1333
  { &hf_isdn_sup_aOCDBillingId, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCDBillingId },
1334
  { NULL, 0, 0, 0, NULL }
1335
};
1336
1337
static int
1338
0
dissect_isdn_sup_AOCDSpecificChargingUnits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1339
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1340
0
                                   AOCDSpecificChargingUnits_sequence, hf_index, ett_isdn_sup_AOCDSpecificChargingUnits);
1341
1342
0
  return offset;
1343
0
}
1344
1345
1346
static const value_string isdn_sup_AOCDChargingUnitInfo_vals[] = {
1347
  {   0, "specificChargingUnits" },
1348
  {   1, "freeOfCharge" },
1349
  { 0, NULL }
1350
};
1351
1352
static const ber_choice_t AOCDChargingUnitInfo_choice[] = {
1353
  {   0, &hf_isdn_sup_aocdspecificchargingunits, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDSpecificChargingUnits },
1354
  {   1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1355
  { 0, NULL, 0, 0, 0, NULL }
1356
};
1357
1358
static int
1359
0
dissect_isdn_sup_AOCDChargingUnitInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1360
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1361
0
                                 AOCDChargingUnitInfo_choice, hf_index, ett_isdn_sup_AOCDChargingUnitInfo,
1362
0
                                 NULL);
1363
1364
0
  return offset;
1365
0
}
1366
1367
1368
static const value_string isdn_sup_AOCDChargingUnitArg_vals[] = {
1369
  {   0, "chargeNotAvailable" },
1370
  {   1, "aOCDChargingUnitInfo" },
1371
  { 0, NULL }
1372
};
1373
1374
static const ber_choice_t AOCDChargingUnitArg_choice[] = {
1375
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1376
  {   1, &hf_isdn_sup_aOCDChargingUnitInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDChargingUnitInfo },
1377
  { 0, NULL, 0, 0, 0, NULL }
1378
};
1379
1380
static int
1381
0
dissect_isdn_sup_AOCDChargingUnitArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1382
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1383
0
                                 AOCDChargingUnitArg_choice, hf_index, ett_isdn_sup_AOCDChargingUnitArg,
1384
0
                                 NULL);
1385
1386
0
  return offset;
1387
0
}
1388
1389
1390
static const value_string isdn_sup_AOCEBillingId_vals[] = {
1391
  {   0, "normalCharging" },
1392
  {   1, "reverseCharging" },
1393
  {   2, "creditCardCharging" },
1394
  {   3, "callForwardingUnconditional" },
1395
  {   4, "callForwardingBusy" },
1396
  {   5, "callForwardingNoReply" },
1397
  {   6, "callDeflection" },
1398
  {   7, "callTransfer" },
1399
  { 0, NULL }
1400
};
1401
1402
1403
static int
1404
0
dissect_isdn_sup_AOCEBillingId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1405
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1406
0
                                  NULL);
1407
1408
0
  return offset;
1409
0
}
1410
1411
1412
static const ber_sequence_t AOCECcSpecificCurrency_sequence[] = {
1413
  { &hf_isdn_sup_recordedCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedCurrency },
1414
  { &hf_isdn_sup_aOCEBillingId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCEBillingId },
1415
  { NULL, 0, 0, 0, NULL }
1416
};
1417
1418
static int
1419
0
dissect_isdn_sup_AOCECcSpecificCurrency(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1420
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1421
0
                                   AOCECcSpecificCurrency_sequence, hf_index, ett_isdn_sup_AOCECcSpecificCurrency);
1422
1423
0
  return offset;
1424
0
}
1425
1426
1427
static const value_string isdn_sup_AOCECurrencyCc_vals[] = {
1428
  {   0, "specificCurrency" },
1429
  {   1, "freeOfCharge" },
1430
  { 0, NULL }
1431
};
1432
1433
static const ber_choice_t AOCECurrencyCc_choice[] = {
1434
  {   0, &hf_isdn_sup_aoceccspecificCurrency, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECcSpecificCurrency },
1435
  {   1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1436
  { 0, NULL, 0, 0, 0, NULL }
1437
};
1438
1439
static int
1440
0
dissect_isdn_sup_AOCECurrencyCc(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1441
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1442
0
                                 AOCECurrencyCc_choice, hf_index, ett_isdn_sup_AOCECurrencyCc,
1443
0
                                 NULL);
1444
1445
0
  return offset;
1446
0
}
1447
1448
1449
1450
static int
1451
0
dissect_isdn_sup_ChargeIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1452
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1453
0
                                                NULL);
1454
1455
0
  return offset;
1456
0
}
1457
1458
1459
static const value_string isdn_sup_ChargingAssociation_vals[] = {
1460
  {   0, "chargeNumber" },
1461
  {   1, "chargeIdentifier" },
1462
  { 0, NULL }
1463
};
1464
1465
static const ber_choice_t ChargingAssociation_choice[] = {
1466
  {   0, &hf_isdn_sup_chargeNumber, BER_CLASS_CON, 0, 0, dissect_isdn_sup_PartyNumber },
1467
  {   1, &hf_isdn_sup_chargeIdentifier, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ChargeIdentifier },
1468
  { 0, NULL, 0, 0, 0, NULL }
1469
};
1470
1471
static int
1472
0
dissect_isdn_sup_ChargingAssociation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1473
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1474
0
                                 ChargingAssociation_choice, hf_index, ett_isdn_sup_ChargingAssociation,
1475
0
                                 NULL);
1476
1477
0
  return offset;
1478
0
}
1479
1480
1481
static const ber_sequence_t AOCECurrencyInfo_sequence[] = {
1482
  { &hf_isdn_sup_aocecurrencycc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_AOCECurrencyCc },
1483
  { &hf_isdn_sup_chargingAssociation, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ChargingAssociation },
1484
  { NULL, 0, 0, 0, NULL }
1485
};
1486
1487
static int
1488
0
dissect_isdn_sup_AOCECurrencyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1489
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1490
0
                                   AOCECurrencyInfo_sequence, hf_index, ett_isdn_sup_AOCECurrencyInfo);
1491
1492
0
  return offset;
1493
0
}
1494
1495
1496
static const value_string isdn_sup_AOCECurrencyArg_vals[] = {
1497
  {   0, "chargeNotAvailable" },
1498
  {   1, "aOCECurrencyInfo" },
1499
  { 0, NULL }
1500
};
1501
1502
static const ber_choice_t AOCECurrencyArg_choice[] = {
1503
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1504
  {   1, &hf_isdn_sup_aOCECurrencyInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECurrencyInfo },
1505
  { 0, NULL, 0, 0, 0, NULL }
1506
};
1507
1508
static int
1509
0
dissect_isdn_sup_AOCECurrencyArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1510
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1511
0
                                 AOCECurrencyArg_choice, hf_index, ett_isdn_sup_AOCECurrencyArg,
1512
0
                                 NULL);
1513
1514
0
  return offset;
1515
0
}
1516
1517
1518
static const ber_sequence_t AOCECcSpecificChargingUnits_sequence[] = {
1519
  { &hf_isdn_sup_recordedUnitsList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedUnitsList },
1520
  { &hf_isdn_sup_aOCEBillingId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCEBillingId },
1521
  { NULL, 0, 0, 0, NULL }
1522
};
1523
1524
static int
1525
0
dissect_isdn_sup_AOCECcSpecificChargingUnits(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1526
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1527
0
                                   AOCECcSpecificChargingUnits_sequence, hf_index, ett_isdn_sup_AOCECcSpecificChargingUnits);
1528
1529
0
  return offset;
1530
0
}
1531
1532
1533
static const value_string isdn_sup_AOCEChargingUnitCc_vals[] = {
1534
  {   0, "specificChargingUnits" },
1535
  {   1, "freeOfCharge" },
1536
  { 0, NULL }
1537
};
1538
1539
static const ber_choice_t AOCEChargingUnitCc_choice[] = {
1540
  {   0, &hf_isdn_sup_aoceccspecificchargingunits, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECcSpecificChargingUnits },
1541
  {   1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1542
  { 0, NULL, 0, 0, 0, NULL }
1543
};
1544
1545
static int
1546
0
dissect_isdn_sup_AOCEChargingUnitCc(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1547
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1548
0
                                 AOCEChargingUnitCc_choice, hf_index, ett_isdn_sup_AOCEChargingUnitCc,
1549
0
                                 NULL);
1550
1551
0
  return offset;
1552
0
}
1553
1554
1555
static const ber_sequence_t AOCEChargingUnitInfo_sequence[] = {
1556
  { &hf_isdn_sup_aocechargingunitcc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_AOCEChargingUnitCc },
1557
  { &hf_isdn_sup_chargingAssociation, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ChargingAssociation },
1558
  { NULL, 0, 0, 0, NULL }
1559
};
1560
1561
static int
1562
0
dissect_isdn_sup_AOCEChargingUnitInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1563
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1564
0
                                   AOCEChargingUnitInfo_sequence, hf_index, ett_isdn_sup_AOCEChargingUnitInfo);
1565
1566
0
  return offset;
1567
0
}
1568
1569
1570
static const value_string isdn_sup_AOCEChargingUnitArg_vals[] = {
1571
  {   0, "chargeNotAvailable" },
1572
  {   1, "aOCEChargingUnitInfo" },
1573
  { 0, NULL }
1574
};
1575
1576
static const ber_choice_t AOCEChargingUnitArg_choice[] = {
1577
  {   0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1578
  {   1, &hf_isdn_sup_aOCEChargingUnitInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCEChargingUnitInfo },
1579
  { 0, NULL, 0, 0, 0, NULL }
1580
};
1581
1582
static int
1583
0
dissect_isdn_sup_AOCEChargingUnitArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1584
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1585
0
                                 AOCEChargingUnitArg_choice, hf_index, ett_isdn_sup_AOCEChargingUnitArg,
1586
0
                                 NULL);
1587
1588
0
  return offset;
1589
0
}
1590
1591
1592
1593
static int
1594
0
dissect_isdn_sup_OARequested(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1595
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1596
0
                                      hf_index, BER_CLASS_CON, 1, true, dissect_isdn_sup_BOOLEAN);
1597
1598
0
  return offset;
1599
0
}
1600
1601
1602
1603
static int
1604
0
dissect_isdn_sup_INTEGER_0_32767(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1606
0
                                                NULL);
1607
1608
0
  return offset;
1609
0
}
1610
1611
1612
1613
static int
1614
0
dissect_isdn_sup_CUGIndex(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1615
0
  offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1616
0
                                      hf_index, BER_CLASS_CON, 2, true, dissect_isdn_sup_INTEGER_0_32767);
1617
1618
0
  return offset;
1619
0
}
1620
1621
1622
static const ber_sequence_t CUGcallArg_sequence[] = {
1623
  { &hf_isdn_sup_oARequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_OARequested },
1624
  { &hf_isdn_sup_cUGIndex   , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_CUGIndex },
1625
  { NULL, 0, 0, 0, NULL }
1626
};
1627
1628
static int
1629
0
dissect_isdn_sup_CUGcallArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1630
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1631
0
                                   CUGcallArg_sequence, hf_index, ett_isdn_sup_CUGcallArg);
1632
1633
0
  return offset;
1634
0
}
1635
1636
1637
1638
static int
1639
0
dissect_isdn_sup_ConfSize(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1640
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1641
0
                                                NULL);
1642
1643
0
  return offset;
1644
0
}
1645
1646
1647
1648
static int
1649
0
dissect_isdn_sup_BeginCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1650
0
  offset = dissect_isdn_sup_ConfSize(implicit_tag, tvb, offset, actx, tree, hf_index);
1651
1652
0
  return offset;
1653
0
}
1654
1655
1656
1657
static int
1658
0
dissect_isdn_sup_ConferenceId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1659
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1660
0
                                                NULL);
1661
1662
0
  return offset;
1663
0
}
1664
1665
1666
1667
static int
1668
0
dissect_isdn_sup_PartyId(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1669
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1670
0
                                                NULL);
1671
1672
0
  return offset;
1673
0
}
1674
1675
1676
static const ber_sequence_t BeginCONFRes_sequence[] = {
1677
  { &hf_isdn_sup_conferenceId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ConferenceId },
1678
  { &hf_isdn_sup_partyId    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyId },
1679
  { NULL, 0, 0, 0, NULL }
1680
};
1681
1682
static int
1683
0
dissect_isdn_sup_BeginCONFRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1684
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1685
0
                                   BeginCONFRes_sequence, hf_index, ett_isdn_sup_BeginCONFRes);
1686
1687
0
  return offset;
1688
0
}
1689
1690
1691
1692
static int
1693
0
dissect_isdn_sup_AddCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1694
0
  offset = dissect_isdn_sup_ConferenceId(implicit_tag, tvb, offset, actx, tree, hf_index);
1695
1696
0
  return offset;
1697
0
}
1698
1699
1700
1701
static int
1702
0
dissect_isdn_sup_AddCONFRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1703
0
  offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1704
1705
0
  return offset;
1706
0
}
1707
1708
1709
static const ber_sequence_t SplitCONFArg_sequence[] = {
1710
  { &hf_isdn_sup_conferenceId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ConferenceId },
1711
  { &hf_isdn_sup_partyId    , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyId },
1712
  { NULL, 0, 0, 0, NULL }
1713
};
1714
1715
static int
1716
0
dissect_isdn_sup_SplitCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1717
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1718
0
                                   SplitCONFArg_sequence, hf_index, ett_isdn_sup_SplitCONFArg);
1719
1720
0
  return offset;
1721
0
}
1722
1723
1724
1725
static int
1726
0
dissect_isdn_sup_DropCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1727
0
  offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1728
1729
0
  return offset;
1730
0
}
1731
1732
1733
1734
static int
1735
0
dissect_isdn_sup_IsolateCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1736
0
  offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1737
1738
0
  return offset;
1739
0
}
1740
1741
1742
1743
static int
1744
0
dissect_isdn_sup_ReattachCONFArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1745
0
  offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1746
1747
0
  return offset;
1748
0
}
1749
1750
1751
1752
static int
1753
0
dissect_isdn_sup_PartyDISCArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1754
0
  offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1755
1756
0
  return offset;
1757
0
}
1758
1759
1760
static const value_string isdn_sup_Procedure_vals[] = {
1761
  {   0, "cfu" },
1762
  {   1, "cfb" },
1763
  {   2, "cfnr" },
1764
  { 0, NULL }
1765
};
1766
1767
1768
static int
1769
0
dissect_isdn_sup_Procedure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1770
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1771
0
                                  NULL);
1772
1773
0
  return offset;
1774
0
}
1775
1776
1777
static const value_string isdn_sup_ServedUserNr_vals[] = {
1778
  {   0, "individualNumber" },
1779
  {   1, "allNumbers" },
1780
  { 0, NULL }
1781
};
1782
1783
static const ber_choice_t ServedUserNr_choice[] = {
1784
  {   0, &hf_isdn_sup_individualNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyNumber },
1785
  {   1, &hf_isdn_sup_allNumbers , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1786
  { 0, NULL, 0, 0, 0, NULL }
1787
};
1788
1789
static int
1790
0
dissect_isdn_sup_ServedUserNr(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1791
0
  offset = dissect_ber_choice(actx, tree, tvb, offset,
1792
0
                                 ServedUserNr_choice, hf_index, ett_isdn_sup_ServedUserNr,
1793
0
                                 NULL);
1794
1795
0
  return offset;
1796
0
}
1797
1798
1799
1800
static int
1801
0
dissect_isdn_sup_NoReplyTimer(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1802
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1803
0
                                                NULL);
1804
1805
0
  return offset;
1806
0
}
1807
1808
1809
static const ber_sequence_t ActivationDiversionArg_sequence[] = {
1810
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1811
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1812
  { &hf_isdn_sup_forwardedToAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1813
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1814
  { &hf_isdn_sup_noReplyTimer, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NoReplyTimer },
1815
  { NULL, 0, 0, 0, NULL }
1816
};
1817
1818
static int
1819
0
dissect_isdn_sup_ActivationDiversionArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1820
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1821
0
                                   ActivationDiversionArg_sequence, hf_index, ett_isdn_sup_ActivationDiversionArg);
1822
1823
0
  return offset;
1824
0
}
1825
1826
1827
static const ber_sequence_t DeactivationDiversionArg_sequence[] = {
1828
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1829
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1830
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1831
  { NULL, 0, 0, 0, NULL }
1832
};
1833
1834
static int
1835
0
dissect_isdn_sup_DeactivationDiversionArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1836
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1837
0
                                   DeactivationDiversionArg_sequence, hf_index, ett_isdn_sup_DeactivationDiversionArg);
1838
1839
0
  return offset;
1840
0
}
1841
1842
1843
static const ber_sequence_t ActivationStatusNotificationDivArg_sequence[] = {
1844
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1845
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1846
  { &hf_isdn_sup_forwardedToAddresss, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1847
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1848
  { NULL, 0, 0, 0, NULL }
1849
};
1850
1851
static int
1852
0
dissect_isdn_sup_ActivationStatusNotificationDivArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1853
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1854
0
                                   ActivationStatusNotificationDivArg_sequence, hf_index, ett_isdn_sup_ActivationStatusNotificationDivArg);
1855
1856
0
  return offset;
1857
0
}
1858
1859
1860
static const ber_sequence_t DeactivationStatusNotificationDivArg_sequence[] = {
1861
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1862
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1863
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1864
  { NULL, 0, 0, 0, NULL }
1865
};
1866
1867
static int
1868
0
dissect_isdn_sup_DeactivationStatusNotificationDivArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1869
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1870
0
                                   DeactivationStatusNotificationDivArg_sequence, hf_index, ett_isdn_sup_DeactivationStatusNotificationDivArg);
1871
1872
0
  return offset;
1873
0
}
1874
1875
1876
static const ber_sequence_t InterrogationDiversionArg_sequence[] = {
1877
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1878
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1879
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1880
  { NULL, 0, 0, 0, NULL }
1881
};
1882
1883
static int
1884
0
dissect_isdn_sup_InterrogationDiversionArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1885
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1886
0
                                   InterrogationDiversionArg_sequence, hf_index, ett_isdn_sup_InterrogationDiversionArg);
1887
1888
0
  return offset;
1889
0
}
1890
1891
1892
static const ber_sequence_t IntResult_sequence[] = {
1893
  { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1894
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1895
  { &hf_isdn_sup_procedure  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1896
  { &hf_isdn_sup_forwardedToAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1897
  { NULL, 0, 0, 0, NULL }
1898
};
1899
1900
static int
1901
0
dissect_isdn_sup_IntResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1902
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1903
0
                                   IntResult_sequence, hf_index, ett_isdn_sup_IntResult);
1904
1905
0
  return offset;
1906
0
}
1907
1908
1909
static const ber_sequence_t IntResultList_set_of[1] = {
1910
  { &hf_isdn_sup_IntResultList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_IntResult },
1911
};
1912
1913
static int
1914
0
dissect_isdn_sup_IntResultList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1915
0
  offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1916
0
                                 IntResultList_set_of, hf_index, ett_isdn_sup_IntResultList);
1917
1918
0
  return offset;
1919
0
}
1920
1921
1922
1923
static int
1924
0
dissect_isdn_sup_InterrogationDiversionRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1925
0
  offset = dissect_isdn_sup_IntResultList(implicit_tag, tvb, offset, actx, tree, hf_index);
1926
1927
0
  return offset;
1928
0
}
1929
1930
1931
static const ber_sequence_t ServedUserNumberList_set_of[1] = {
1932
  { &hf_isdn_sup_ServedUserNumberList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
1933
};
1934
1935
static int
1936
0
dissect_isdn_sup_ServedUserNumberList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1937
0
  offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1938
0
                                 ServedUserNumberList_set_of, hf_index, ett_isdn_sup_ServedUserNumberList);
1939
1940
0
  return offset;
1941
0
}
1942
1943
1944
1945
static int
1946
0
dissect_isdn_sup_InterrogateServedUserNumbersRes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1947
0
  offset = dissect_isdn_sup_ServedUserNumberList(implicit_tag, tvb, offset, actx, tree, hf_index);
1948
1949
0
  return offset;
1950
0
}
1951
1952
1953
static const value_string isdn_sup_DiversionReason_vals[] = {
1954
  {   0, "unknown" },
1955
  {   1, "cfu" },
1956
  {   2, "cfb" },
1957
  {   3, "cfnr" },
1958
  {   4, "cdAlerting" },
1959
  {   5, "cdImmediate" },
1960
  { 0, NULL }
1961
};
1962
1963
1964
static int
1965
0
dissect_isdn_sup_DiversionReason(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1966
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1967
0
                                  NULL);
1968
1969
0
  return offset;
1970
0
}
1971
1972
1973
static const ber_sequence_t DiversionInformationArg_sequence[] = {
1974
  { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
1975
  { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1976
  { &hf_isdn_sup_servedUserSubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
1977
  { &hf_isdn_sup_callingAddress, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedAddressScreened },
1978
  { &hf_isdn_sup_originalCalledNr, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
1979
  { &hf_isdn_sup_lastDivertingNr, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
1980
  { &hf_isdn_sup_lastDivertingReason, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_isdn_sup_DiversionReason },
1981
  { &hf_isdn_sup_userInfo   , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
1982
  { NULL, 0, 0, 0, NULL }
1983
};
1984
1985
static int
1986
0
dissect_isdn_sup_DiversionInformationArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1987
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1988
0
                                   DiversionInformationArg_sequence, hf_index, ett_isdn_sup_DiversionInformationArg);
1989
1990
0
  return offset;
1991
0
}
1992
1993
1994
static const ber_sequence_t CallDeflectionArg_sequence[] = {
1995
  { &hf_isdn_sup_deflectionAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1996
  { &hf_isdn_sup_presentationAllowedDivertedToUser, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PresentationAllowedIndicator },
1997
  { NULL, 0, 0, 0, NULL }
1998
};
1999
2000
static int
2001
0
dissect_isdn_sup_CallDeflectionArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2002
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2003
0
                                   CallDeflectionArg_sequence, hf_index, ett_isdn_sup_CallDeflectionArg);
2004
2005
0
  return offset;
2006
0
}
2007
2008
2009
2010
static int
2011
0
dissect_isdn_sup_DiversionCounter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2012
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2013
0
                                                NULL);
2014
2015
0
  return offset;
2016
0
}
2017
2018
2019
static const value_string isdn_sup_SubscriptionOption_vals[] = {
2020
  {   0, "noNotification" },
2021
  {   1, "notificationWithoutDivertedToNr" },
2022
  {   2, "notificationWithDivertedToNr" },
2023
  { 0, NULL }
2024
};
2025
2026
2027
static int
2028
0
dissect_isdn_sup_SubscriptionOption(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2029
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2030
0
                                  NULL);
2031
2032
0
  return offset;
2033
0
}
2034
2035
2036
static const ber_sequence_t CallRerouteingArg_sequence[] = {
2037
  { &hf_isdn_sup_rerouteingReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2038
  { &hf_isdn_sup_calledAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
2039
  { &hf_isdn_sup_rerouteingCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionCounter },
2040
  { &hf_isdn_sup_q931InfoElement, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
2041
  { &hf_isdn_sup_lastRerouteingNr, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2042
  { &hf_isdn_sup_subscriptionOption, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_isdn_sup_SubscriptionOption },
2043
  { &hf_isdn_sup_callingPartySubaddress, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
2044
  { NULL, 0, 0, 0, NULL }
2045
};
2046
2047
static int
2048
0
dissect_isdn_sup_CallRerouteingArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2049
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2050
0
                                   CallRerouteingArg_sequence, hf_index, ett_isdn_sup_CallRerouteingArg);
2051
2052
0
  return offset;
2053
0
}
2054
2055
2056
static const ber_sequence_t DivertingLegInformation1Arg_sequence[] = {
2057
  { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2058
  { &hf_isdn_sup_subscriptionOption, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SubscriptionOption },
2059
  { &hf_isdn_sup_divertedToNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2060
  { NULL, 0, 0, 0, NULL }
2061
};
2062
2063
static int
2064
0
dissect_isdn_sup_DivertingLegInformation1Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2065
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2066
0
                                   DivertingLegInformation1Arg_sequence, hf_index, ett_isdn_sup_DivertingLegInformation1Arg);
2067
2068
0
  return offset;
2069
0
}
2070
2071
2072
static const ber_sequence_t DivertingLegInformation2Arg_sequence[] = {
2073
  { &hf_isdn_sup_diversionCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionCounter },
2074
  { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2075
  { &hf_isdn_sup_divertingNr, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2076
  { &hf_isdn_sup_originalCalledNr, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2077
  { NULL, 0, 0, 0, NULL }
2078
};
2079
2080
static int
2081
0
dissect_isdn_sup_DivertingLegInformation2Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2082
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2083
0
                                   DivertingLegInformation2Arg_sequence, hf_index, ett_isdn_sup_DivertingLegInformation2Arg);
2084
2085
0
  return offset;
2086
0
}
2087
2088
2089
2090
static int
2091
0
dissect_isdn_sup_DivertingLegInformation3Arg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2092
0
  offset = dissect_isdn_sup_PresentationAllowedIndicator(implicit_tag, tvb, offset, actx, tree, hf_index);
2093
2094
0
  return offset;
2095
0
}
2096
2097
2098
static const value_string isdn_sup_Service_vals[] = {
2099
  {   1, "service1" },
2100
  {   2, "service2" },
2101
  {   3, "service3" },
2102
  { 0, NULL }
2103
};
2104
2105
2106
static int
2107
0
dissect_isdn_sup_Service(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2108
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2109
0
                                                NULL);
2110
2111
0
  return offset;
2112
0
}
2113
2114
2115
2116
static int
2117
0
dissect_isdn_sup_Preferred(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2118
0
  offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2119
2120
0
  return offset;
2121
0
}
2122
2123
2124
static const ber_sequence_t UserUserServiceArg_sequence[] = {
2125
  { &hf_isdn_sup_service    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Service },
2126
  { &hf_isdn_sup_preferred  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Preferred },
2127
  { NULL, 0, 0, 0, NULL }
2128
};
2129
2130
static int
2131
0
dissect_isdn_sup_UserUserServiceArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2132
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2133
0
                                   UserUserServiceArg_sequence, hf_index, ett_isdn_sup_UserUserServiceArg);
2134
2135
0
  return offset;
2136
0
}
2137
2138
2139
2140
static int
2141
0
dissect_isdn_sup_CalledFreephoneNr(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2142
0
  offset = dissect_isdn_sup_PartyNumber(implicit_tag, tvb, offset, actx, tree, hf_index);
2143
2144
0
  return offset;
2145
0
}
2146
2147
2148
2149
static int
2150
0
dissect_isdn_sup_CalledFreephoneNrArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2151
0
  offset = dissect_isdn_sup_CalledFreephoneNr(implicit_tag, tvb, offset, actx, tree, hf_index);
2152
2153
0
  return offset;
2154
0
}
2155
2156
2157
2158
static int
2159
0
dissect_isdn_sup_QueueIdentity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2160
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2161
0
                                                NULL);
2162
2163
0
  return offset;
2164
0
}
2165
2166
2167
static const ber_sequence_t Monitor_T_FPHArg_sequence[] = {
2168
  { &hf_isdn_sup_q931InfoElement, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
2169
  { &hf_isdn_sup_servedUserDestination, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
2170
  { &hf_isdn_sup_queueIdentity, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_QueueIdentity },
2171
  { NULL, 0, 0, 0, NULL }
2172
};
2173
2174
static int
2175
0
dissect_isdn_sup_Monitor_T_FPHArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2176
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2177
0
                                   Monitor_T_FPHArg_sequence, hf_index, ett_isdn_sup_Monitor_T_FPHArg);
2178
2179
0
  return offset;
2180
0
}
2181
2182
2183
2184
static int
2185
0
dissect_isdn_sup_FPHReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2186
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2187
0
                                                NULL);
2188
2189
0
  return offset;
2190
0
}
2191
2192
2193
static const ber_sequence_t Free_T_FPHArg_sequence[] = {
2194
  { &hf_isdn_sup_servedUserDestination, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
2195
  { &hf_isdn_sup_fPHReference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_FPHReference },
2196
  { NULL, 0, 0, 0, NULL }
2197
};
2198
2199
static int
2200
0
dissect_isdn_sup_Free_T_FPHArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2201
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2202
0
                                   Free_T_FPHArg_sequence, hf_index, ett_isdn_sup_Free_T_FPHArg);
2203
2204
0
  return offset;
2205
0
}
2206
2207
2208
static const ber_sequence_t Call_T_FPHArg_sequence[] = {
2209
  { &hf_isdn_sup_fPHReference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_FPHReference },
2210
  { &hf_isdn_sup_calledFreephoneNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_CalledFreephoneNr },
2211
  { NULL, 0, 0, 0, NULL }
2212
};
2213
2214
static int
2215
0
dissect_isdn_sup_Call_T_FPHArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2216
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2217
0
                                   Call_T_FPHArg_sequence, hf_index, ett_isdn_sup_Call_T_FPHArg);
2218
2219
0
  return offset;
2220
0
}
2221
2222
2223
static const value_string isdn_sup_PrecLevel_vals[] = {
2224
  {   0, "flashOverride" },
2225
  {   1, "flash" },
2226
  {   2, "immediate" },
2227
  {   3, "priority" },
2228
  {   4, "routine" },
2229
  { 0, NULL }
2230
};
2231
2232
2233
static int
2234
0
dissect_isdn_sup_PrecLevel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2235
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2236
0
                                  NULL);
2237
2238
0
  return offset;
2239
0
}
2240
2241
2242
static const value_string isdn_sup_LFBIndictn_vals[] = {
2243
  {   0, "ifbAllowed" },
2244
  {   1, "ifbNotAllowed" },
2245
  {   2, "pathReserved" },
2246
  { 0, NULL }
2247
};
2248
2249
2250
static int
2251
0
dissect_isdn_sup_LFBIndictn(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2252
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2253
0
                                  NULL);
2254
2255
0
  return offset;
2256
0
}
2257
2258
2259
2260
static int
2261
0
dissect_isdn_sup_MLPPSvcDomn(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2262
0
  offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2263
0
                                       NULL);
2264
2265
0
  return offset;
2266
0
}
2267
2268
2269
static const ber_sequence_t MLPPParams_sequence[] = {
2270
  { &hf_isdn_sup_precLevel  , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PrecLevel },
2271
  { &hf_isdn_sup_lfbIndictn , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_LFBIndictn },
2272
  { &hf_isdn_sup_mlppSvcDomn, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_MLPPSvcDomn },
2273
  { NULL, 0, 0, 0, NULL }
2274
};
2275
2276
static int
2277
0
dissect_isdn_sup_MLPPParams(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2278
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2279
0
                                   MLPPParams_sequence, hf_index, ett_isdn_sup_MLPPParams);
2280
2281
0
  return offset;
2282
0
}
2283
2284
2285
2286
static int
2287
0
dissect_isdn_sup_IEArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2288
0
  offset = dissect_isdn_sup_Q931InformationElement(implicit_tag, tvb, offset, actx, tree, hf_index);
2289
2290
0
  return offset;
2291
0
}
2292
2293
2294
static const ber_sequence_t MLPPLFBArg_sequence[] = {
2295
  { &hf_isdn_sup_mlppParams , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_MLPPParams },
2296
  { &hf_isdn_sup_ieArg      , BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_IEArg },
2297
  { NULL, 0, 0, 0, NULL }
2298
};
2299
2300
static int
2301
0
dissect_isdn_sup_MLPPLFBArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2302
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2303
0
                                   MLPPLFBArg_sequence, hf_index, ett_isdn_sup_MLPPLFBArg);
2304
2305
0
  return offset;
2306
0
}
2307
2308
2309
static const value_string isdn_sup_StatusQuery_vals[] = {
2310
  {   1, "success" },
2311
  {   2, "failure" },
2312
  {   3, "bearerCapabilityNotAuthorized" },
2313
  {   4, "bearerCapabilityNotlmplemented" },
2314
  {   5, "bearerCapabilityNotAvailable" },
2315
  {   6, "pathReservationDenied" },
2316
  { 0, NULL }
2317
};
2318
2319
2320
static int
2321
0
dissect_isdn_sup_StatusQuery(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2322
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2323
0
                                  NULL);
2324
2325
0
  return offset;
2326
0
}
2327
2328
2329
2330
static int
2331
0
dissect_isdn_sup_Location(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2332
0
  offset = dissect_isdn_sup_Q931InformationElement(implicit_tag, tvb, offset, actx, tree, hf_index);
2333
2334
0
  return offset;
2335
0
}
2336
2337
2338
static const ber_sequence_t MLPPLFBResp_sequence[] = {
2339
  { &hf_isdn_sup_statusQuery, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_StatusQuery },
2340
  { &hf_isdn_sup_location   , BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Location },
2341
  { NULL, 0, 0, 0, NULL }
2342
};
2343
2344
static int
2345
0
dissect_isdn_sup_MLPPLFBResp(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2346
0
  offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2347
0
                                   MLPPLFBResp_sequence, hf_index, ett_isdn_sup_MLPPLFBResp);
2348
2349
0
  return offset;
2350
0
}
2351
2352
2353
static const value_string isdn_sup_StatusRequest_vals[] = {
2354
  {   1, "successCalledUserMLPPSubscriber" },
2355
  {   2, "successCalledUserNotMLPPSubscriber" },
2356
  {   3, "failureCaseA" },
2357
  {   4, "failureCaseB" },
2358
  { 0, NULL }
2359
};
2360
2361
2362
static int
2363
0
dissect_isdn_sup_StatusRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2364
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2365
0
                                  NULL);
2366
2367
0
  return offset;
2368
0
}
2369
2370
2371
static const value_string isdn_sup_PreemptParams_vals[] = {
2372
  {   1, "circuitReservedForReuse" },
2373
  {   2, "circuitNotReservedForReuse" },
2374
  { 0, NULL }
2375
};
2376
2377
2378
static int
2379
0
dissect_isdn_sup_PreemptParams(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2380
0
  offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2381
0
                                  NULL);
2382
2383
0
  return offset;
2384
0
}
2385
2386
/*--- PDUs ---*/
2387
2388
0
static int dissect_ChargingRequestArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2389
0
  int offset = 0;
2390
0
  asn1_ctx_t asn1_ctx;
2391
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2392
0
  offset = dissect_isdn_sup_ChargingRequestArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ChargingRequestArg_PDU);
2393
0
  return offset;
2394
0
}
2395
0
static int dissect_ChargingRequestRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2396
0
  int offset = 0;
2397
0
  asn1_ctx_t asn1_ctx;
2398
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2399
0
  offset = dissect_isdn_sup_ChargingRequestRes(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ChargingRequestRes_PDU);
2400
0
  return offset;
2401
0
}
2402
0
static int dissect_AOCSCurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2403
0
  int offset = 0;
2404
0
  asn1_ctx_t asn1_ctx;
2405
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2406
0
  offset = dissect_isdn_sup_AOCSCurrencyArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCSCurrencyArg_PDU);
2407
0
  return offset;
2408
0
}
2409
0
static int dissect_AOCSSpecialArrArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2410
0
  int offset = 0;
2411
0
  asn1_ctx_t asn1_ctx;
2412
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2413
0
  offset = dissect_isdn_sup_AOCSSpecialArrArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCSSpecialArrArg_PDU);
2414
0
  return offset;
2415
0
}
2416
0
static int dissect_AOCDCurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2417
0
  int offset = 0;
2418
0
  asn1_ctx_t asn1_ctx;
2419
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2420
0
  offset = dissect_isdn_sup_AOCDCurrencyArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCDCurrencyArg_PDU);
2421
0
  return offset;
2422
0
}
2423
0
static int dissect_AOCDChargingUnitArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2424
0
  int offset = 0;
2425
0
  asn1_ctx_t asn1_ctx;
2426
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2427
0
  offset = dissect_isdn_sup_AOCDChargingUnitArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCDChargingUnitArg_PDU);
2428
0
  return offset;
2429
0
}
2430
0
static int dissect_AOCECurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2431
0
  int offset = 0;
2432
0
  asn1_ctx_t asn1_ctx;
2433
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2434
0
  offset = dissect_isdn_sup_AOCECurrencyArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCECurrencyArg_PDU);
2435
0
  return offset;
2436
0
}
2437
0
static int dissect_AOCEChargingUnitArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2438
0
  int offset = 0;
2439
0
  asn1_ctx_t asn1_ctx;
2440
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2441
0
  offset = dissect_isdn_sup_AOCEChargingUnitArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCEChargingUnitArg_PDU);
2442
0
  return offset;
2443
0
}
2444
0
static int dissect_CUGcallArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2445
0
  int offset = 0;
2446
0
  asn1_ctx_t asn1_ctx;
2447
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2448
0
  offset = dissect_isdn_sup_CUGcallArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CUGcallArg_PDU);
2449
0
  return offset;
2450
0
}
2451
0
static int dissect_BeginCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2452
0
  int offset = 0;
2453
0
  asn1_ctx_t asn1_ctx;
2454
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2455
0
  offset = dissect_isdn_sup_BeginCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_BeginCONFArg_PDU);
2456
0
  return offset;
2457
0
}
2458
0
static int dissect_BeginCONFRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2459
0
  int offset = 0;
2460
0
  asn1_ctx_t asn1_ctx;
2461
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2462
0
  offset = dissect_isdn_sup_BeginCONFRes(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_BeginCONFRes_PDU);
2463
0
  return offset;
2464
0
}
2465
0
static int dissect_AddCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2466
0
  int offset = 0;
2467
0
  asn1_ctx_t asn1_ctx;
2468
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2469
0
  offset = dissect_isdn_sup_AddCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AddCONFArg_PDU);
2470
0
  return offset;
2471
0
}
2472
0
static int dissect_AddCONFRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2473
0
  int offset = 0;
2474
0
  asn1_ctx_t asn1_ctx;
2475
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2476
0
  offset = dissect_isdn_sup_AddCONFRes(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AddCONFRes_PDU);
2477
0
  return offset;
2478
0
}
2479
0
static int dissect_SplitCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2480
0
  int offset = 0;
2481
0
  asn1_ctx_t asn1_ctx;
2482
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2483
0
  offset = dissect_isdn_sup_SplitCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_SplitCONFArg_PDU);
2484
0
  return offset;
2485
0
}
2486
0
static int dissect_DropCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2487
0
  int offset = 0;
2488
0
  asn1_ctx_t asn1_ctx;
2489
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2490
0
  offset = dissect_isdn_sup_DropCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DropCONFArg_PDU);
2491
0
  return offset;
2492
0
}
2493
0
static int dissect_IsolateCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2494
0
  int offset = 0;
2495
0
  asn1_ctx_t asn1_ctx;
2496
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2497
0
  offset = dissect_isdn_sup_IsolateCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_IsolateCONFArg_PDU);
2498
0
  return offset;
2499
0
}
2500
0
static int dissect_ReattachCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2501
0
  int offset = 0;
2502
0
  asn1_ctx_t asn1_ctx;
2503
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2504
0
  offset = dissect_isdn_sup_ReattachCONFArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ReattachCONFArg_PDU);
2505
0
  return offset;
2506
0
}
2507
0
static int dissect_PartyDISCArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2508
0
  int offset = 0;
2509
0
  asn1_ctx_t asn1_ctx;
2510
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2511
0
  offset = dissect_isdn_sup_PartyDISCArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_PartyDISCArg_PDU);
2512
0
  return offset;
2513
0
}
2514
0
static int dissect_ActivationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2515
0
  int offset = 0;
2516
0
  asn1_ctx_t asn1_ctx;
2517
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2518
0
  offset = dissect_isdn_sup_ActivationDiversionArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ActivationDiversionArg_PDU);
2519
0
  return offset;
2520
0
}
2521
0
static int dissect_DeactivationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2522
0
  int offset = 0;
2523
0
  asn1_ctx_t asn1_ctx;
2524
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2525
0
  offset = dissect_isdn_sup_DeactivationDiversionArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DeactivationDiversionArg_PDU);
2526
0
  return offset;
2527
0
}
2528
0
static int dissect_ActivationStatusNotificationDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2529
0
  int offset = 0;
2530
0
  asn1_ctx_t asn1_ctx;
2531
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2532
0
  offset = dissect_isdn_sup_ActivationStatusNotificationDivArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ActivationStatusNotificationDivArg_PDU);
2533
0
  return offset;
2534
0
}
2535
0
static int dissect_DeactivationStatusNotificationDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2536
0
  int offset = 0;
2537
0
  asn1_ctx_t asn1_ctx;
2538
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2539
0
  offset = dissect_isdn_sup_DeactivationStatusNotificationDivArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU);
2540
0
  return offset;
2541
0
}
2542
0
static int dissect_InterrogationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2543
0
  int offset = 0;
2544
0
  asn1_ctx_t asn1_ctx;
2545
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2546
0
  offset = dissect_isdn_sup_InterrogationDiversionArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogationDiversionArg_PDU);
2547
0
  return offset;
2548
0
}
2549
0
static int dissect_InterrogationDiversionRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2550
0
  int offset = 0;
2551
0
  asn1_ctx_t asn1_ctx;
2552
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2553
0
  offset = dissect_isdn_sup_InterrogationDiversionRes(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogationDiversionRes_PDU);
2554
0
  return offset;
2555
0
}
2556
0
static int dissect_InterrogateServedUserNumbersRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2557
0
  int offset = 0;
2558
0
  asn1_ctx_t asn1_ctx;
2559
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2560
0
  offset = dissect_isdn_sup_InterrogateServedUserNumbersRes(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogateServedUserNumbersRes_PDU);
2561
0
  return offset;
2562
0
}
2563
0
static int dissect_DiversionInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2564
0
  int offset = 0;
2565
0
  asn1_ctx_t asn1_ctx;
2566
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2567
0
  offset = dissect_isdn_sup_DiversionInformationArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DiversionInformationArg_PDU);
2568
0
  return offset;
2569
0
}
2570
0
static int dissect_CallDeflectionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2571
0
  int offset = 0;
2572
0
  asn1_ctx_t asn1_ctx;
2573
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2574
0
  offset = dissect_isdn_sup_CallDeflectionArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CallDeflectionArg_PDU);
2575
0
  return offset;
2576
0
}
2577
0
static int dissect_CallRerouteingArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2578
0
  int offset = 0;
2579
0
  asn1_ctx_t asn1_ctx;
2580
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2581
0
  offset = dissect_isdn_sup_CallRerouteingArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CallRerouteingArg_PDU);
2582
0
  return offset;
2583
0
}
2584
0
static int dissect_DivertingLegInformation1Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2585
0
  int offset = 0;
2586
0
  asn1_ctx_t asn1_ctx;
2587
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2588
0
  offset = dissect_isdn_sup_DivertingLegInformation1Arg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation1Arg_PDU);
2589
0
  return offset;
2590
0
}
2591
0
static int dissect_DivertingLegInformation2Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2592
0
  int offset = 0;
2593
0
  asn1_ctx_t asn1_ctx;
2594
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2595
0
  offset = dissect_isdn_sup_DivertingLegInformation2Arg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation2Arg_PDU);
2596
0
  return offset;
2597
0
}
2598
0
static int dissect_DivertingLegInformation3Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2599
0
  int offset = 0;
2600
0
  asn1_ctx_t asn1_ctx;
2601
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2602
0
  offset = dissect_isdn_sup_DivertingLegInformation3Arg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation3Arg_PDU);
2603
0
  return offset;
2604
0
}
2605
0
static int dissect_UserUserServiceArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2606
0
  int offset = 0;
2607
0
  asn1_ctx_t asn1_ctx;
2608
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2609
0
  offset = dissect_isdn_sup_UserUserServiceArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_UserUserServiceArg_PDU);
2610
0
  return offset;
2611
0
}
2612
0
static int dissect_CalledFreephoneNrArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2613
0
  int offset = 0;
2614
0
  asn1_ctx_t asn1_ctx;
2615
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2616
0
  offset = dissect_isdn_sup_CalledFreephoneNrArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CalledFreephoneNrArg_PDU);
2617
0
  return offset;
2618
0
}
2619
0
static int dissect_Monitor_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2620
0
  int offset = 0;
2621
0
  asn1_ctx_t asn1_ctx;
2622
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2623
0
  offset = dissect_isdn_sup_Monitor_T_FPHArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Monitor_T_FPHArg_PDU);
2624
0
  return offset;
2625
0
}
2626
0
static int dissect_Free_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2627
0
  int offset = 0;
2628
0
  asn1_ctx_t asn1_ctx;
2629
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2630
0
  offset = dissect_isdn_sup_Free_T_FPHArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Free_T_FPHArg_PDU);
2631
0
  return offset;
2632
0
}
2633
0
static int dissect_Call_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2634
0
  int offset = 0;
2635
0
  asn1_ctx_t asn1_ctx;
2636
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2637
0
  offset = dissect_isdn_sup_Call_T_FPHArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Call_T_FPHArg_PDU);
2638
0
  return offset;
2639
0
}
2640
0
static int dissect_MLPPLFBArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2641
0
  int offset = 0;
2642
0
  asn1_ctx_t asn1_ctx;
2643
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2644
0
  offset = dissect_isdn_sup_MLPPLFBArg(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_MLPPLFBArg_PDU);
2645
0
  return offset;
2646
0
}
2647
0
static int dissect_MLPPLFBResp_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2648
0
  int offset = 0;
2649
0
  asn1_ctx_t asn1_ctx;
2650
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2651
0
  offset = dissect_isdn_sup_MLPPLFBResp(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_MLPPLFBResp_PDU);
2652
0
  return offset;
2653
0
}
2654
0
static int dissect_MLPPParams_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2655
0
  int offset = 0;
2656
0
  asn1_ctx_t asn1_ctx;
2657
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2658
0
  offset = dissect_isdn_sup_MLPPParams(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_MLPPParams_PDU);
2659
0
  return offset;
2660
0
}
2661
0
static int dissect_StatusRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2662
0
  int offset = 0;
2663
0
  asn1_ctx_t asn1_ctx;
2664
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2665
0
  offset = dissect_isdn_sup_StatusRequest(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_StatusRequest_PDU);
2666
0
  return offset;
2667
0
}
2668
0
static int dissect_PreemptParams_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2669
0
  int offset = 0;
2670
0
  asn1_ctx_t asn1_ctx;
2671
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
2672
0
  offset = dissect_isdn_sup_PreemptParams(false, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_PreemptParams_PDU);
2673
0
  return offset;
2674
0
}
2675
2676
2677
static const isdn_sup_op_t isdn_sup_op_tab[] = {
2678
  /* chargingRequest          */ {  30, dissect_ChargingRequestArg_PDU, dissect_ChargingRequestRes_PDU },
2679
  /* aOCSCurrency             */ {  31, dissect_AOCSCurrencyArg_PDU, NULL },
2680
  /* aOCSSpecialArr           */ {  32, dissect_AOCSSpecialArrArg_PDU, NULL },
2681
  /* aOCDCurrency             */ {  33, dissect_AOCDCurrencyArg_PDU, NULL },
2682
  /* aOCDChargingUnit         */ {  34, dissect_AOCDChargingUnitArg_PDU, NULL },
2683
  /* aOCECurrency             */ {  35, dissect_AOCECurrencyArg_PDU, NULL },
2684
  /* aOCEChargingUnit         */ {  36, dissect_AOCEChargingUnitArg_PDU, NULL },
2685
  /* cUGcall                  */ {   2, dissect_CUGcallArg_PDU, NULL },
2686
  /* beginCONF                */ {  40, dissect_BeginCONFArg_PDU, dissect_BeginCONFRes_PDU },
2687
  /* addCONF                  */ {  41, dissect_AddCONFArg_PDU, dissect_AddCONFRes_PDU },
2688
  /* splitCONF                */ {  42, dissect_SplitCONFArg_PDU, NULL },
2689
  /* dropCONF                 */ {  43, dissect_DropCONFArg_PDU, NULL },
2690
  /* isolateCONF              */ {  44, dissect_IsolateCONFArg_PDU, NULL },
2691
  /* reattachCONF             */ {  45, dissect_ReattachCONFArg_PDU, NULL },
2692
  /* partyDISC                */ {  46, dissect_PartyDISCArg_PDU, NULL },
2693
  /* activationDiversion      */ {   7, dissect_ActivationDiversionArg_PDU, NULL },
2694
  /* deactivationDiversion    */ {   8, dissect_DeactivationDiversionArg_PDU, NULL },
2695
  /* activationStatusNotificationDiv */ {   9, dissect_ActivationStatusNotificationDivArg_PDU, NULL },
2696
  /* deactivationStatusNotificationDiv */ {  10, dissect_DeactivationStatusNotificationDivArg_PDU, NULL },
2697
  /* interrogationDiversion   */ {  11, dissect_InterrogationDiversionArg_PDU, dissect_InterrogationDiversionRes_PDU },
2698
  /* interrogateServedUserNumbers */ {  17, NULL, dissect_InterrogateServedUserNumbersRes_PDU },
2699
  /* diversionInformation     */ {  12, dissect_DiversionInformationArg_PDU, NULL },
2700
  /* callDeflection           */ {  13, dissect_CallDeflectionArg_PDU, NULL },
2701
  /* callRerouteing           */ {  14, dissect_CallRerouteingArg_PDU, NULL },
2702
  /* divertingLegInformation1 */ {  18, dissect_DivertingLegInformation1Arg_PDU, NULL },
2703
  /* divertingLegInformation2 */ {  15, dissect_DivertingLegInformation2Arg_PDU, NULL },
2704
  /* divertingLegInformation3 */ {  19, dissect_DivertingLegInformation3Arg_PDU, NULL },
2705
  /* mCIDRequest              */ {   3, NULL, NULL },
2706
  /* userUserService          */ {   1, dissect_UserUserServiceArg_PDU, NULL },
2707
  /* mLPPLFBQuery             */ {  24, dissect_MLPPLFBArg_PDU, dissect_MLPPLFBResp_PDU },
2708
  /* mLPPCallRequest          */ {  25, dissect_MLPPParams_PDU, dissect_StatusRequest_PDU },
2709
  /* mLPPCallPreemption       */ {  26, dissect_PreemptParams_PDU, NULL },
2710
};
2711
2712
2713
static const isdn_sup_global_op_t isdn_sup_global_op_tab[] = {
2714
2715
  /* callFPH                  */ { fPHOID".1", dissect_CalledFreephoneNrArg_PDU, NULL },
2716
  /* monitor-T-FPH            */ { fPHOID".2", dissect_Monitor_T_FPHArg_PDU, NULL },
2717
  /* free-T-FPH               */ { fPHOID".3", dissect_Free_T_FPHArg_PDU, NULL },
2718
  /* call-T-FPH               */ { fPHOID".4", dissect_Call_T_FPHArg_PDU, NULL },
2719
};
2720
2721
static const isdn_sup_err_t isdn_sup_err_tab[] = {
2722
  /* notSubscribed            */ {    0, NULL },
2723
  /* notAvailable             */ {    3, NULL },
2724
  /* notImplemented           */ {    4, NULL },
2725
  /* invalidServedUserNr      */ {    6, NULL },
2726
  /* invalidCallState         */ {    7, NULL },
2727
  /* basicServiceNotProvided  */ {    8, NULL },
2728
  /* notIncomingCall          */ {    9, NULL },
2729
  /* supplementaryServiceInteractionNotAllowed */ {   10, NULL },
2730
  /* resourceUnavailable      */ {   11, NULL },
2731
  /* noChargingInfoAvailable  */ {   26, NULL },
2732
  /* invalidOrUnregisteredCUGIndex */ {   16, NULL },
2733
  /* requestedBasicServiceViolatesCUGConstraints */ {   17, NULL },
2734
  /* outgoingCallsBarredWithinCUG */ {   18, NULL },
2735
  /* incomingCallsBarredWithinCUG */ {   19, NULL },
2736
  /* userNotMemberOfCUG       */ {   20, NULL },
2737
  /* inconsistencyInDesignatedFacilityAndSubscriberClass */ {   21, NULL },
2738
  /* illConferenceId          */ {   28, NULL },
2739
  /* illPartyId               */ {   29, NULL },
2740
  /* numberOfPartiesExceeded  */ {   30, NULL },
2741
  /* notActive                */ {   31, NULL },
2742
  /* notAllowed               */ {   32, NULL },
2743
  /* invalidDivertedToNr      */ {   12, NULL },
2744
  /* specialServiceNr         */ {   14, NULL },
2745
  /* diversionToServedUserNr  */ {   15, NULL },
2746
  /* incomingCallAccepted     */ {   23, NULL },
2747
  /* numberOfDiversionsExceeded */ {   24, NULL },
2748
  /* notActivated             */ {   46, NULL },
2749
  /* requestAlreadyAccepted   */ {   48, NULL },
2750
  /* rejectedByTheNetwork     */ {    1, NULL },
2751
  /* rejectedByTheUser        */ {    2, NULL },
2752
  /* unauthorizedPrecedenceLevel */ {   44, NULL },
2753
};
2754
2755
2756
0
static const isdn_sup_op_t *get_op(int32_t opcode) {
2757
0
  int i;
2758
2759
  /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2760
0
  for (i = array_length(isdn_sup_op_tab) - 1; i >= 0; i--)
2761
0
    if (isdn_sup_op_tab[i].opcode == opcode)
2762
0
      return &isdn_sup_op_tab[i];
2763
0
  return NULL;
2764
0
}
2765
2766
0
static const isdn_sup_err_t *get_err(int32_t errcode) {
2767
0
  int i;
2768
2769
  /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2770
0
  for (i = array_length(isdn_sup_err_tab) - 1; i >= 0; i--)
2771
0
    if (isdn_sup_err_tab[i].errcode == errcode)
2772
0
      return &isdn_sup_err_tab[i];
2773
0
  return NULL;
2774
0
}
2775
2776
/*--- dissect_isdn_sup_arg ------------------------------------------------------*/
2777
static int
2778
0
dissect_isdn_sup_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2779
0
  int offset = 0;
2780
0
  rose_ctx_t *rctx;
2781
0
  int32_t opcode = 0;
2782
0
  const char *p;
2783
0
  const isdn_sup_op_t *op_ptr;
2784
0
  proto_item *ti;
2785
0
  proto_tree *isdn_sup_tree;
2786
2787
  /* Reject the packet if data is NULL */
2788
0
  if (data == NULL)
2789
0
    return 0;
2790
0
  rctx = get_rose_ctx(data);
2791
0
  DISSECTOR_ASSERT(rctx);
2792
2793
0
  if (rctx->d.pdu != 1)  /* invoke */
2794
0
    return offset;
2795
0
  if (rctx->d.code == 0) {  /* local */
2796
0
    opcode = rctx->d.code_local;
2797
0
  } else {
2798
0
    return offset;
2799
0
  }
2800
0
  op_ptr = get_op(opcode);
2801
0
  if (!op_ptr)
2802
0
    return offset;
2803
2804
0
  ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, -1, ENC_NA);
2805
0
  isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2806
2807
0
  proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
2808
0
  p = try_val_to_str(opcode, VALS(isdn_sup_str_operation));
2809
0
  if (p) {
2810
0
    proto_item_append_text(ti, ": %s", p);
2811
0
    proto_item_append_text(rctx->d.code_item, " - %s", p);
2812
0
    if (rctx->apdu_depth >= 0)
2813
0
      proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2814
0
  }
2815
2816
0
  if (op_ptr->arg_pdu)
2817
0
    offset = op_ptr->arg_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2818
0
  else
2819
0
    if (tvb_reported_length_remaining(tvb, offset) > 0) {
2820
0
      proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
2821
0
      offset += tvb_reported_length_remaining(tvb, offset);
2822
0
    }
2823
2824
0
  return offset;
2825
0
}
2826
2827
/*--- dissect_isdn_sup_res -------------------------------------------------------*/
2828
static int
2829
0
dissect_isdn_sup_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2830
0
  int offset = 0;
2831
0
  rose_ctx_t *rctx;
2832
0
  int32_t opcode = 0;
2833
0
  const char *p;
2834
0
  const isdn_sup_op_t *op_ptr;
2835
0
  proto_item *ti;
2836
0
  proto_tree *isdn_sup_tree;
2837
2838
  /* Reject the packet if data is NULL */
2839
0
  if (data == NULL)
2840
0
    return 0;
2841
0
  rctx = get_rose_ctx(data);
2842
0
  DISSECTOR_ASSERT(rctx);
2843
2844
0
  if (rctx->d.pdu != 2)  /* returnResult */
2845
0
    return offset;
2846
0
  if (rctx->d.code != 0)  /* local */
2847
0
    return offset;
2848
0
  opcode = rctx->d.code_local;
2849
0
  op_ptr = get_op(opcode);
2850
0
  if (!op_ptr)
2851
0
    return offset;
2852
2853
0
  ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, -1, ENC_NA);
2854
0
  isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2855
2856
0
  proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
2857
0
  p = try_val_to_str(opcode, VALS(isdn_sup_str_operation));
2858
0
  if (p) {
2859
0
    proto_item_append_text(ti, ": %s", p);
2860
0
    proto_item_append_text(rctx->d.code_item, " - %s", p);
2861
0
    if (rctx->apdu_depth >= 0)
2862
0
      proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2863
0
  }
2864
2865
0
  if (op_ptr->res_pdu)
2866
0
    offset = op_ptr->res_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2867
0
  else
2868
0
    if (tvb_reported_length_remaining(tvb, offset) > 0) {
2869
0
      proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_result_type, tvb, offset, -1);
2870
0
      offset += tvb_reported_length_remaining(tvb, offset);
2871
0
    }
2872
2873
0
  return offset;
2874
0
}
2875
2876
2877
/*--- dissect_isdn_sup_err ------------------------------------------------------*/
2878
static int
2879
0
dissect_isdn_sup_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2880
0
  int offset = 0;
2881
0
  rose_ctx_t *rctx;
2882
0
  int32_t errcode;
2883
0
  const isdn_sup_err_t *err_ptr;
2884
0
  const char *p;
2885
0
  proto_item *ti;
2886
0
  proto_tree *isdn_sup_tree;
2887
2888
  /* Reject the packet if data is NULL */
2889
0
  if (data == NULL)
2890
0
    return 0;
2891
0
  rctx = get_rose_ctx(data);
2892
0
  DISSECTOR_ASSERT(rctx);
2893
2894
0
  if (rctx->d.pdu != 3)  /* returnError */
2895
0
    return offset;
2896
0
  if (rctx->d.code != 0)  /* local */
2897
0
    return offset;
2898
0
  errcode = rctx->d.code_local;
2899
0
  err_ptr = get_err(errcode);
2900
0
  if (!err_ptr)
2901
0
    return offset;
2902
2903
0
  ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, -1, ENC_NA);
2904
0
  isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2905
2906
0
  proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_error, tvb, 0, 0, errcode);
2907
0
  p = try_val_to_str(errcode, VALS(isdn_sup_str_error));
2908
0
  if (p) {
2909
0
    proto_item_append_text(ti, ": %s", p);
2910
0
    proto_item_append_text(rctx->d.code_item, " - %s", p);
2911
0
    if (rctx->apdu_depth >= 0)
2912
0
      proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2913
0
  }
2914
2915
0
  if (err_ptr->err_pdu)
2916
0
    offset = err_ptr->err_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2917
0
  else
2918
0
    if (tvb_reported_length_remaining(tvb, offset) > 0) {
2919
0
      proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
2920
0
      offset += tvb_reported_length_remaining(tvb, offset);
2921
0
    }
2922
2923
0
  return offset;
2924
0
}
2925
2926
2927
/*--- proto_reg_handoff_isdn_sup ---------------------------------------*/
2928
2929
14
void proto_reg_handoff_isdn_sup(void) {
2930
14
  int i;
2931
#if 0
2932
  dissector_handle_t q931_handle;
2933
  q931_handle = find_dissector("q931");
2934
#endif
2935
2936
462
  for (i=0; i<(int)array_length(isdn_sup_op_tab); i++) {
2937
448
    dissector_add_uint("q932.ros.etsi.local.arg", isdn_sup_op_tab[i].opcode, isdn_sup_arg_handle);
2938
448
    dissector_add_uint("q932.ros.etsi.local.res", isdn_sup_op_tab[i].opcode, isdn_sup_res_handle);
2939
448
  }
2940
2941
70
  for (i=0; i<(int)array_length(isdn_sup_global_op_tab); i++) {
2942
56
    if(isdn_sup_global_op_tab[i].arg_pdu)
2943
56
      dissector_add_string("q932.ros.global.arg", isdn_sup_global_op_tab[i].oid, create_dissector_handle(isdn_sup_global_op_tab[i].arg_pdu, proto_isdn_sup));
2944
56
    if(isdn_sup_global_op_tab[i].res_pdu)
2945
0
      dissector_add_string("q932.ros.global.res", isdn_sup_global_op_tab[i].oid, create_dissector_handle(isdn_sup_global_op_tab[i].res_pdu, proto_isdn_sup));
2946
56
  }
2947
2948
448
  for (i=0; i<(int)array_length(isdn_sup_err_tab); i++) {
2949
434
    dissector_add_uint("q932.ros.etsi.local.err", isdn_sup_err_tab[i].errcode, isdn_sup_err_handle);
2950
434
  }
2951
2952
2953
14
}
2954
2955
14
void proto_register_isdn_sup(void) {
2956
2957
  /* List of fields */
2958
14
  static hf_register_info hf[] = {
2959
14
    { &hf_isdn_sup,
2960
14
      { "isdn_sup", "isdn_sup.1",
2961
14
        FT_INT32, BASE_DEC, NULL, 0,
2962
14
        NULL, HFILL }
2963
14
  },
2964
14
    { &hf_isdn_sup_operation,
2965
14
    { "Operation", "isdn_sup.operation",
2966
14
        FT_UINT8, BASE_DEC, VALS(isdn_sup_str_operation), 0x0,
2967
14
        NULL, HFILL }
2968
14
  },
2969
14
    { &hf_isdn_sup_error,
2970
14
    { "Error", "isdn_sup.error",
2971
14
        FT_UINT8, BASE_DEC, VALS(isdn_sup_str_error), 0x0,
2972
14
        NULL, HFILL }
2973
14
  },
2974
2975
14
    { &hf_isdn_sup_ChargingRequestArg_PDU,
2976
14
      { "ChargingRequestArg", "isdn-sup.ChargingRequestArg",
2977
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingCase_vals), 0,
2978
14
        NULL, HFILL }},
2979
14
    { &hf_isdn_sup_ChargingRequestRes_PDU,
2980
14
      { "ChargingRequestRes", "isdn-sup.ChargingRequestRes",
2981
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingRequestRes_vals), 0,
2982
14
        NULL, HFILL }},
2983
14
    { &hf_isdn_sup_AOCSCurrencyArg_PDU,
2984
14
      { "AOCSCurrencyArg", "isdn-sup.AOCSCurrencyArg",
2985
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSCurrencyArg_vals), 0,
2986
14
        NULL, HFILL }},
2987
14
    { &hf_isdn_sup_AOCSSpecialArrArg_PDU,
2988
14
      { "AOCSSpecialArrArg", "isdn-sup.AOCSSpecialArrArg",
2989
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSSpecialArrArg_vals), 0,
2990
14
        NULL, HFILL }},
2991
14
    { &hf_isdn_sup_AOCDCurrencyArg_PDU,
2992
14
      { "AOCDCurrencyArg", "isdn-sup.AOCDCurrencyArg",
2993
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDCurrencyArg_vals), 0,
2994
14
        NULL, HFILL }},
2995
14
    { &hf_isdn_sup_AOCDChargingUnitArg_PDU,
2996
14
      { "AOCDChargingUnitArg", "isdn-sup.AOCDChargingUnitArg",
2997
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDChargingUnitArg_vals), 0,
2998
14
        NULL, HFILL }},
2999
14
    { &hf_isdn_sup_AOCECurrencyArg_PDU,
3000
14
      { "AOCECurrencyArg", "isdn-sup.AOCECurrencyArg",
3001
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCECurrencyArg_vals), 0,
3002
14
        NULL, HFILL }},
3003
14
    { &hf_isdn_sup_AOCEChargingUnitArg_PDU,
3004
14
      { "AOCEChargingUnitArg", "isdn-sup.AOCEChargingUnitArg",
3005
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEChargingUnitArg_vals), 0,
3006
14
        NULL, HFILL }},
3007
14
    { &hf_isdn_sup_CUGcallArg_PDU,
3008
14
      { "CUGcallArg", "isdn-sup.CUGcallArg_element",
3009
14
        FT_NONE, BASE_NONE, NULL, 0,
3010
14
        NULL, HFILL }},
3011
14
    { &hf_isdn_sup_BeginCONFArg_PDU,
3012
14
      { "BeginCONFArg", "isdn-sup.BeginCONFArg",
3013
14
        FT_UINT32, BASE_DEC, NULL, 0,
3014
14
        NULL, HFILL }},
3015
14
    { &hf_isdn_sup_BeginCONFRes_PDU,
3016
14
      { "BeginCONFRes", "isdn-sup.BeginCONFRes_element",
3017
14
        FT_NONE, BASE_NONE, NULL, 0,
3018
14
        NULL, HFILL }},
3019
14
    { &hf_isdn_sup_AddCONFArg_PDU,
3020
14
      { "AddCONFArg", "isdn-sup.AddCONFArg",
3021
14
        FT_UINT32, BASE_DEC, NULL, 0,
3022
14
        NULL, HFILL }},
3023
14
    { &hf_isdn_sup_AddCONFRes_PDU,
3024
14
      { "AddCONFRes", "isdn-sup.AddCONFRes",
3025
14
        FT_UINT32, BASE_DEC, NULL, 0,
3026
14
        NULL, HFILL }},
3027
14
    { &hf_isdn_sup_SplitCONFArg_PDU,
3028
14
      { "SplitCONFArg", "isdn-sup.SplitCONFArg_element",
3029
14
        FT_NONE, BASE_NONE, NULL, 0,
3030
14
        NULL, HFILL }},
3031
14
    { &hf_isdn_sup_DropCONFArg_PDU,
3032
14
      { "DropCONFArg", "isdn-sup.DropCONFArg",
3033
14
        FT_UINT32, BASE_DEC, NULL, 0,
3034
14
        NULL, HFILL }},
3035
14
    { &hf_isdn_sup_IsolateCONFArg_PDU,
3036
14
      { "IsolateCONFArg", "isdn-sup.IsolateCONFArg",
3037
14
        FT_UINT32, BASE_DEC, NULL, 0,
3038
14
        NULL, HFILL }},
3039
14
    { &hf_isdn_sup_ReattachCONFArg_PDU,
3040
14
      { "ReattachCONFArg", "isdn-sup.ReattachCONFArg",
3041
14
        FT_UINT32, BASE_DEC, NULL, 0,
3042
14
        NULL, HFILL }},
3043
14
    { &hf_isdn_sup_PartyDISCArg_PDU,
3044
14
      { "PartyDISCArg", "isdn-sup.PartyDISCArg",
3045
14
        FT_UINT32, BASE_DEC, NULL, 0,
3046
14
        NULL, HFILL }},
3047
14
    { &hf_isdn_sup_ActivationDiversionArg_PDU,
3048
14
      { "ActivationDiversionArg", "isdn-sup.ActivationDiversionArg_element",
3049
14
        FT_NONE, BASE_NONE, NULL, 0,
3050
14
        NULL, HFILL }},
3051
14
    { &hf_isdn_sup_DeactivationDiversionArg_PDU,
3052
14
      { "DeactivationDiversionArg", "isdn-sup.DeactivationDiversionArg_element",
3053
14
        FT_NONE, BASE_NONE, NULL, 0,
3054
14
        NULL, HFILL }},
3055
14
    { &hf_isdn_sup_ActivationStatusNotificationDivArg_PDU,
3056
14
      { "ActivationStatusNotificationDivArg", "isdn-sup.ActivationStatusNotificationDivArg_element",
3057
14
        FT_NONE, BASE_NONE, NULL, 0,
3058
14
        NULL, HFILL }},
3059
14
    { &hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU,
3060
14
      { "DeactivationStatusNotificationDivArg", "isdn-sup.DeactivationStatusNotificationDivArg_element",
3061
14
        FT_NONE, BASE_NONE, NULL, 0,
3062
14
        NULL, HFILL }},
3063
14
    { &hf_isdn_sup_InterrogationDiversionArg_PDU,
3064
14
      { "InterrogationDiversionArg", "isdn-sup.InterrogationDiversionArg_element",
3065
14
        FT_NONE, BASE_NONE, NULL, 0,
3066
14
        NULL, HFILL }},
3067
14
    { &hf_isdn_sup_InterrogationDiversionRes_PDU,
3068
14
      { "InterrogationDiversionRes", "isdn-sup.InterrogationDiversionRes",
3069
14
        FT_UINT32, BASE_DEC, NULL, 0,
3070
14
        NULL, HFILL }},
3071
14
    { &hf_isdn_sup_InterrogateServedUserNumbersRes_PDU,
3072
14
      { "InterrogateServedUserNumbersRes", "isdn-sup.InterrogateServedUserNumbersRes",
3073
14
        FT_UINT32, BASE_DEC, NULL, 0,
3074
14
        NULL, HFILL }},
3075
14
    { &hf_isdn_sup_DiversionInformationArg_PDU,
3076
14
      { "DiversionInformationArg", "isdn-sup.DiversionInformationArg_element",
3077
14
        FT_NONE, BASE_NONE, NULL, 0,
3078
14
        NULL, HFILL }},
3079
14
    { &hf_isdn_sup_CallDeflectionArg_PDU,
3080
14
      { "CallDeflectionArg", "isdn-sup.CallDeflectionArg_element",
3081
14
        FT_NONE, BASE_NONE, NULL, 0,
3082
14
        NULL, HFILL }},
3083
14
    { &hf_isdn_sup_CallRerouteingArg_PDU,
3084
14
      { "CallRerouteingArg", "isdn-sup.CallRerouteingArg_element",
3085
14
        FT_NONE, BASE_NONE, NULL, 0,
3086
14
        NULL, HFILL }},
3087
14
    { &hf_isdn_sup_DivertingLegInformation1Arg_PDU,
3088
14
      { "DivertingLegInformation1Arg", "isdn-sup.DivertingLegInformation1Arg_element",
3089
14
        FT_NONE, BASE_NONE, NULL, 0,
3090
14
        NULL, HFILL }},
3091
14
    { &hf_isdn_sup_DivertingLegInformation2Arg_PDU,
3092
14
      { "DivertingLegInformation2Arg", "isdn-sup.DivertingLegInformation2Arg_element",
3093
14
        FT_NONE, BASE_NONE, NULL, 0,
3094
14
        NULL, HFILL }},
3095
14
    { &hf_isdn_sup_DivertingLegInformation3Arg_PDU,
3096
14
      { "DivertingLegInformation3Arg", "isdn-sup.DivertingLegInformation3Arg",
3097
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
3098
14
        NULL, HFILL }},
3099
14
    { &hf_isdn_sup_UserUserServiceArg_PDU,
3100
14
      { "UserUserServiceArg", "isdn-sup.UserUserServiceArg_element",
3101
14
        FT_NONE, BASE_NONE, NULL, 0,
3102
14
        NULL, HFILL }},
3103
14
    { &hf_isdn_sup_CalledFreephoneNrArg_PDU,
3104
14
      { "CalledFreephoneNrArg", "isdn-sup.CalledFreephoneNrArg",
3105
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3106
14
        NULL, HFILL }},
3107
14
    { &hf_isdn_sup_Monitor_T_FPHArg_PDU,
3108
14
      { "Monitor-T-FPHArg", "isdn-sup.Monitor_T_FPHArg_element",
3109
14
        FT_NONE, BASE_NONE, NULL, 0,
3110
14
        NULL, HFILL }},
3111
14
    { &hf_isdn_sup_Free_T_FPHArg_PDU,
3112
14
      { "Free-T-FPHArg", "isdn-sup.Free_T_FPHArg_element",
3113
14
        FT_NONE, BASE_NONE, NULL, 0,
3114
14
        NULL, HFILL }},
3115
14
    { &hf_isdn_sup_Call_T_FPHArg_PDU,
3116
14
      { "Call-T-FPHArg", "isdn-sup.Call_T_FPHArg_element",
3117
14
        FT_NONE, BASE_NONE, NULL, 0,
3118
14
        NULL, HFILL }},
3119
14
    { &hf_isdn_sup_MLPPLFBArg_PDU,
3120
14
      { "MLPPLFBArg", "isdn-sup.MLPPLFBArg_element",
3121
14
        FT_NONE, BASE_NONE, NULL, 0,
3122
14
        NULL, HFILL }},
3123
14
    { &hf_isdn_sup_MLPPLFBResp_PDU,
3124
14
      { "MLPPLFBResp", "isdn-sup.MLPPLFBResp_element",
3125
14
        FT_NONE, BASE_NONE, NULL, 0,
3126
14
        NULL, HFILL }},
3127
14
    { &hf_isdn_sup_MLPPParams_PDU,
3128
14
      { "MLPPParams", "isdn-sup.MLPPParams_element",
3129
14
        FT_NONE, BASE_NONE, NULL, 0,
3130
14
        NULL, HFILL }},
3131
14
    { &hf_isdn_sup_StatusRequest_PDU,
3132
14
      { "StatusRequest", "isdn-sup.StatusRequest",
3133
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_StatusRequest_vals), 0,
3134
14
        NULL, HFILL }},
3135
14
    { &hf_isdn_sup_PreemptParams_PDU,
3136
14
      { "PreemptParams", "isdn-sup.PreemptParams",
3137
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PreemptParams_vals), 0,
3138
14
        NULL, HFILL }},
3139
14
    { &hf_isdn_sup_presentationallowedaddressscreened,
3140
14
      { "presentationAllowedAddress", "isdn-sup.presentationallowedaddressscreened_element",
3141
14
        FT_NONE, BASE_NONE, NULL, 0,
3142
14
        "AddressScreened", HFILL }},
3143
14
    { &hf_isdn_sup_presentationRestricted,
3144
14
      { "presentationRestricted", "isdn-sup.presentationRestricted_element",
3145
14
        FT_NONE, BASE_NONE, NULL, 0,
3146
14
        NULL, HFILL }},
3147
14
    { &hf_isdn_sup_numberNotAvailableDueToInterworking,
3148
14
      { "numberNotAvailableDueToInterworking", "isdn-sup.numberNotAvailableDueToInterworking_element",
3149
14
        FT_NONE, BASE_NONE, NULL, 0,
3150
14
        NULL, HFILL }},
3151
14
    { &hf_isdn_sup_presentationrestrictedaddressscreened,
3152
14
      { "presentationRestrictedAddress", "isdn-sup.presentationrestrictedaddressscreened_element",
3153
14
        FT_NONE, BASE_NONE, NULL, 0,
3154
14
        "AddressScreened", HFILL }},
3155
14
    { &hf_isdn_sup_presentationAllowedAddress,
3156
14
      { "presentationAllowedAddress", "isdn-sup.presentationAllowedAddress_element",
3157
14
        FT_NONE, BASE_NONE, NULL, 0,
3158
14
        "Address", HFILL }},
3159
14
    { &hf_isdn_sup_presentationRestrictedAddress,
3160
14
      { "presentationRestrictedAddress", "isdn-sup.presentationRestrictedAddress_element",
3161
14
        FT_NONE, BASE_NONE, NULL, 0,
3162
14
        "Address", HFILL }},
3163
14
    { &hf_isdn_sup_presentationallowednumberscreened,
3164
14
      { "presentationAllowedNumber", "isdn-sup.presentationallowednumberscreened_element",
3165
14
        FT_NONE, BASE_NONE, NULL, 0,
3166
14
        "NumberScreened", HFILL }},
3167
14
    { &hf_isdn_sup_presentationrestrictednumberscreened,
3168
14
      { "presentationRestrictedNumber", "isdn-sup.presentationrestrictednumberscreened_element",
3169
14
        FT_NONE, BASE_NONE, NULL, 0,
3170
14
        "NumberScreened", HFILL }},
3171
14
    { &hf_isdn_sup_presentationAllowedNumber,
3172
14
      { "presentationAllowedNumber", "isdn-sup.presentationAllowedNumber",
3173
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3174
14
        "PartyNumber", HFILL }},
3175
14
    { &hf_isdn_sup_presentationRestrictedNumber,
3176
14
      { "presentationRestrictedNumber", "isdn-sup.presentationRestrictedNumber",
3177
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3178
14
        "PartyNumber", HFILL }},
3179
14
    { &hf_isdn_sup_partyNumber,
3180
14
      { "partyNumber", "isdn-sup.partyNumber",
3181
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3182
14
        NULL, HFILL }},
3183
14
    { &hf_isdn_sup_screeningIndicator,
3184
14
      { "screeningIndicator", "isdn-sup.screeningIndicator",
3185
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ScreeningIndicator_vals), 0,
3186
14
        NULL, HFILL }},
3187
14
    { &hf_isdn_sup_partySubaddress,
3188
14
      { "partySubaddress", "isdn-sup.partySubaddress",
3189
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3190
14
        NULL, HFILL }},
3191
14
    { &hf_isdn_sup_unknownPartyNumber,
3192
14
      { "unknownPartyNumber", "isdn-sup.unknownPartyNumber",
3193
14
        FT_STRING, BASE_NONE, NULL, 0,
3194
14
        "NumberDigits", HFILL }},
3195
14
    { &hf_isdn_sup_publicPartyNumber,
3196
14
      { "publicPartyNumber", "isdn-sup.publicPartyNumber_element",
3197
14
        FT_NONE, BASE_NONE, NULL, 0,
3198
14
        NULL, HFILL }},
3199
14
    { &hf_isdn_sup_nsapEncodedNumber,
3200
14
      { "nsapEncodedNumber", "isdn-sup.nsapEncodedNumber",
3201
14
        FT_BYTES, BASE_NONE, NULL, 0,
3202
14
        NULL, HFILL }},
3203
14
    { &hf_isdn_sup_dataPartyNumber,
3204
14
      { "dataPartyNumber", "isdn-sup.dataPartyNumber",
3205
14
        FT_STRING, BASE_NONE, NULL, 0,
3206
14
        "NumberDigits", HFILL }},
3207
14
    { &hf_isdn_sup_telexPartyNumber,
3208
14
      { "telexPartyNumber", "isdn-sup.telexPartyNumber",
3209
14
        FT_STRING, BASE_NONE, NULL, 0,
3210
14
        "NumberDigits", HFILL }},
3211
14
    { &hf_isdn_sup_privatePartyNumber,
3212
14
      { "privatePartyNumber", "isdn-sup.privatePartyNumber_element",
3213
14
        FT_NONE, BASE_NONE, NULL, 0,
3214
14
        NULL, HFILL }},
3215
14
    { &hf_isdn_sup_nationalStandardPartyNumber,
3216
14
      { "nationalStandardPartyNumber", "isdn-sup.nationalStandardPartyNumber",
3217
14
        FT_STRING, BASE_NONE, NULL, 0,
3218
14
        "NumberDigits", HFILL }},
3219
14
    { &hf_isdn_sup_publicTypeOfNumber,
3220
14
      { "publicTypeOfNumber", "isdn-sup.publicTypeOfNumber",
3221
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PublicTypeOfNumber_vals), 0,
3222
14
        NULL, HFILL }},
3223
14
    { &hf_isdn_sup_publicNumberDigits,
3224
14
      { "publicNumberDigits", "isdn-sup.publicNumberDigits",
3225
14
        FT_STRING, BASE_NONE, NULL, 0,
3226
14
        "NumberDigits", HFILL }},
3227
14
    { &hf_isdn_sup_privateTypeOfNumber,
3228
14
      { "privateTypeOfNumber", "isdn-sup.privateTypeOfNumber",
3229
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PrivateTypeOfNumber_vals), 0,
3230
14
        NULL, HFILL }},
3231
14
    { &hf_isdn_sup_privateNumberDigits,
3232
14
      { "privateNumberDigits", "isdn-sup.privateNumberDigits",
3233
14
        FT_STRING, BASE_NONE, NULL, 0,
3234
14
        "NumberDigits", HFILL }},
3235
14
    { &hf_isdn_sup_userSpecifiedSubaddress,
3236
14
      { "userSpecifiedSubaddress", "isdn-sup.userSpecifiedSubaddress_element",
3237
14
        FT_NONE, BASE_NONE, NULL, 0,
3238
14
        NULL, HFILL }},
3239
14
    { &hf_isdn_sup_nSAPSubaddress,
3240
14
      { "nSAPSubaddress", "isdn-sup.nSAPSubaddress",
3241
14
        FT_BYTES, BASE_NONE, NULL, 0,
3242
14
        NULL, HFILL }},
3243
14
    { &hf_isdn_sup_subaddressInformation,
3244
14
      { "subaddressInformation", "isdn-sup.subaddressInformation",
3245
14
        FT_BYTES, BASE_NONE, NULL, 0,
3246
14
        NULL, HFILL }},
3247
14
    { &hf_isdn_sup_oddCountIndicator,
3248
14
      { "oddCountIndicator", "isdn-sup.oddCountIndicator",
3249
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
3250
14
        "BOOLEAN", HFILL }},
3251
14
    { &hf_isdn_sup_aOCSCurrencyInfoList,
3252
14
      { "aOCSCurrencyInfoList", "isdn-sup.aOCSCurrencyInfoList",
3253
14
        FT_UINT32, BASE_DEC, NULL, 0,
3254
14
        NULL, HFILL }},
3255
14
    { &hf_isdn_sup_aOCSSpecialArrInfo,
3256
14
      { "aOCSSpecialArrInfo", "isdn-sup.aOCSSpecialArrInfo",
3257
14
        FT_UINT32, BASE_DEC, NULL, 0,
3258
14
        NULL, HFILL }},
3259
14
    { &hf_isdn_sup_chargingInfoFollows,
3260
14
      { "chargingInfoFollows", "isdn-sup.chargingInfoFollows_element",
3261
14
        FT_NONE, BASE_NONE, NULL, 0,
3262
14
        NULL, HFILL }},
3263
14
    { &hf_isdn_sup_chargeNotAvailable,
3264
14
      { "chargeNotAvailable", "isdn-sup.chargeNotAvailable_element",
3265
14
        FT_NONE, BASE_NONE, NULL, 0,
3266
14
        NULL, HFILL }},
3267
14
    { &hf_isdn_sup_aOCDCurrencyInfo,
3268
14
      { "aOCDCurrencyInfo", "isdn-sup.aOCDCurrencyInfo",
3269
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDCurrencyInfo_vals), 0,
3270
14
        NULL, HFILL }},
3271
14
    { &hf_isdn_sup_aOCDChargingUnitInfo,
3272
14
      { "aOCDChargingUnitInfo", "isdn-sup.aOCDChargingUnitInfo",
3273
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDChargingUnitInfo_vals), 0,
3274
14
        NULL, HFILL }},
3275
14
    { &hf_isdn_sup_aOCECurrencyInfo,
3276
14
      { "aOCECurrencyInfo", "isdn-sup.aOCECurrencyInfo_element",
3277
14
        FT_NONE, BASE_NONE, NULL, 0,
3278
14
        NULL, HFILL }},
3279
14
    { &hf_isdn_sup_aOCEChargingUnitInfo,
3280
14
      { "aOCEChargingUnitInfo", "isdn-sup.aOCEChargingUnitInfo_element",
3281
14
        FT_NONE, BASE_NONE, NULL, 0,
3282
14
        NULL, HFILL }},
3283
14
    { &hf_isdn_sup_AOCSCurrencyInfoList_item,
3284
14
      { "AOCSCurrencyInfo", "isdn-sup.AOCSCurrencyInfo_element",
3285
14
        FT_NONE, BASE_NONE, NULL, 0,
3286
14
        NULL, HFILL }},
3287
14
    { &hf_isdn_sup_chargedItem,
3288
14
      { "chargedItem", "isdn-sup.chargedItem",
3289
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargedItem_vals), 0,
3290
14
        NULL, HFILL }},
3291
14
    { &hf_isdn_sup_chargingtype,
3292
14
      { "chargingtype", "isdn-sup.chargingtype",
3293
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_T_chargingtype_vals), 0,
3294
14
        NULL, HFILL }},
3295
14
    { &hf_isdn_sup_aocschargingtypespecificCurrency,
3296
14
      { "specificCurrency", "isdn-sup.aocschargingtypespecificCurrency",
3297
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSChargingTypeSpecificCurrency_vals), 0,
3298
14
        "AOCSChargingTypeSpecificCurrency", HFILL }},
3299
14
    { &hf_isdn_sup_durationCurrency,
3300
14
      { "durationCurrency", "isdn-sup.durationCurrency_element",
3301
14
        FT_NONE, BASE_NONE, NULL, 0,
3302
14
        NULL, HFILL }},
3303
14
    { &hf_isdn_sup_flatRateCurrency,
3304
14
      { "flatRateCurrency", "isdn-sup.flatRateCurrency_element",
3305
14
        FT_NONE, BASE_NONE, NULL, 0,
3306
14
        NULL, HFILL }},
3307
14
    { &hf_isdn_sup_volumeRateCurrency,
3308
14
      { "volumeRateCurrency", "isdn-sup.volumeRateCurrency_element",
3309
14
        FT_NONE, BASE_NONE, NULL, 0,
3310
14
        NULL, HFILL }},
3311
14
    { &hf_isdn_sup_specialChargingCode,
3312
14
      { "specialChargingCode", "isdn-sup.specialChargingCode",
3313
14
        FT_UINT32, BASE_DEC, NULL, 0,
3314
14
        NULL, HFILL }},
3315
14
    { &hf_isdn_sup_freeOfCharge,
3316
14
      { "freeOfCharge", "isdn-sup.freeOfCharge_element",
3317
14
        FT_NONE, BASE_NONE, NULL, 0,
3318
14
        NULL, HFILL }},
3319
14
    { &hf_isdn_sup_currencyInfoNotAvailable,
3320
14
      { "currencyInfoNotAvailable", "isdn-sup.currencyInfoNotAvailable_element",
3321
14
        FT_NONE, BASE_NONE, NULL, 0,
3322
14
        NULL, HFILL }},
3323
14
    { &hf_isdn_sup_dCurrency,
3324
14
      { "dCurrency", "isdn-sup.dCurrency",
3325
14
        FT_STRING, BASE_NONE, NULL, 0,
3326
14
        "Currency", HFILL }},
3327
14
    { &hf_isdn_sup_dAmount,
3328
14
      { "dAmount", "isdn-sup.dAmount_element",
3329
14
        FT_NONE, BASE_NONE, NULL, 0,
3330
14
        "Amount", HFILL }},
3331
14
    { &hf_isdn_sup_dChargingType,
3332
14
      { "dChargingType", "isdn-sup.dChargingType",
3333
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingType_vals), 0,
3334
14
        "ChargingType", HFILL }},
3335
14
    { &hf_isdn_sup_dTime,
3336
14
      { "dTime", "isdn-sup.dTime_element",
3337
14
        FT_NONE, BASE_NONE, NULL, 0,
3338
14
        "Time", HFILL }},
3339
14
    { &hf_isdn_sup_dGranularity,
3340
14
      { "dGranularity", "isdn-sup.dGranularity_element",
3341
14
        FT_NONE, BASE_NONE, NULL, 0,
3342
14
        "Time", HFILL }},
3343
14
    { &hf_isdn_sup_fRCurrency,
3344
14
      { "fRCurrency", "isdn-sup.fRCurrency",
3345
14
        FT_STRING, BASE_NONE, NULL, 0,
3346
14
        "Currency", HFILL }},
3347
14
    { &hf_isdn_sup_fRAmount,
3348
14
      { "fRAmount", "isdn-sup.fRAmount_element",
3349
14
        FT_NONE, BASE_NONE, NULL, 0,
3350
14
        "Amount", HFILL }},
3351
14
    { &hf_isdn_sup_vRCurrency,
3352
14
      { "vRCurrency", "isdn-sup.vRCurrency",
3353
14
        FT_STRING, BASE_NONE, NULL, 0,
3354
14
        "Currency", HFILL }},
3355
14
    { &hf_isdn_sup_vRAmount,
3356
14
      { "vRAmount", "isdn-sup.vRAmount_element",
3357
14
        FT_NONE, BASE_NONE, NULL, 0,
3358
14
        "Amount", HFILL }},
3359
14
    { &hf_isdn_sup_vRVolumeUnit,
3360
14
      { "vRVolumeUnit", "isdn-sup.vRVolumeUnit",
3361
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_VolumeUnit_vals), 0,
3362
14
        "VolumeUnit", HFILL }},
3363
14
    { &hf_isdn_sup_aocdspecificCurrency,
3364
14
      { "specificCurrency", "isdn-sup.aocdspecificCurrency_element",
3365
14
        FT_NONE, BASE_NONE, NULL, 0,
3366
14
        "AOCDSpecificCurrency", HFILL }},
3367
14
    { &hf_isdn_sup_recordedCurrency,
3368
14
      { "recordedCurrency", "isdn-sup.recordedCurrency_element",
3369
14
        FT_NONE, BASE_NONE, NULL, 0,
3370
14
        NULL, HFILL }},
3371
14
    { &hf_isdn_sup_typeOfChargingInfo,
3372
14
      { "typeOfChargingInfo", "isdn-sup.typeOfChargingInfo",
3373
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_TypeOfChargingInfo_vals), 0,
3374
14
        NULL, HFILL }},
3375
14
    { &hf_isdn_sup_aOCDBillingId,
3376
14
      { "aOCDBillingId", "isdn-sup.aOCDBillingId",
3377
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDBillingId_vals), 0,
3378
14
        NULL, HFILL }},
3379
14
    { &hf_isdn_sup_aocdspecificchargingunits,
3380
14
      { "specificChargingUnits", "isdn-sup.aocdspecificchargingunits_element",
3381
14
        FT_NONE, BASE_NONE, NULL, 0,
3382
14
        "AOCDSpecificChargingUnits", HFILL }},
3383
14
    { &hf_isdn_sup_recordedUnitsList,
3384
14
      { "recordedUnitsList", "isdn-sup.recordedUnitsList",
3385
14
        FT_UINT32, BASE_DEC, NULL, 0,
3386
14
        NULL, HFILL }},
3387
14
    { &hf_isdn_sup_rCurrency,
3388
14
      { "rCurrency", "isdn-sup.rCurrency",
3389
14
        FT_STRING, BASE_NONE, NULL, 0,
3390
14
        "Currency", HFILL }},
3391
14
    { &hf_isdn_sup_rAmount,
3392
14
      { "rAmount", "isdn-sup.rAmount_element",
3393
14
        FT_NONE, BASE_NONE, NULL, 0,
3394
14
        "Amount", HFILL }},
3395
14
    { &hf_isdn_sup_RecordedUnitsList_item,
3396
14
      { "RecordedUnits", "isdn-sup.RecordedUnits_element",
3397
14
        FT_NONE, BASE_NONE, NULL, 0,
3398
14
        NULL, HFILL }},
3399
14
    { &hf_isdn_sup_recoredunitscc,
3400
14
      { "cc", "isdn-sup.recoredunitscc",
3401
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_RecoredUnitsCc_vals), 0,
3402
14
        "RecoredUnitsCc", HFILL }},
3403
14
    { &hf_isdn_sup_recordedNumberOfUnits,
3404
14
      { "recordedNumberOfUnits", "isdn-sup.recordedNumberOfUnits",
3405
14
        FT_UINT32, BASE_DEC, NULL, 0,
3406
14
        "NumberOfUnits", HFILL }},
3407
14
    { &hf_isdn_sup_notAvailable,
3408
14
      { "notAvailable", "isdn-sup.notAvailable_element",
3409
14
        FT_NONE, BASE_NONE, NULL, 0,
3410
14
        NULL, HFILL }},
3411
14
    { &hf_isdn_sup_recordedTypeOfUnits,
3412
14
      { "recordedTypeOfUnits", "isdn-sup.recordedTypeOfUnits",
3413
14
        FT_UINT32, BASE_DEC, NULL, 0,
3414
14
        "TypeOfUnit", HFILL }},
3415
14
    { &hf_isdn_sup_aocecurrencycc,
3416
14
      { "cc", "isdn-sup.aocecurrencycc",
3417
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCECurrencyCc_vals), 0,
3418
14
        "AOCECurrencyCc", HFILL }},
3419
14
    { &hf_isdn_sup_aoceccspecificCurrency,
3420
14
      { "specificCurrency", "isdn-sup.aoceccspecificCurrency_element",
3421
14
        FT_NONE, BASE_NONE, NULL, 0,
3422
14
        "AOCECcSpecificCurrency", HFILL }},
3423
14
    { &hf_isdn_sup_aOCEBillingId,
3424
14
      { "aOCEBillingId", "isdn-sup.aOCEBillingId",
3425
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEBillingId_vals), 0,
3426
14
        NULL, HFILL }},
3427
14
    { &hf_isdn_sup_chargingAssociation,
3428
14
      { "chargingAssociation", "isdn-sup.chargingAssociation",
3429
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingAssociation_vals), 0,
3430
14
        NULL, HFILL }},
3431
14
    { &hf_isdn_sup_aocechargingunitcc,
3432
14
      { "cc", "isdn-sup.aocechargingunitcc",
3433
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEChargingUnitCc_vals), 0,
3434
14
        "AOCEChargingUnitCc", HFILL }},
3435
14
    { &hf_isdn_sup_aoceccspecificchargingunits,
3436
14
      { "specificChargingUnits", "isdn-sup.aoceccspecificchargingunits_element",
3437
14
        FT_NONE, BASE_NONE, NULL, 0,
3438
14
        "AOCECcSpecificChargingUnits", HFILL }},
3439
14
    { &hf_isdn_sup_currencyAmount,
3440
14
      { "currencyAmount", "isdn-sup.currencyAmount",
3441
14
        FT_UINT32, BASE_DEC, NULL, 0,
3442
14
        NULL, HFILL }},
3443
14
    { &hf_isdn_sup_multiplier,
3444
14
      { "multiplier", "isdn-sup.multiplier",
3445
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_Multiplier_vals), 0,
3446
14
        NULL, HFILL }},
3447
14
    { &hf_isdn_sup_lengthOfTimeUnit,
3448
14
      { "lengthOfTimeUnit", "isdn-sup.lengthOfTimeUnit",
3449
14
        FT_UINT32, BASE_DEC, NULL, 0,
3450
14
        NULL, HFILL }},
3451
14
    { &hf_isdn_sup_scale,
3452
14
      { "scale", "isdn-sup.scale",
3453
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_Scale_vals), 0,
3454
14
        NULL, HFILL }},
3455
14
    { &hf_isdn_sup_chargeNumber,
3456
14
      { "chargeNumber", "isdn-sup.chargeNumber",
3457
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3458
14
        "PartyNumber", HFILL }},
3459
14
    { &hf_isdn_sup_chargeIdentifier,
3460
14
      { "chargeIdentifier", "isdn-sup.chargeIdentifier",
3461
14
        FT_INT32, BASE_DEC, NULL, 0,
3462
14
        NULL, HFILL }},
3463
14
    { &hf_isdn_sup_oARequested,
3464
14
      { "oARequested", "isdn-sup.oARequested",
3465
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
3466
14
        NULL, HFILL }},
3467
14
    { &hf_isdn_sup_cUGIndex,
3468
14
      { "cUGIndex", "isdn-sup.cUGIndex",
3469
14
        FT_UINT32, BASE_DEC, NULL, 0,
3470
14
        NULL, HFILL }},
3471
14
    { &hf_isdn_sup_conferenceId,
3472
14
      { "conferenceId", "isdn-sup.conferenceId",
3473
14
        FT_UINT32, BASE_DEC, NULL, 0,
3474
14
        NULL, HFILL }},
3475
14
    { &hf_isdn_sup_partyId,
3476
14
      { "partyId", "isdn-sup.partyId",
3477
14
        FT_UINT32, BASE_DEC, NULL, 0,
3478
14
        NULL, HFILL }},
3479
14
    { &hf_isdn_sup_procedure,
3480
14
      { "procedure", "isdn-sup.procedure",
3481
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_Procedure_vals), 0,
3482
14
        NULL, HFILL }},
3483
14
    { &hf_isdn_sup_basicService,
3484
14
      { "basicService", "isdn-sup.basicService",
3485
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_BasicService_vals), 0,
3486
14
        NULL, HFILL }},
3487
14
    { &hf_isdn_sup_forwardedToAddress,
3488
14
      { "forwardedToAddress", "isdn-sup.forwardedToAddress_element",
3489
14
        FT_NONE, BASE_NONE, NULL, 0,
3490
14
        "Address", HFILL }},
3491
14
    { &hf_isdn_sup_servedUserNr,
3492
14
      { "servedUserNr", "isdn-sup.servedUserNr",
3493
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_ServedUserNr_vals), 0,
3494
14
        NULL, HFILL }},
3495
14
    { &hf_isdn_sup_noReplyTimer,
3496
14
      { "noReplyTimer", "isdn-sup.noReplyTimer",
3497
14
        FT_UINT32, BASE_DEC, NULL, 0,
3498
14
        NULL, HFILL }},
3499
14
    { &hf_isdn_sup_forwardedToAddresss,
3500
14
      { "forwardedToAddresss", "isdn-sup.forwardedToAddresss_element",
3501
14
        FT_NONE, BASE_NONE, NULL, 0,
3502
14
        "Address", HFILL }},
3503
14
    { &hf_isdn_sup_diversionReason,
3504
14
      { "diversionReason", "isdn-sup.diversionReason",
3505
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3506
14
        NULL, HFILL }},
3507
14
    { &hf_isdn_sup_servedUserSubaddress,
3508
14
      { "servedUserSubaddress", "isdn-sup.servedUserSubaddress",
3509
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3510
14
        "PartySubaddress", HFILL }},
3511
14
    { &hf_isdn_sup_callingAddress,
3512
14
      { "callingAddress", "isdn-sup.callingAddress",
3513
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedAddressScreened_vals), 0,
3514
14
        "PresentedAddressScreened", HFILL }},
3515
14
    { &hf_isdn_sup_originalCalledNr,
3516
14
      { "originalCalledNr", "isdn-sup.originalCalledNr",
3517
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3518
14
        "PresentedNumberUnscreened", HFILL }},
3519
14
    { &hf_isdn_sup_lastDivertingNr,
3520
14
      { "lastDivertingNr", "isdn-sup.lastDivertingNr",
3521
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3522
14
        "PresentedNumberUnscreened", HFILL }},
3523
14
    { &hf_isdn_sup_lastDivertingReason,
3524
14
      { "lastDivertingReason", "isdn-sup.lastDivertingReason",
3525
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3526
14
        "DiversionReason", HFILL }},
3527
14
    { &hf_isdn_sup_userInfo,
3528
14
      { "userInfo", "isdn-sup.userInfo",
3529
14
        FT_BYTES, BASE_NONE, NULL, 0,
3530
14
        "Q931InformationElement", HFILL }},
3531
14
    { &hf_isdn_sup_deflectionAddress,
3532
14
      { "deflectionAddress", "isdn-sup.deflectionAddress_element",
3533
14
        FT_NONE, BASE_NONE, NULL, 0,
3534
14
        "Address", HFILL }},
3535
14
    { &hf_isdn_sup_presentationAllowedDivertedToUser,
3536
14
      { "presentationAllowedDivertedToUser", "isdn-sup.presentationAllowedDivertedToUser",
3537
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
3538
14
        "PresentationAllowedIndicator", HFILL }},
3539
14
    { &hf_isdn_sup_rerouteingReason,
3540
14
      { "rerouteingReason", "isdn-sup.rerouteingReason",
3541
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3542
14
        "DiversionReason", HFILL }},
3543
14
    { &hf_isdn_sup_calledAddress,
3544
14
      { "calledAddress", "isdn-sup.calledAddress_element",
3545
14
        FT_NONE, BASE_NONE, NULL, 0,
3546
14
        "Address", HFILL }},
3547
14
    { &hf_isdn_sup_rerouteingCounter,
3548
14
      { "rerouteingCounter", "isdn-sup.rerouteingCounter",
3549
14
        FT_UINT32, BASE_DEC, NULL, 0,
3550
14
        "DiversionCounter", HFILL }},
3551
14
    { &hf_isdn_sup_q931InfoElement,
3552
14
      { "q931InfoElement", "isdn-sup.q931InfoElement",
3553
14
        FT_BYTES, BASE_NONE, NULL, 0,
3554
14
        "Q931InformationElement", HFILL }},
3555
14
    { &hf_isdn_sup_lastRerouteingNr,
3556
14
      { "lastRerouteingNr", "isdn-sup.lastRerouteingNr",
3557
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3558
14
        "PresentedNumberUnscreened", HFILL }},
3559
14
    { &hf_isdn_sup_subscriptionOption,
3560
14
      { "subscriptionOption", "isdn-sup.subscriptionOption",
3561
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_SubscriptionOption_vals), 0,
3562
14
        NULL, HFILL }},
3563
14
    { &hf_isdn_sup_callingPartySubaddress,
3564
14
      { "callingPartySubaddress", "isdn-sup.callingPartySubaddress",
3565
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3566
14
        "PartySubaddress", HFILL }},
3567
14
    { &hf_isdn_sup_divertedToNumber,
3568
14
      { "divertedToNumber", "isdn-sup.divertedToNumber",
3569
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3570
14
        "PresentedNumberUnscreened", HFILL }},
3571
14
    { &hf_isdn_sup_diversionCounter,
3572
14
      { "diversionCounter", "isdn-sup.diversionCounter",
3573
14
        FT_UINT32, BASE_DEC, NULL, 0,
3574
14
        NULL, HFILL }},
3575
14
    { &hf_isdn_sup_divertingNr,
3576
14
      { "divertingNr", "isdn-sup.divertingNr",
3577
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3578
14
        "PresentedNumberUnscreened", HFILL }},
3579
14
    { &hf_isdn_sup_IntResultList_item,
3580
14
      { "IntResult", "isdn-sup.IntResult_element",
3581
14
        FT_NONE, BASE_NONE, NULL, 0,
3582
14
        NULL, HFILL }},
3583
14
    { &hf_isdn_sup_individualNumber,
3584
14
      { "individualNumber", "isdn-sup.individualNumber",
3585
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3586
14
        "PartyNumber", HFILL }},
3587
14
    { &hf_isdn_sup_allNumbers,
3588
14
      { "allNumbers", "isdn-sup.allNumbers_element",
3589
14
        FT_NONE, BASE_NONE, NULL, 0,
3590
14
        NULL, HFILL }},
3591
14
    { &hf_isdn_sup_ServedUserNumberList_item,
3592
14
      { "PartyNumber", "isdn-sup.PartyNumber",
3593
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3594
14
        NULL, HFILL }},
3595
14
    { &hf_isdn_sup_service,
3596
14
      { "service", "isdn-sup.service",
3597
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_Service_vals), 0,
3598
14
        NULL, HFILL }},
3599
14
    { &hf_isdn_sup_preferred,
3600
14
      { "preferred", "isdn-sup.preferred",
3601
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
3602
14
        NULL, HFILL }},
3603
14
    { &hf_isdn_sup_servedUserDestination,
3604
14
      { "servedUserDestination", "isdn-sup.servedUserDestination",
3605
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3606
14
        "PartyNumber", HFILL }},
3607
14
    { &hf_isdn_sup_queueIdentity,
3608
14
      { "queueIdentity", "isdn-sup.queueIdentity",
3609
14
        FT_UINT32, BASE_DEC, NULL, 0,
3610
14
        NULL, HFILL }},
3611
14
    { &hf_isdn_sup_fPHReference,
3612
14
      { "fPHReference", "isdn-sup.fPHReference",
3613
14
        FT_UINT32, BASE_DEC, NULL, 0,
3614
14
        NULL, HFILL }},
3615
14
    { &hf_isdn_sup_calledFreephoneNr,
3616
14
      { "calledFreephoneNr", "isdn-sup.calledFreephoneNr",
3617
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3618
14
        NULL, HFILL }},
3619
14
    { &hf_isdn_sup_mlppParams,
3620
14
      { "mlppParams", "isdn-sup.mlppParams_element",
3621
14
        FT_NONE, BASE_NONE, NULL, 0,
3622
14
        NULL, HFILL }},
3623
14
    { &hf_isdn_sup_ieArg,
3624
14
      { "ieArg", "isdn-sup.ieArg",
3625
14
        FT_BYTES, BASE_NONE, NULL, 0,
3626
14
        NULL, HFILL }},
3627
14
    { &hf_isdn_sup_precLevel,
3628
14
      { "precLevel", "isdn-sup.precLevel",
3629
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_PrecLevel_vals), 0,
3630
14
        NULL, HFILL }},
3631
14
    { &hf_isdn_sup_lfbIndictn,
3632
14
      { "lfbIndictn", "isdn-sup.lfbIndictn",
3633
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_LFBIndictn_vals), 0,
3634
14
        NULL, HFILL }},
3635
14
    { &hf_isdn_sup_mlppSvcDomn,
3636
14
      { "mlppSvcDomn", "isdn-sup.mlppSvcDomn",
3637
14
        FT_BYTES, BASE_NONE, NULL, 0,
3638
14
        NULL, HFILL }},
3639
14
    { &hf_isdn_sup_statusQuery,
3640
14
      { "statusQuery", "isdn-sup.statusQuery",
3641
14
        FT_UINT32, BASE_DEC, VALS(isdn_sup_StatusQuery_vals), 0,
3642
14
        NULL, HFILL }},
3643
14
    { &hf_isdn_sup_location,
3644
14
      { "location", "isdn-sup.location",
3645
14
        FT_BYTES, BASE_NONE, NULL, 0,
3646
14
        NULL, HFILL }},
3647
14
  };
3648
3649
  /* List of subtrees */
3650
14
  static int *ett[] = {
3651
14
    &ett_isdn_sup,
3652
3653
14
    &ett_isdn_sup_PresentedAddressScreened,
3654
14
    &ett_isdn_sup_PresentedAddressUnscreened,
3655
14
    &ett_isdn_sup_PresentedNumberScreened,
3656
14
    &ett_isdn_sup_PresentedNumberUnscreened,
3657
14
    &ett_isdn_sup_AddressScreened,
3658
14
    &ett_isdn_sup_NumberScreened,
3659
14
    &ett_isdn_sup_Address,
3660
14
    &ett_isdn_sup_PartyNumber,
3661
14
    &ett_isdn_sup_PublicPartyNumber,
3662
14
    &ett_isdn_sup_PrivatePartyNumber,
3663
14
    &ett_isdn_sup_PartySubaddress,
3664
14
    &ett_isdn_sup_UserSpecifiedSubaddress,
3665
14
    &ett_isdn_sup_ChargingRequestRes,
3666
14
    &ett_isdn_sup_AOCSCurrencyArg,
3667
14
    &ett_isdn_sup_AOCSSpecialArrArg,
3668
14
    &ett_isdn_sup_AOCDCurrencyArg,
3669
14
    &ett_isdn_sup_AOCDChargingUnitArg,
3670
14
    &ett_isdn_sup_AOCECurrencyArg,
3671
14
    &ett_isdn_sup_AOCEChargingUnitArg,
3672
14
    &ett_isdn_sup_AOCSCurrencyInfoList,
3673
14
    &ett_isdn_sup_AOCSCurrencyInfo,
3674
14
    &ett_isdn_sup_T_chargingtype,
3675
14
    &ett_isdn_sup_AOCSChargingTypeSpecificCurrency,
3676
14
    &ett_isdn_sup_DurationCurrency,
3677
14
    &ett_isdn_sup_FlatRateCurrency,
3678
14
    &ett_isdn_sup_VolumeRateCurrency,
3679
14
    &ett_isdn_sup_AOCDCurrencyInfo,
3680
14
    &ett_isdn_sup_AOCDSpecificCurrency,
3681
14
    &ett_isdn_sup_AOCDChargingUnitInfo,
3682
14
    &ett_isdn_sup_AOCDSpecificChargingUnits,
3683
14
    &ett_isdn_sup_RecordedCurrency,
3684
14
    &ett_isdn_sup_RecordedUnitsList,
3685
14
    &ett_isdn_sup_RecordedUnits,
3686
14
    &ett_isdn_sup_RecoredUnitsCc,
3687
14
    &ett_isdn_sup_AOCECurrencyInfo,
3688
14
    &ett_isdn_sup_AOCECurrencyCc,
3689
14
    &ett_isdn_sup_AOCECcSpecificCurrency,
3690
14
    &ett_isdn_sup_AOCEChargingUnitInfo,
3691
14
    &ett_isdn_sup_AOCEChargingUnitCc,
3692
14
    &ett_isdn_sup_AOCECcSpecificChargingUnits,
3693
14
    &ett_isdn_sup_Amount,
3694
14
    &ett_isdn_sup_Time,
3695
14
    &ett_isdn_sup_ChargingAssociation,
3696
14
    &ett_isdn_sup_CUGcallArg,
3697
14
    &ett_isdn_sup_BeginCONFRes,
3698
14
    &ett_isdn_sup_SplitCONFArg,
3699
14
    &ett_isdn_sup_ActivationDiversionArg,
3700
14
    &ett_isdn_sup_DeactivationDiversionArg,
3701
14
    &ett_isdn_sup_ActivationStatusNotificationDivArg,
3702
14
    &ett_isdn_sup_DeactivationStatusNotificationDivArg,
3703
14
    &ett_isdn_sup_InterrogationDiversionArg,
3704
14
    &ett_isdn_sup_DiversionInformationArg,
3705
14
    &ett_isdn_sup_CallDeflectionArg,
3706
14
    &ett_isdn_sup_CallRerouteingArg,
3707
14
    &ett_isdn_sup_DivertingLegInformation1Arg,
3708
14
    &ett_isdn_sup_DivertingLegInformation2Arg,
3709
14
    &ett_isdn_sup_IntResultList,
3710
14
    &ett_isdn_sup_IntResult,
3711
14
    &ett_isdn_sup_ServedUserNr,
3712
14
    &ett_isdn_sup_ServedUserNumberList,
3713
14
    &ett_isdn_sup_UserUserServiceArg,
3714
14
    &ett_isdn_sup_Monitor_T_FPHArg,
3715
14
    &ett_isdn_sup_Free_T_FPHArg,
3716
14
    &ett_isdn_sup_Call_T_FPHArg,
3717
14
    &ett_isdn_sup_MLPPLFBArg,
3718
14
    &ett_isdn_sup_MLPPParams,
3719
14
    &ett_isdn_sup_MLPPLFBResp,
3720
14
  };
3721
3722
14
  static ei_register_info ei[] = {
3723
#if 0
3724
    { &ei_isdn_sup_unsupported_arg_type, { "isdn_sup.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (ETSI sup)", EXPFILL }},
3725
#endif
3726
14
    { &ei_isdn_sup_unsupported_result_type, { "isdn_sup.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (ETSI sup)", EXPFILL }},
3727
14
    { &ei_isdn_sup_unsupported_error_type, { "isdn_sup.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (ETSI sup)", EXPFILL }},
3728
14
  };
3729
3730
14
  expert_module_t* expert_isdn_sup;
3731
3732
  /* Register protocol */
3733
14
  proto_isdn_sup = proto_register_protocol(PNAME, PSNAME, PFNAME);
3734
3735
  /* Register fields and subtrees */
3736
14
  proto_register_field_array(proto_isdn_sup, hf, array_length(hf));
3737
14
  proto_register_subtree_array(ett, array_length(ett));
3738
14
  expert_isdn_sup = expert_register_protocol(proto_isdn_sup);
3739
14
  expert_register_field_array(expert_isdn_sup, ei, array_length(ei));
3740
3741
  /* Register dissectors */
3742
14
  isdn_sup_arg_handle = register_dissector(PFNAME "_arg", dissect_isdn_sup_arg, proto_isdn_sup);
3743
14
  isdn_sup_res_handle = register_dissector(PFNAME "_res", dissect_isdn_sup_res, proto_isdn_sup);
3744
14
  isdn_sup_err_handle = register_dissector(PFNAME "_err", dissect_isdn_sup_err, proto_isdn_sup);
3745
14
}