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 */
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>
11 * Wireshark - Network traffic analyzer
12 * By Gerald Combs <gerald@wireshark.org>
13 * Copyright 1998 Gerald Combs
15 * SPDX-License-Identifier: GPL-2.0-or-later
16 * References: ETSI 300 374
21 #include <epan/packet.h>
22 #include <epan/expert.h>
23 #include <wsutil/array.h>
25 #include "packet-ber.h"
27 #define PNAME "ISDN supplementary services"
28 #define PSNAME "ISDN_SUP"
29 #define PFNAME "isdn_sup"
31 void proto_register_isdn_sup(void);
32 void proto_reg_handoff_isdn_sup(void);
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
;
38 #define fPHOID "0.4.0.210.1"
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
;
45 /* Global variables */
49 static rose_ctx_t isdn_sup_rose_ctx
;
52 typedef struct _isdn_sup_op_t
{
58 typedef struct _isdn_global_sup_op_t
{
62 } isdn_sup_global_op_t
;
65 typedef struct isdn_sup_err_t
{
70 static const value_string isdn_sup_str_operation
[] = {
71 { 1, "userUserService" },
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" },
100 { 44, "isolateCONF" },
101 { 45, "reattachCONF" },
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" },
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" },
142 static int hf_isdn_sup
;
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 */
314 /* Initialize the subtree pointers */
315 static int ett_isdn_sup
;
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
;
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
;
389 /* Preference settings default */
391 /* Global variables */
396 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 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_NumericString
,
398 actx
, tree
, tvb
, offset
, hf_index
,
405 static const value_string isdn_sup_PublicTypeOfNumber_vals
[] = {
407 { 1, "internationalNumber" },
408 { 2, "nationalNumber" },
409 { 3, "networkSpecificNumber" },
410 { 4, "subscriberNumber" },
411 { 6, "abbreviatedNumber" },
417 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
432 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
434 PublicPartyNumber_sequence
, hf_index
, ett_isdn_sup_PublicPartyNumber
);
442 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 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
450 static const value_string isdn_sup_PrivateTypeOfNumber_vals
[] = {
452 { 1, "level2RegionalNumber" },
453 { 2, "level1RegionalNumber" },
454 { 3, "pTNSpecificNumber" },
455 { 4, "localNumber" },
456 { 6, "abbreviatedNumber" },
462 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
477 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
479 PrivatePartyNumber_sequence
, hf_index
, ett_isdn_sup_PrivatePartyNumber
);
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" },
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
}
508 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
510 PartyNumber_choice
, hf_index
, ett_isdn_sup_PartyNumber
,
517 static const value_string isdn_sup_ScreeningIndicator_vals
[] = {
518 { 0, "userProvidedNotScreened" },
519 { 1, "userProvidedVerifiedAndPassed" },
520 { 2, "userProvidedVerifiedAndFailed" },
521 { 3, "networkProvided" },
527 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
537 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 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
547 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 offset
= dissect_ber_boolean(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
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
}
561 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
563 UserSpecifiedSubaddress_sequence
, hf_index
, ett_isdn_sup_UserSpecifiedSubaddress
);
571 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 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
579 static const value_string isdn_sup_PartySubaddress_vals
[] = {
580 { 0, "userSpecifiedSubaddress" },
581 { 1, "nSAPSubaddress" },
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
}
592 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
594 PartySubaddress_choice
, hf_index
, ett_isdn_sup_PartySubaddress
,
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
}
609 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
611 AddressScreened_sequence
, hf_index
, ett_isdn_sup_AddressScreened
);
619 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 offset
= dissect_ber_null(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
);
626 static const value_string isdn_sup_PresentedAddressScreened_vals
[] = {
627 { 0, "presentationAllowedAddress" },
628 { 1, "presentationRestricted" },
629 { 2, "numberNotAvailableDueToInterworking" },
630 { 3, "presentationRestrictedAddress" },
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
}
643 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
645 PresentedAddressScreened_choice
, hf_index
, ett_isdn_sup_PresentedAddressScreened
,
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
}
659 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
661 Address_sequence
, hf_index
, ett_isdn_sup_Address
);
670 static const value_string isdn_sup_PresentedNumberUnscreened_vals
[] = {
671 { 0, "presentationAllowedNumber" },
672 { 1, "presentationRestricted" },
673 { 2, "numberNotAvailableDueToInterworking" },
674 { 3, "presentationRestrictedNumber" },
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
}
687 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
689 PresentedNumberUnscreened_choice
, hf_index
, ett_isdn_sup_PresentedNumberUnscreened
,
698 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 offset
= dissect_ber_boolean(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
705 static const value_string isdn_sup_BasicService_vals
[] = {
706 { 0, "allServices" },
708 { 2, "unrestrictedDigitalInformation" },
710 { 4, "unrestrictedDigitalInformationWithTonesAndAnnouncements" },
712 { 32, "telephony3k1Hz" },
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" },
728 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
738 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 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
748 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 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
750 hf_index
, BER_CLASS_APP
, 0, true, dissect_isdn_sup_OCTET_STRING
);
756 static const value_string isdn_sup_ChargingCase_vals
[] = {
757 { 0, "chargingInformationAtCallSetup" },
758 { 1, "chargingDuringACall" },
759 { 2, "chargingAtTheEndOfACall" },
765 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
775 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 offset
= dissect_isdn_sup_ChargingCase(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
782 static const value_string isdn_sup_ChargedItem_vals
[] = {
783 { 0, "basicCommunication" },
784 { 1, "callAttempt" },
786 { 3, "userToUserInfo" },
787 { 4, "operationOfSupplementaryServ" },
793 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
803 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 offset
= dissect_ber_restricted_string(implicit_tag
, BER_UNI_TAG_IA5String
,
805 actx
, tree
, tvb
, offset
, hf_index
,
814 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
822 static const value_string isdn_sup_Multiplier_vals
[] = {
823 { 0, "oneThousandth" },
824 { 1, "oneHundredth" },
835 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
850 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
852 Amount_sequence
, hf_index
, ett_isdn_sup_Amount
);
858 static const value_string isdn_sup_ChargingType_vals
[] = {
859 { 0, "continuousCharging" },
860 { 1, "stepFunction" },
866 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
876 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
884 static const value_string isdn_sup_Scale_vals
[] = {
885 { 0, "oneHundredthSecond" },
886 { 1, "oneTenthSecond" },
891 { 6, "twentyFourHours" },
897 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
912 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
914 Time_sequence
, hf_index
, ett_isdn_sup_Time
);
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
}
930 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
932 DurationCurrency_sequence
, hf_index
, ett_isdn_sup_DurationCurrency
);
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
}
945 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
947 FlatRateCurrency_sequence
, hf_index
, ett_isdn_sup_FlatRateCurrency
);
953 static const value_string isdn_sup_VolumeUnit_vals
[] = {
962 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
978 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
980 VolumeRateCurrency_sequence
, hf_index
, ett_isdn_sup_VolumeRateCurrency
);
986 static const value_string isdn_sup_AOCSChargingTypeSpecificCurrency_vals
[] = {
987 { 1, "durationCurrency" },
988 { 2, "flatRateCurrency" },
989 { 3, "volumeRateCurrency" },
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
}
1001 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1003 AOCSChargingTypeSpecificCurrency_choice
, hf_index
, ett_isdn_sup_AOCSChargingTypeSpecificCurrency
,
1012 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1020 static const value_string isdn_sup_T_chargingtype_vals
[] = {
1021 { 0, "specificCurrency" },
1022 { 1, "specialChargingCode" },
1023 { 2, "freeOfCharge" },
1024 { 3, "currencyInfoNotAvailable" },
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
}
1037 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1039 T_chargingtype_choice
, hf_index
, ett_isdn_sup_T_chargingtype
,
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
}
1053 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1055 AOCSCurrencyInfo_sequence
, hf_index
, ett_isdn_sup_AOCSCurrencyInfo
);
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
},
1066 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 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1068 AOCSCurrencyInfoList_sequence_of
, hf_index
, ett_isdn_sup_AOCSCurrencyInfoList
);
1076 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1084 static const value_string isdn_sup_ChargingRequestRes_vals
[] = {
1085 { 0, "aOCSCurrencyInfoList" },
1086 { 1, "aOCSSpecialArrInfo" },
1087 { 2, "chargingInfoFollows" },
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
}
1099 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1101 ChargingRequestRes_choice
, hf_index
, ett_isdn_sup_ChargingRequestRes
,
1108 static const value_string isdn_sup_AOCSCurrencyArg_vals
[] = {
1109 { 0, "chargeNotAvailable" },
1110 { 1, "aOCSCurrencyInfoList" },
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
}
1121 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1123 AOCSCurrencyArg_choice
, hf_index
, ett_isdn_sup_AOCSCurrencyArg
,
1130 static const value_string isdn_sup_AOCSSpecialArrArg_vals
[] = {
1131 { 0, "chargeNotAvailable" },
1132 { 1, "aOCSSpecialArrInfo" },
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
}
1143 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1145 AOCSSpecialArrArg_choice
, hf_index
, ett_isdn_sup_AOCSSpecialArrArg
,
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
}
1159 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1161 RecordedCurrency_sequence
, hf_index
, ett_isdn_sup_RecordedCurrency
);
1167 static const value_string isdn_sup_TypeOfChargingInfo_vals
[] = {
1175 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1183 static const value_string isdn_sup_AOCDBillingId_vals
[] = {
1184 { 0, "normalCharging" },
1185 { 1, "reverseCharging" },
1186 { 2, "creditCardCharging" },
1192 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1208 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1210 AOCDSpecificCurrency_sequence
, hf_index
, ett_isdn_sup_AOCDSpecificCurrency
);
1216 static const value_string isdn_sup_AOCDCurrencyInfo_vals
[] = {
1217 { 0, "specificCurrency" },
1218 { 1, "freeOfCharge" },
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
}
1229 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1231 AOCDCurrencyInfo_choice
, hf_index
, ett_isdn_sup_AOCDCurrencyInfo
,
1238 static const value_string isdn_sup_AOCDCurrencyArg_vals
[] = {
1239 { 0, "chargeNotAvailable" },
1240 { 1, "aOCDCurrencyInfo" },
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
}
1251 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1253 AOCDCurrencyArg_choice
, hf_index
, ett_isdn_sup_AOCDCurrencyArg
,
1262 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1270 static const value_string isdn_sup_RecoredUnitsCc_vals
[] = {
1271 { 0, "recordedNumberOfUnits" },
1272 { 1, "notAvailable" },
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
}
1283 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1285 RecoredUnitsCc_choice
, hf_index
, ett_isdn_sup_RecoredUnitsCc
,
1294 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1309 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1311 RecordedUnits_sequence
, hf_index
, ett_isdn_sup_RecordedUnits
);
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
},
1322 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 offset
= dissect_ber_sequence_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1324 RecordedUnitsList_sequence_of
, hf_index
, ett_isdn_sup_RecordedUnitsList
);
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
}
1338 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1340 AOCDSpecificChargingUnits_sequence
, hf_index
, ett_isdn_sup_AOCDSpecificChargingUnits
);
1346 static const value_string isdn_sup_AOCDChargingUnitInfo_vals
[] = {
1347 { 0, "specificChargingUnits" },
1348 { 1, "freeOfCharge" },
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
}
1359 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1361 AOCDChargingUnitInfo_choice
, hf_index
, ett_isdn_sup_AOCDChargingUnitInfo
,
1368 static const value_string isdn_sup_AOCDChargingUnitArg_vals
[] = {
1369 { 0, "chargeNotAvailable" },
1370 { 1, "aOCDChargingUnitInfo" },
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
}
1381 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1383 AOCDChargingUnitArg_choice
, hf_index
, ett_isdn_sup_AOCDChargingUnitArg
,
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" },
1404 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1419 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1421 AOCECcSpecificCurrency_sequence
, hf_index
, ett_isdn_sup_AOCECcSpecificCurrency
);
1427 static const value_string isdn_sup_AOCECurrencyCc_vals
[] = {
1428 { 0, "specificCurrency" },
1429 { 1, "freeOfCharge" },
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
}
1440 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1442 AOCECurrencyCc_choice
, hf_index
, ett_isdn_sup_AOCECurrencyCc
,
1451 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1459 static const value_string isdn_sup_ChargingAssociation_vals
[] = {
1460 { 0, "chargeNumber" },
1461 { 1, "chargeIdentifier" },
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
}
1472 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1474 ChargingAssociation_choice
, hf_index
, ett_isdn_sup_ChargingAssociation
,
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
}
1488 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1490 AOCECurrencyInfo_sequence
, hf_index
, ett_isdn_sup_AOCECurrencyInfo
);
1496 static const value_string isdn_sup_AOCECurrencyArg_vals
[] = {
1497 { 0, "chargeNotAvailable" },
1498 { 1, "aOCECurrencyInfo" },
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
}
1509 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1511 AOCECurrencyArg_choice
, hf_index
, ett_isdn_sup_AOCECurrencyArg
,
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
}
1525 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1527 AOCECcSpecificChargingUnits_sequence
, hf_index
, ett_isdn_sup_AOCECcSpecificChargingUnits
);
1533 static const value_string isdn_sup_AOCEChargingUnitCc_vals
[] = {
1534 { 0, "specificChargingUnits" },
1535 { 1, "freeOfCharge" },
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
}
1546 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1548 AOCEChargingUnitCc_choice
, hf_index
, ett_isdn_sup_AOCEChargingUnitCc
,
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
}
1562 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1564 AOCEChargingUnitInfo_sequence
, hf_index
, ett_isdn_sup_AOCEChargingUnitInfo
);
1570 static const value_string isdn_sup_AOCEChargingUnitArg_vals
[] = {
1571 { 0, "chargeNotAvailable" },
1572 { 1, "aOCEChargingUnitInfo" },
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
}
1583 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1585 AOCEChargingUnitArg_choice
, hf_index
, ett_isdn_sup_AOCEChargingUnitArg
,
1594 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 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
1596 hf_index
, BER_CLASS_CON
, 1, true, dissect_isdn_sup_BOOLEAN
);
1604 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1614 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 offset
= dissect_ber_tagged_type(implicit_tag
, actx
, tree
, tvb
, offset
,
1616 hf_index
, BER_CLASS_CON
, 2, true, dissect_isdn_sup_INTEGER_0_32767
);
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
}
1629 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1631 CUGcallArg_sequence
, hf_index
, ett_isdn_sup_CUGcallArg
);
1639 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1649 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 offset
= dissect_isdn_sup_ConfSize(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1658 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1668 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1683 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1685 BeginCONFRes_sequence
, hf_index
, ett_isdn_sup_BeginCONFRes
);
1693 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 offset
= dissect_isdn_sup_ConferenceId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1702 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 offset
= dissect_isdn_sup_PartyId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
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
}
1716 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1718 SplitCONFArg_sequence
, hf_index
, ett_isdn_sup_SplitCONFArg
);
1726 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 offset
= dissect_isdn_sup_PartyId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1735 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 offset
= dissect_isdn_sup_PartyId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1744 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 offset
= dissect_isdn_sup_PartyId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1753 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 offset
= dissect_isdn_sup_PartyId(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1760 static const value_string isdn_sup_Procedure_vals
[] = {
1769 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
1777 static const value_string isdn_sup_ServedUserNr_vals
[] = {
1778 { 0, "individualNumber" },
1779 { 1, "allNumbers" },
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
}
1790 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 offset
= dissect_ber_choice(actx
, tree
, tvb
, offset
,
1792 ServedUserNr_choice
, hf_index
, ett_isdn_sup_ServedUserNr
,
1801 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1819 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1821 ActivationDiversionArg_sequence
, hf_index
, ett_isdn_sup_ActivationDiversionArg
);
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
}
1835 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1837 DeactivationDiversionArg_sequence
, hf_index
, ett_isdn_sup_DeactivationDiversionArg
);
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
}
1852 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1854 ActivationStatusNotificationDivArg_sequence
, hf_index
, ett_isdn_sup_ActivationStatusNotificationDivArg
);
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
}
1868 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1870 DeactivationStatusNotificationDivArg_sequence
, hf_index
, ett_isdn_sup_DeactivationStatusNotificationDivArg
);
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
}
1884 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1886 InterrogationDiversionArg_sequence
, hf_index
, ett_isdn_sup_InterrogationDiversionArg
);
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
}
1901 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1903 IntResult_sequence
, hf_index
, ett_isdn_sup_IntResult
);
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
},
1914 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 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1916 IntResultList_set_of
, hf_index
, ett_isdn_sup_IntResultList
);
1924 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 offset
= dissect_isdn_sup_IntResultList(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
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
},
1936 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 offset
= dissect_ber_set_of(implicit_tag
, actx
, tree
, tvb
, offset
,
1938 ServedUserNumberList_set_of
, hf_index
, ett_isdn_sup_ServedUserNumberList
);
1946 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 offset
= dissect_isdn_sup_ServedUserNumberList(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
1953 static const value_string isdn_sup_DiversionReason_vals
[] = {
1958 { 4, "cdAlerting" },
1959 { 5, "cdImmediate" },
1965 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
1986 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
1988 DiversionInformationArg_sequence
, hf_index
, ett_isdn_sup_DiversionInformationArg
);
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
}
2001 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2003 CallDeflectionArg_sequence
, hf_index
, ett_isdn_sup_CallDeflectionArg
);
2011 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2019 static const value_string isdn_sup_SubscriptionOption_vals
[] = {
2020 { 0, "noNotification" },
2021 { 1, "notificationWithoutDivertedToNr" },
2022 { 2, "notificationWithDivertedToNr" },
2028 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
2048 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2050 CallRerouteingArg_sequence
, hf_index
, ett_isdn_sup_CallRerouteingArg
);
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
}
2064 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2066 DivertingLegInformation1Arg_sequence
, hf_index
, ett_isdn_sup_DivertingLegInformation1Arg
);
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
}
2081 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2083 DivertingLegInformation2Arg_sequence
, hf_index
, ett_isdn_sup_DivertingLegInformation2Arg
);
2091 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 offset
= dissect_isdn_sup_PresentationAllowedIndicator(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
2098 static const value_string isdn_sup_Service_vals
[] = {
2107 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2117 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 offset
= dissect_ber_boolean(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
, NULL
);
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
}
2131 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2133 UserUserServiceArg_sequence
, hf_index
, ett_isdn_sup_UserUserServiceArg
);
2141 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 offset
= dissect_isdn_sup_PartyNumber(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
2150 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 offset
= dissect_isdn_sup_CalledFreephoneNr(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
2159 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
2175 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2177 Monitor_T_FPHArg_sequence
, hf_index
, ett_isdn_sup_Monitor_T_FPHArg
);
2185 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
2200 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2202 Free_T_FPHArg_sequence
, hf_index
, ett_isdn_sup_Free_T_FPHArg
);
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
}
2215 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2217 Call_T_FPHArg_sequence
, hf_index
, ett_isdn_sup_Call_T_FPHArg
);
2223 static const value_string isdn_sup_PrecLevel_vals
[] = {
2224 { 0, "flashOverride" },
2234 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2242 static const value_string isdn_sup_LFBIndictn_vals
[] = {
2243 { 0, "ifbAllowed" },
2244 { 1, "ifbNotAllowed" },
2245 { 2, "pathReserved" },
2251 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2261 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 offset
= dissect_ber_octet_string(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
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
}
2277 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2279 MLPPParams_sequence
, hf_index
, ett_isdn_sup_MLPPParams
);
2287 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 offset
= dissect_isdn_sup_Q931InformationElement(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
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
}
2301 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2303 MLPPLFBArg_sequence
, hf_index
, ett_isdn_sup_MLPPLFBArg
);
2309 static const value_string isdn_sup_StatusQuery_vals
[] = {
2312 { 3, "bearerCapabilityNotAuthorized" },
2313 { 4, "bearerCapabilityNotlmplemented" },
2314 { 5, "bearerCapabilityNotAvailable" },
2315 { 6, "pathReservationDenied" },
2321 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2331 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 offset
= dissect_isdn_sup_Q931InformationElement(implicit_tag
, tvb
, offset
, actx
, tree
, hf_index
);
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
}
2345 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 offset
= dissect_ber_sequence(implicit_tag
, actx
, tree
, tvb
, offset
,
2347 MLPPLFBResp_sequence
, hf_index
, ett_isdn_sup_MLPPLFBResp
);
2353 static const value_string isdn_sup_StatusRequest_vals
[] = {
2354 { 1, "successCalledUserMLPPSubscriber" },
2355 { 2, "successCalledUserNotMLPPSubscriber" },
2356 { 3, "failureCaseA" },
2357 { 4, "failureCaseB" },
2363 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2371 static const value_string isdn_sup_PreemptParams_vals
[] = {
2372 { 1, "circuitReservedForReuse" },
2373 { 2, "circuitNotReservedForReuse" },
2379 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 offset
= dissect_ber_integer(implicit_tag
, actx
, tree
, tvb
, offset
, hf_index
,
2388 static int dissect_ChargingRequestArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2390 asn1_ctx_t asn1_ctx
;
2391 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2392 offset
= dissect_isdn_sup_ChargingRequestArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_ChargingRequestArg_PDU
);
2395 static int dissect_ChargingRequestRes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2397 asn1_ctx_t asn1_ctx
;
2398 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2399 offset
= dissect_isdn_sup_ChargingRequestRes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_ChargingRequestRes_PDU
);
2402 static int dissect_AOCSCurrencyArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2404 asn1_ctx_t asn1_ctx
;
2405 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2406 offset
= dissect_isdn_sup_AOCSCurrencyArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCSCurrencyArg_PDU
);
2409 static int dissect_AOCSSpecialArrArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2411 asn1_ctx_t asn1_ctx
;
2412 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2413 offset
= dissect_isdn_sup_AOCSSpecialArrArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCSSpecialArrArg_PDU
);
2416 static int dissect_AOCDCurrencyArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2418 asn1_ctx_t asn1_ctx
;
2419 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2420 offset
= dissect_isdn_sup_AOCDCurrencyArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCDCurrencyArg_PDU
);
2423 static int dissect_AOCDChargingUnitArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2425 asn1_ctx_t asn1_ctx
;
2426 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2427 offset
= dissect_isdn_sup_AOCDChargingUnitArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCDChargingUnitArg_PDU
);
2430 static int dissect_AOCECurrencyArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2432 asn1_ctx_t asn1_ctx
;
2433 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2434 offset
= dissect_isdn_sup_AOCECurrencyArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCECurrencyArg_PDU
);
2437 static int dissect_AOCEChargingUnitArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2439 asn1_ctx_t asn1_ctx
;
2440 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2441 offset
= dissect_isdn_sup_AOCEChargingUnitArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AOCEChargingUnitArg_PDU
);
2444 static int dissect_CUGcallArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2446 asn1_ctx_t asn1_ctx
;
2447 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2448 offset
= dissect_isdn_sup_CUGcallArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_CUGcallArg_PDU
);
2451 static int dissect_BeginCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2453 asn1_ctx_t asn1_ctx
;
2454 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2455 offset
= dissect_isdn_sup_BeginCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_BeginCONFArg_PDU
);
2458 static int dissect_BeginCONFRes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2460 asn1_ctx_t asn1_ctx
;
2461 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2462 offset
= dissect_isdn_sup_BeginCONFRes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_BeginCONFRes_PDU
);
2465 static int dissect_AddCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2467 asn1_ctx_t asn1_ctx
;
2468 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2469 offset
= dissect_isdn_sup_AddCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AddCONFArg_PDU
);
2472 static int dissect_AddCONFRes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2474 asn1_ctx_t asn1_ctx
;
2475 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2476 offset
= dissect_isdn_sup_AddCONFRes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_AddCONFRes_PDU
);
2479 static int dissect_SplitCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2481 asn1_ctx_t asn1_ctx
;
2482 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2483 offset
= dissect_isdn_sup_SplitCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_SplitCONFArg_PDU
);
2486 static int dissect_DropCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2488 asn1_ctx_t asn1_ctx
;
2489 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2490 offset
= dissect_isdn_sup_DropCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DropCONFArg_PDU
);
2493 static int dissect_IsolateCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2495 asn1_ctx_t asn1_ctx
;
2496 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2497 offset
= dissect_isdn_sup_IsolateCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_IsolateCONFArg_PDU
);
2500 static int dissect_ReattachCONFArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2502 asn1_ctx_t asn1_ctx
;
2503 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2504 offset
= dissect_isdn_sup_ReattachCONFArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_ReattachCONFArg_PDU
);
2507 static int dissect_PartyDISCArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2509 asn1_ctx_t asn1_ctx
;
2510 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2511 offset
= dissect_isdn_sup_PartyDISCArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_PartyDISCArg_PDU
);
2514 static int dissect_ActivationDiversionArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2516 asn1_ctx_t asn1_ctx
;
2517 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2518 offset
= dissect_isdn_sup_ActivationDiversionArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_ActivationDiversionArg_PDU
);
2521 static int dissect_DeactivationDiversionArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2523 asn1_ctx_t asn1_ctx
;
2524 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2525 offset
= dissect_isdn_sup_DeactivationDiversionArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DeactivationDiversionArg_PDU
);
2528 static int dissect_ActivationStatusNotificationDivArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2530 asn1_ctx_t asn1_ctx
;
2531 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2532 offset
= dissect_isdn_sup_ActivationStatusNotificationDivArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_ActivationStatusNotificationDivArg_PDU
);
2535 static int dissect_DeactivationStatusNotificationDivArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2537 asn1_ctx_t asn1_ctx
;
2538 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2539 offset
= dissect_isdn_sup_DeactivationStatusNotificationDivArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU
);
2542 static int dissect_InterrogationDiversionArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2544 asn1_ctx_t asn1_ctx
;
2545 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2546 offset
= dissect_isdn_sup_InterrogationDiversionArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_InterrogationDiversionArg_PDU
);
2549 static int dissect_InterrogationDiversionRes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2551 asn1_ctx_t asn1_ctx
;
2552 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2553 offset
= dissect_isdn_sup_InterrogationDiversionRes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_InterrogationDiversionRes_PDU
);
2556 static int dissect_InterrogateServedUserNumbersRes_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2558 asn1_ctx_t asn1_ctx
;
2559 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2560 offset
= dissect_isdn_sup_InterrogateServedUserNumbersRes(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_InterrogateServedUserNumbersRes_PDU
);
2563 static int dissect_DiversionInformationArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2565 asn1_ctx_t asn1_ctx
;
2566 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2567 offset
= dissect_isdn_sup_DiversionInformationArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DiversionInformationArg_PDU
);
2570 static int dissect_CallDeflectionArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2572 asn1_ctx_t asn1_ctx
;
2573 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2574 offset
= dissect_isdn_sup_CallDeflectionArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_CallDeflectionArg_PDU
);
2577 static int dissect_CallRerouteingArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2579 asn1_ctx_t asn1_ctx
;
2580 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2581 offset
= dissect_isdn_sup_CallRerouteingArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_CallRerouteingArg_PDU
);
2584 static int dissect_DivertingLegInformation1Arg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2586 asn1_ctx_t asn1_ctx
;
2587 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2588 offset
= dissect_isdn_sup_DivertingLegInformation1Arg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DivertingLegInformation1Arg_PDU
);
2591 static int dissect_DivertingLegInformation2Arg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2593 asn1_ctx_t asn1_ctx
;
2594 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2595 offset
= dissect_isdn_sup_DivertingLegInformation2Arg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DivertingLegInformation2Arg_PDU
);
2598 static int dissect_DivertingLegInformation3Arg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2600 asn1_ctx_t asn1_ctx
;
2601 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2602 offset
= dissect_isdn_sup_DivertingLegInformation3Arg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_DivertingLegInformation3Arg_PDU
);
2605 static int dissect_UserUserServiceArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2607 asn1_ctx_t asn1_ctx
;
2608 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2609 offset
= dissect_isdn_sup_UserUserServiceArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_UserUserServiceArg_PDU
);
2612 static int dissect_CalledFreephoneNrArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2614 asn1_ctx_t asn1_ctx
;
2615 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2616 offset
= dissect_isdn_sup_CalledFreephoneNrArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_CalledFreephoneNrArg_PDU
);
2619 static int dissect_Monitor_T_FPHArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2621 asn1_ctx_t asn1_ctx
;
2622 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2623 offset
= dissect_isdn_sup_Monitor_T_FPHArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_Monitor_T_FPHArg_PDU
);
2626 static int dissect_Free_T_FPHArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2628 asn1_ctx_t asn1_ctx
;
2629 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2630 offset
= dissect_isdn_sup_Free_T_FPHArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_Free_T_FPHArg_PDU
);
2633 static int dissect_Call_T_FPHArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2635 asn1_ctx_t asn1_ctx
;
2636 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2637 offset
= dissect_isdn_sup_Call_T_FPHArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_Call_T_FPHArg_PDU
);
2640 static int dissect_MLPPLFBArg_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2642 asn1_ctx_t asn1_ctx
;
2643 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2644 offset
= dissect_isdn_sup_MLPPLFBArg(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_MLPPLFBArg_PDU
);
2647 static int dissect_MLPPLFBResp_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2649 asn1_ctx_t asn1_ctx
;
2650 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2651 offset
= dissect_isdn_sup_MLPPLFBResp(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_MLPPLFBResp_PDU
);
2654 static int dissect_MLPPParams_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2656 asn1_ctx_t asn1_ctx
;
2657 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2658 offset
= dissect_isdn_sup_MLPPParams(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_MLPPParams_PDU
);
2661 static int dissect_StatusRequest_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2663 asn1_ctx_t asn1_ctx
;
2664 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2665 offset
= dissect_isdn_sup_StatusRequest(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_StatusRequest_PDU
);
2668 static int dissect_PreemptParams_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2670 asn1_ctx_t asn1_ctx
;
2671 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_BER
, true, pinfo
);
2672 offset
= dissect_isdn_sup_PreemptParams(false, tvb
, offset
, &asn1_ctx
, tree
, hf_isdn_sup_PreemptParams_PDU
);
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
},
2713 static const isdn_sup_global_op_t isdn_sup_global_op_tab
[] = {
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
},
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
},
2756 static const isdn_sup_op_t
*get_op(int32_t opcode
) {
2759 /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2760 for (i
= array_length(isdn_sup_op_tab
) - 1; i
>= 0; i
--)
2761 if (isdn_sup_op_tab
[i
].opcode
== opcode
)
2762 return &isdn_sup_op_tab
[i
];
2766 static const isdn_sup_err_t
*get_err(int32_t errcode
) {
2769 /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2770 for (i
= array_length(isdn_sup_err_tab
) - 1; i
>= 0; i
--)
2771 if (isdn_sup_err_tab
[i
].errcode
== errcode
)
2772 return &isdn_sup_err_tab
[i
];
2776 /*--- dissect_isdn_sup_arg ------------------------------------------------------*/
2778 dissect_isdn_sup_arg(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
) {
2783 const isdn_sup_op_t
*op_ptr
;
2785 proto_tree
*isdn_sup_tree
;
2787 /* Reject the packet if data is NULL */
2790 rctx
= get_rose_ctx(data
);
2791 DISSECTOR_ASSERT(rctx
);
2793 if (rctx
->d
.pdu
!= 1) /* invoke */
2795 if (rctx
->d
.code
== 0) { /* local */
2796 opcode
= rctx
->d
.code_local
;
2800 op_ptr
= get_op(opcode
);
2804 ti
= proto_tree_add_item(tree
, proto_isdn_sup
, tvb
, offset
, -1, ENC_NA
);
2805 isdn_sup_tree
= proto_item_add_subtree(ti
, ett_isdn_sup
);
2807 proto_tree_add_uint(isdn_sup_tree
, hf_isdn_sup_operation
, tvb
, 0, 0, opcode
);
2808 p
= try_val_to_str(opcode
, VALS(isdn_sup_str_operation
));
2810 proto_item_append_text(ti
, ": %s", p
);
2811 proto_item_append_text(rctx
->d
.code_item
, " - %s", p
);
2812 if (rctx
->apdu_depth
>= 0)
2813 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree
), rctx
->apdu_depth
), " %s", p
);
2816 if (op_ptr
->arg_pdu
)
2817 offset
= op_ptr
->arg_pdu(tvb
, pinfo
, isdn_sup_tree
, NULL
);
2819 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
2820 proto_tree_add_expert(tree
, pinfo
, &ei_isdn_sup_unsupported_error_type
, tvb
, offset
, -1);
2821 offset
+= tvb_reported_length_remaining(tvb
, offset
);
2827 /*--- dissect_isdn_sup_res -------------------------------------------------------*/
2829 dissect_isdn_sup_res(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
) {
2834 const isdn_sup_op_t
*op_ptr
;
2836 proto_tree
*isdn_sup_tree
;
2838 /* Reject the packet if data is NULL */
2841 rctx
= get_rose_ctx(data
);
2842 DISSECTOR_ASSERT(rctx
);
2844 if (rctx
->d
.pdu
!= 2) /* returnResult */
2846 if (rctx
->d
.code
!= 0) /* local */
2848 opcode
= rctx
->d
.code_local
;
2849 op_ptr
= get_op(opcode
);
2853 ti
= proto_tree_add_item(tree
, proto_isdn_sup
, tvb
, offset
, -1, ENC_NA
);
2854 isdn_sup_tree
= proto_item_add_subtree(ti
, ett_isdn_sup
);
2856 proto_tree_add_uint(isdn_sup_tree
, hf_isdn_sup_operation
, tvb
, 0, 0, opcode
);
2857 p
= try_val_to_str(opcode
, VALS(isdn_sup_str_operation
));
2859 proto_item_append_text(ti
, ": %s", p
);
2860 proto_item_append_text(rctx
->d
.code_item
, " - %s", p
);
2861 if (rctx
->apdu_depth
>= 0)
2862 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree
), rctx
->apdu_depth
), " %s", p
);
2865 if (op_ptr
->res_pdu
)
2866 offset
= op_ptr
->res_pdu(tvb
, pinfo
, isdn_sup_tree
, NULL
);
2868 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
2869 proto_tree_add_expert(tree
, pinfo
, &ei_isdn_sup_unsupported_result_type
, tvb
, offset
, -1);
2870 offset
+= tvb_reported_length_remaining(tvb
, offset
);
2877 /*--- dissect_isdn_sup_err ------------------------------------------------------*/
2879 dissect_isdn_sup_err(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data
) {
2883 const isdn_sup_err_t
*err_ptr
;
2886 proto_tree
*isdn_sup_tree
;
2888 /* Reject the packet if data is NULL */
2891 rctx
= get_rose_ctx(data
);
2892 DISSECTOR_ASSERT(rctx
);
2894 if (rctx
->d
.pdu
!= 3) /* returnError */
2896 if (rctx
->d
.code
!= 0) /* local */
2898 errcode
= rctx
->d
.code_local
;
2899 err_ptr
= get_err(errcode
);
2903 ti
= proto_tree_add_item(tree
, proto_isdn_sup
, tvb
, offset
, -1, ENC_NA
);
2904 isdn_sup_tree
= proto_item_add_subtree(ti
, ett_isdn_sup
);
2906 proto_tree_add_uint(isdn_sup_tree
, hf_isdn_sup_error
, tvb
, 0, 0, errcode
);
2907 p
= try_val_to_str(errcode
, VALS(isdn_sup_str_error
));
2909 proto_item_append_text(ti
, ": %s", p
);
2910 proto_item_append_text(rctx
->d
.code_item
, " - %s", p
);
2911 if (rctx
->apdu_depth
>= 0)
2912 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree
), rctx
->apdu_depth
), " %s", p
);
2915 if (err_ptr
->err_pdu
)
2916 offset
= err_ptr
->err_pdu(tvb
, pinfo
, isdn_sup_tree
, NULL
);
2918 if (tvb_reported_length_remaining(tvb
, offset
) > 0) {
2919 proto_tree_add_expert(tree
, pinfo
, &ei_isdn_sup_unsupported_error_type
, tvb
, offset
, -1);
2920 offset
+= tvb_reported_length_remaining(tvb
, offset
);
2927 /*--- proto_reg_handoff_isdn_sup ---------------------------------------*/
2929 void proto_reg_handoff_isdn_sup(void) {
2932 dissector_handle_t q931_handle
;
2933 q931_handle
= find_dissector("q931");
2936 for (i
=0; i
<(int)array_length(isdn_sup_op_tab
); i
++) {
2937 dissector_add_uint("q932.ros.etsi.local.arg", isdn_sup_op_tab
[i
].opcode
, isdn_sup_arg_handle
);
2938 dissector_add_uint("q932.ros.etsi.local.res", isdn_sup_op_tab
[i
].opcode
, isdn_sup_res_handle
);
2941 for (i
=0; i
<(int)array_length(isdn_sup_global_op_tab
); i
++) {
2942 if(isdn_sup_global_op_tab
[i
].arg_pdu
)
2943 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 if(isdn_sup_global_op_tab
[i
].res_pdu
)
2945 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
));
2948 for (i
=0; i
<(int)array_length(isdn_sup_err_tab
); i
++) {
2949 dissector_add_uint("q932.ros.etsi.local.err", isdn_sup_err_tab
[i
].errcode
, isdn_sup_err_handle
);
2955 void proto_register_isdn_sup(void) {
2957 /* List of fields */
2958 static hf_register_info hf
[] = {
2960 { "isdn_sup", "isdn_sup.1",
2961 FT_INT32
, BASE_DEC
, NULL
, 0,
2964 { &hf_isdn_sup_operation
,
2965 { "Operation", "isdn_sup.operation",
2966 FT_UINT8
, BASE_DEC
, VALS(isdn_sup_str_operation
), 0x0,
2969 { &hf_isdn_sup_error
,
2970 { "Error", "isdn_sup.error",
2971 FT_UINT8
, BASE_DEC
, VALS(isdn_sup_str_error
), 0x0,
2975 { &hf_isdn_sup_ChargingRequestArg_PDU
,
2976 { "ChargingRequestArg", "isdn-sup.ChargingRequestArg",
2977 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ChargingCase_vals
), 0,
2979 { &hf_isdn_sup_ChargingRequestRes_PDU
,
2980 { "ChargingRequestRes", "isdn-sup.ChargingRequestRes",
2981 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ChargingRequestRes_vals
), 0,
2983 { &hf_isdn_sup_AOCSCurrencyArg_PDU
,
2984 { "AOCSCurrencyArg", "isdn-sup.AOCSCurrencyArg",
2985 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCSCurrencyArg_vals
), 0,
2987 { &hf_isdn_sup_AOCSSpecialArrArg_PDU
,
2988 { "AOCSSpecialArrArg", "isdn-sup.AOCSSpecialArrArg",
2989 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCSSpecialArrArg_vals
), 0,
2991 { &hf_isdn_sup_AOCDCurrencyArg_PDU
,
2992 { "AOCDCurrencyArg", "isdn-sup.AOCDCurrencyArg",
2993 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCDCurrencyArg_vals
), 0,
2995 { &hf_isdn_sup_AOCDChargingUnitArg_PDU
,
2996 { "AOCDChargingUnitArg", "isdn-sup.AOCDChargingUnitArg",
2997 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCDChargingUnitArg_vals
), 0,
2999 { &hf_isdn_sup_AOCECurrencyArg_PDU
,
3000 { "AOCECurrencyArg", "isdn-sup.AOCECurrencyArg",
3001 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCECurrencyArg_vals
), 0,
3003 { &hf_isdn_sup_AOCEChargingUnitArg_PDU
,
3004 { "AOCEChargingUnitArg", "isdn-sup.AOCEChargingUnitArg",
3005 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCEChargingUnitArg_vals
), 0,
3007 { &hf_isdn_sup_CUGcallArg_PDU
,
3008 { "CUGcallArg", "isdn-sup.CUGcallArg_element",
3009 FT_NONE
, BASE_NONE
, NULL
, 0,
3011 { &hf_isdn_sup_BeginCONFArg_PDU
,
3012 { "BeginCONFArg", "isdn-sup.BeginCONFArg",
3013 FT_UINT32
, BASE_DEC
, NULL
, 0,
3015 { &hf_isdn_sup_BeginCONFRes_PDU
,
3016 { "BeginCONFRes", "isdn-sup.BeginCONFRes_element",
3017 FT_NONE
, BASE_NONE
, NULL
, 0,
3019 { &hf_isdn_sup_AddCONFArg_PDU
,
3020 { "AddCONFArg", "isdn-sup.AddCONFArg",
3021 FT_UINT32
, BASE_DEC
, NULL
, 0,
3023 { &hf_isdn_sup_AddCONFRes_PDU
,
3024 { "AddCONFRes", "isdn-sup.AddCONFRes",
3025 FT_UINT32
, BASE_DEC
, NULL
, 0,
3027 { &hf_isdn_sup_SplitCONFArg_PDU
,
3028 { "SplitCONFArg", "isdn-sup.SplitCONFArg_element",
3029 FT_NONE
, BASE_NONE
, NULL
, 0,
3031 { &hf_isdn_sup_DropCONFArg_PDU
,
3032 { "DropCONFArg", "isdn-sup.DropCONFArg",
3033 FT_UINT32
, BASE_DEC
, NULL
, 0,
3035 { &hf_isdn_sup_IsolateCONFArg_PDU
,
3036 { "IsolateCONFArg", "isdn-sup.IsolateCONFArg",
3037 FT_UINT32
, BASE_DEC
, NULL
, 0,
3039 { &hf_isdn_sup_ReattachCONFArg_PDU
,
3040 { "ReattachCONFArg", "isdn-sup.ReattachCONFArg",
3041 FT_UINT32
, BASE_DEC
, NULL
, 0,
3043 { &hf_isdn_sup_PartyDISCArg_PDU
,
3044 { "PartyDISCArg", "isdn-sup.PartyDISCArg",
3045 FT_UINT32
, BASE_DEC
, NULL
, 0,
3047 { &hf_isdn_sup_ActivationDiversionArg_PDU
,
3048 { "ActivationDiversionArg", "isdn-sup.ActivationDiversionArg_element",
3049 FT_NONE
, BASE_NONE
, NULL
, 0,
3051 { &hf_isdn_sup_DeactivationDiversionArg_PDU
,
3052 { "DeactivationDiversionArg", "isdn-sup.DeactivationDiversionArg_element",
3053 FT_NONE
, BASE_NONE
, NULL
, 0,
3055 { &hf_isdn_sup_ActivationStatusNotificationDivArg_PDU
,
3056 { "ActivationStatusNotificationDivArg", "isdn-sup.ActivationStatusNotificationDivArg_element",
3057 FT_NONE
, BASE_NONE
, NULL
, 0,
3059 { &hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU
,
3060 { "DeactivationStatusNotificationDivArg", "isdn-sup.DeactivationStatusNotificationDivArg_element",
3061 FT_NONE
, BASE_NONE
, NULL
, 0,
3063 { &hf_isdn_sup_InterrogationDiversionArg_PDU
,
3064 { "InterrogationDiversionArg", "isdn-sup.InterrogationDiversionArg_element",
3065 FT_NONE
, BASE_NONE
, NULL
, 0,
3067 { &hf_isdn_sup_InterrogationDiversionRes_PDU
,
3068 { "InterrogationDiversionRes", "isdn-sup.InterrogationDiversionRes",
3069 FT_UINT32
, BASE_DEC
, NULL
, 0,
3071 { &hf_isdn_sup_InterrogateServedUserNumbersRes_PDU
,
3072 { "InterrogateServedUserNumbersRes", "isdn-sup.InterrogateServedUserNumbersRes",
3073 FT_UINT32
, BASE_DEC
, NULL
, 0,
3075 { &hf_isdn_sup_DiversionInformationArg_PDU
,
3076 { "DiversionInformationArg", "isdn-sup.DiversionInformationArg_element",
3077 FT_NONE
, BASE_NONE
, NULL
, 0,
3079 { &hf_isdn_sup_CallDeflectionArg_PDU
,
3080 { "CallDeflectionArg", "isdn-sup.CallDeflectionArg_element",
3081 FT_NONE
, BASE_NONE
, NULL
, 0,
3083 { &hf_isdn_sup_CallRerouteingArg_PDU
,
3084 { "CallRerouteingArg", "isdn-sup.CallRerouteingArg_element",
3085 FT_NONE
, BASE_NONE
, NULL
, 0,
3087 { &hf_isdn_sup_DivertingLegInformation1Arg_PDU
,
3088 { "DivertingLegInformation1Arg", "isdn-sup.DivertingLegInformation1Arg_element",
3089 FT_NONE
, BASE_NONE
, NULL
, 0,
3091 { &hf_isdn_sup_DivertingLegInformation2Arg_PDU
,
3092 { "DivertingLegInformation2Arg", "isdn-sup.DivertingLegInformation2Arg_element",
3093 FT_NONE
, BASE_NONE
, NULL
, 0,
3095 { &hf_isdn_sup_DivertingLegInformation3Arg_PDU
,
3096 { "DivertingLegInformation3Arg", "isdn-sup.DivertingLegInformation3Arg",
3097 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3099 { &hf_isdn_sup_UserUserServiceArg_PDU
,
3100 { "UserUserServiceArg", "isdn-sup.UserUserServiceArg_element",
3101 FT_NONE
, BASE_NONE
, NULL
, 0,
3103 { &hf_isdn_sup_CalledFreephoneNrArg_PDU
,
3104 { "CalledFreephoneNrArg", "isdn-sup.CalledFreephoneNrArg",
3105 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3107 { &hf_isdn_sup_Monitor_T_FPHArg_PDU
,
3108 { "Monitor-T-FPHArg", "isdn-sup.Monitor_T_FPHArg_element",
3109 FT_NONE
, BASE_NONE
, NULL
, 0,
3111 { &hf_isdn_sup_Free_T_FPHArg_PDU
,
3112 { "Free-T-FPHArg", "isdn-sup.Free_T_FPHArg_element",
3113 FT_NONE
, BASE_NONE
, NULL
, 0,
3115 { &hf_isdn_sup_Call_T_FPHArg_PDU
,
3116 { "Call-T-FPHArg", "isdn-sup.Call_T_FPHArg_element",
3117 FT_NONE
, BASE_NONE
, NULL
, 0,
3119 { &hf_isdn_sup_MLPPLFBArg_PDU
,
3120 { "MLPPLFBArg", "isdn-sup.MLPPLFBArg_element",
3121 FT_NONE
, BASE_NONE
, NULL
, 0,
3123 { &hf_isdn_sup_MLPPLFBResp_PDU
,
3124 { "MLPPLFBResp", "isdn-sup.MLPPLFBResp_element",
3125 FT_NONE
, BASE_NONE
, NULL
, 0,
3127 { &hf_isdn_sup_MLPPParams_PDU
,
3128 { "MLPPParams", "isdn-sup.MLPPParams_element",
3129 FT_NONE
, BASE_NONE
, NULL
, 0,
3131 { &hf_isdn_sup_StatusRequest_PDU
,
3132 { "StatusRequest", "isdn-sup.StatusRequest",
3133 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_StatusRequest_vals
), 0,
3135 { &hf_isdn_sup_PreemptParams_PDU
,
3136 { "PreemptParams", "isdn-sup.PreemptParams",
3137 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PreemptParams_vals
), 0,
3139 { &hf_isdn_sup_presentationallowedaddressscreened
,
3140 { "presentationAllowedAddress", "isdn-sup.presentationallowedaddressscreened_element",
3141 FT_NONE
, BASE_NONE
, NULL
, 0,
3142 "AddressScreened", HFILL
}},
3143 { &hf_isdn_sup_presentationRestricted
,
3144 { "presentationRestricted", "isdn-sup.presentationRestricted_element",
3145 FT_NONE
, BASE_NONE
, NULL
, 0,
3147 { &hf_isdn_sup_numberNotAvailableDueToInterworking
,
3148 { "numberNotAvailableDueToInterworking", "isdn-sup.numberNotAvailableDueToInterworking_element",
3149 FT_NONE
, BASE_NONE
, NULL
, 0,
3151 { &hf_isdn_sup_presentationrestrictedaddressscreened
,
3152 { "presentationRestrictedAddress", "isdn-sup.presentationrestrictedaddressscreened_element",
3153 FT_NONE
, BASE_NONE
, NULL
, 0,
3154 "AddressScreened", HFILL
}},
3155 { &hf_isdn_sup_presentationAllowedAddress
,
3156 { "presentationAllowedAddress", "isdn-sup.presentationAllowedAddress_element",
3157 FT_NONE
, BASE_NONE
, NULL
, 0,
3158 "Address", HFILL
}},
3159 { &hf_isdn_sup_presentationRestrictedAddress
,
3160 { "presentationRestrictedAddress", "isdn-sup.presentationRestrictedAddress_element",
3161 FT_NONE
, BASE_NONE
, NULL
, 0,
3162 "Address", HFILL
}},
3163 { &hf_isdn_sup_presentationallowednumberscreened
,
3164 { "presentationAllowedNumber", "isdn-sup.presentationallowednumberscreened_element",
3165 FT_NONE
, BASE_NONE
, NULL
, 0,
3166 "NumberScreened", HFILL
}},
3167 { &hf_isdn_sup_presentationrestrictednumberscreened
,
3168 { "presentationRestrictedNumber", "isdn-sup.presentationrestrictednumberscreened_element",
3169 FT_NONE
, BASE_NONE
, NULL
, 0,
3170 "NumberScreened", HFILL
}},
3171 { &hf_isdn_sup_presentationAllowedNumber
,
3172 { "presentationAllowedNumber", "isdn-sup.presentationAllowedNumber",
3173 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3174 "PartyNumber", HFILL
}},
3175 { &hf_isdn_sup_presentationRestrictedNumber
,
3176 { "presentationRestrictedNumber", "isdn-sup.presentationRestrictedNumber",
3177 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3178 "PartyNumber", HFILL
}},
3179 { &hf_isdn_sup_partyNumber
,
3180 { "partyNumber", "isdn-sup.partyNumber",
3181 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3183 { &hf_isdn_sup_screeningIndicator
,
3184 { "screeningIndicator", "isdn-sup.screeningIndicator",
3185 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ScreeningIndicator_vals
), 0,
3187 { &hf_isdn_sup_partySubaddress
,
3188 { "partySubaddress", "isdn-sup.partySubaddress",
3189 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartySubaddress_vals
), 0,
3191 { &hf_isdn_sup_unknownPartyNumber
,
3192 { "unknownPartyNumber", "isdn-sup.unknownPartyNumber",
3193 FT_STRING
, BASE_NONE
, NULL
, 0,
3194 "NumberDigits", HFILL
}},
3195 { &hf_isdn_sup_publicPartyNumber
,
3196 { "publicPartyNumber", "isdn-sup.publicPartyNumber_element",
3197 FT_NONE
, BASE_NONE
, NULL
, 0,
3199 { &hf_isdn_sup_nsapEncodedNumber
,
3200 { "nsapEncodedNumber", "isdn-sup.nsapEncodedNumber",
3201 FT_BYTES
, BASE_NONE
, NULL
, 0,
3203 { &hf_isdn_sup_dataPartyNumber
,
3204 { "dataPartyNumber", "isdn-sup.dataPartyNumber",
3205 FT_STRING
, BASE_NONE
, NULL
, 0,
3206 "NumberDigits", HFILL
}},
3207 { &hf_isdn_sup_telexPartyNumber
,
3208 { "telexPartyNumber", "isdn-sup.telexPartyNumber",
3209 FT_STRING
, BASE_NONE
, NULL
, 0,
3210 "NumberDigits", HFILL
}},
3211 { &hf_isdn_sup_privatePartyNumber
,
3212 { "privatePartyNumber", "isdn-sup.privatePartyNumber_element",
3213 FT_NONE
, BASE_NONE
, NULL
, 0,
3215 { &hf_isdn_sup_nationalStandardPartyNumber
,
3216 { "nationalStandardPartyNumber", "isdn-sup.nationalStandardPartyNumber",
3217 FT_STRING
, BASE_NONE
, NULL
, 0,
3218 "NumberDigits", HFILL
}},
3219 { &hf_isdn_sup_publicTypeOfNumber
,
3220 { "publicTypeOfNumber", "isdn-sup.publicTypeOfNumber",
3221 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PublicTypeOfNumber_vals
), 0,
3223 { &hf_isdn_sup_publicNumberDigits
,
3224 { "publicNumberDigits", "isdn-sup.publicNumberDigits",
3225 FT_STRING
, BASE_NONE
, NULL
, 0,
3226 "NumberDigits", HFILL
}},
3227 { &hf_isdn_sup_privateTypeOfNumber
,
3228 { "privateTypeOfNumber", "isdn-sup.privateTypeOfNumber",
3229 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PrivateTypeOfNumber_vals
), 0,
3231 { &hf_isdn_sup_privateNumberDigits
,
3232 { "privateNumberDigits", "isdn-sup.privateNumberDigits",
3233 FT_STRING
, BASE_NONE
, NULL
, 0,
3234 "NumberDigits", HFILL
}},
3235 { &hf_isdn_sup_userSpecifiedSubaddress
,
3236 { "userSpecifiedSubaddress", "isdn-sup.userSpecifiedSubaddress_element",
3237 FT_NONE
, BASE_NONE
, NULL
, 0,
3239 { &hf_isdn_sup_nSAPSubaddress
,
3240 { "nSAPSubaddress", "isdn-sup.nSAPSubaddress",
3241 FT_BYTES
, BASE_NONE
, NULL
, 0,
3243 { &hf_isdn_sup_subaddressInformation
,
3244 { "subaddressInformation", "isdn-sup.subaddressInformation",
3245 FT_BYTES
, BASE_NONE
, NULL
, 0,
3247 { &hf_isdn_sup_oddCountIndicator
,
3248 { "oddCountIndicator", "isdn-sup.oddCountIndicator",
3249 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3250 "BOOLEAN", HFILL
}},
3251 { &hf_isdn_sup_aOCSCurrencyInfoList
,
3252 { "aOCSCurrencyInfoList", "isdn-sup.aOCSCurrencyInfoList",
3253 FT_UINT32
, BASE_DEC
, NULL
, 0,
3255 { &hf_isdn_sup_aOCSSpecialArrInfo
,
3256 { "aOCSSpecialArrInfo", "isdn-sup.aOCSSpecialArrInfo",
3257 FT_UINT32
, BASE_DEC
, NULL
, 0,
3259 { &hf_isdn_sup_chargingInfoFollows
,
3260 { "chargingInfoFollows", "isdn-sup.chargingInfoFollows_element",
3261 FT_NONE
, BASE_NONE
, NULL
, 0,
3263 { &hf_isdn_sup_chargeNotAvailable
,
3264 { "chargeNotAvailable", "isdn-sup.chargeNotAvailable_element",
3265 FT_NONE
, BASE_NONE
, NULL
, 0,
3267 { &hf_isdn_sup_aOCDCurrencyInfo
,
3268 { "aOCDCurrencyInfo", "isdn-sup.aOCDCurrencyInfo",
3269 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCDCurrencyInfo_vals
), 0,
3271 { &hf_isdn_sup_aOCDChargingUnitInfo
,
3272 { "aOCDChargingUnitInfo", "isdn-sup.aOCDChargingUnitInfo",
3273 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCDChargingUnitInfo_vals
), 0,
3275 { &hf_isdn_sup_aOCECurrencyInfo
,
3276 { "aOCECurrencyInfo", "isdn-sup.aOCECurrencyInfo_element",
3277 FT_NONE
, BASE_NONE
, NULL
, 0,
3279 { &hf_isdn_sup_aOCEChargingUnitInfo
,
3280 { "aOCEChargingUnitInfo", "isdn-sup.aOCEChargingUnitInfo_element",
3281 FT_NONE
, BASE_NONE
, NULL
, 0,
3283 { &hf_isdn_sup_AOCSCurrencyInfoList_item
,
3284 { "AOCSCurrencyInfo", "isdn-sup.AOCSCurrencyInfo_element",
3285 FT_NONE
, BASE_NONE
, NULL
, 0,
3287 { &hf_isdn_sup_chargedItem
,
3288 { "chargedItem", "isdn-sup.chargedItem",
3289 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ChargedItem_vals
), 0,
3291 { &hf_isdn_sup_chargingtype
,
3292 { "chargingtype", "isdn-sup.chargingtype",
3293 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_T_chargingtype_vals
), 0,
3295 { &hf_isdn_sup_aocschargingtypespecificCurrency
,
3296 { "specificCurrency", "isdn-sup.aocschargingtypespecificCurrency",
3297 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCSChargingTypeSpecificCurrency_vals
), 0,
3298 "AOCSChargingTypeSpecificCurrency", HFILL
}},
3299 { &hf_isdn_sup_durationCurrency
,
3300 { "durationCurrency", "isdn-sup.durationCurrency_element",
3301 FT_NONE
, BASE_NONE
, NULL
, 0,
3303 { &hf_isdn_sup_flatRateCurrency
,
3304 { "flatRateCurrency", "isdn-sup.flatRateCurrency_element",
3305 FT_NONE
, BASE_NONE
, NULL
, 0,
3307 { &hf_isdn_sup_volumeRateCurrency
,
3308 { "volumeRateCurrency", "isdn-sup.volumeRateCurrency_element",
3309 FT_NONE
, BASE_NONE
, NULL
, 0,
3311 { &hf_isdn_sup_specialChargingCode
,
3312 { "specialChargingCode", "isdn-sup.specialChargingCode",
3313 FT_UINT32
, BASE_DEC
, NULL
, 0,
3315 { &hf_isdn_sup_freeOfCharge
,
3316 { "freeOfCharge", "isdn-sup.freeOfCharge_element",
3317 FT_NONE
, BASE_NONE
, NULL
, 0,
3319 { &hf_isdn_sup_currencyInfoNotAvailable
,
3320 { "currencyInfoNotAvailable", "isdn-sup.currencyInfoNotAvailable_element",
3321 FT_NONE
, BASE_NONE
, NULL
, 0,
3323 { &hf_isdn_sup_dCurrency
,
3324 { "dCurrency", "isdn-sup.dCurrency",
3325 FT_STRING
, BASE_NONE
, NULL
, 0,
3326 "Currency", HFILL
}},
3327 { &hf_isdn_sup_dAmount
,
3328 { "dAmount", "isdn-sup.dAmount_element",
3329 FT_NONE
, BASE_NONE
, NULL
, 0,
3331 { &hf_isdn_sup_dChargingType
,
3332 { "dChargingType", "isdn-sup.dChargingType",
3333 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ChargingType_vals
), 0,
3334 "ChargingType", HFILL
}},
3335 { &hf_isdn_sup_dTime
,
3336 { "dTime", "isdn-sup.dTime_element",
3337 FT_NONE
, BASE_NONE
, NULL
, 0,
3339 { &hf_isdn_sup_dGranularity
,
3340 { "dGranularity", "isdn-sup.dGranularity_element",
3341 FT_NONE
, BASE_NONE
, NULL
, 0,
3343 { &hf_isdn_sup_fRCurrency
,
3344 { "fRCurrency", "isdn-sup.fRCurrency",
3345 FT_STRING
, BASE_NONE
, NULL
, 0,
3346 "Currency", HFILL
}},
3347 { &hf_isdn_sup_fRAmount
,
3348 { "fRAmount", "isdn-sup.fRAmount_element",
3349 FT_NONE
, BASE_NONE
, NULL
, 0,
3351 { &hf_isdn_sup_vRCurrency
,
3352 { "vRCurrency", "isdn-sup.vRCurrency",
3353 FT_STRING
, BASE_NONE
, NULL
, 0,
3354 "Currency", HFILL
}},
3355 { &hf_isdn_sup_vRAmount
,
3356 { "vRAmount", "isdn-sup.vRAmount_element",
3357 FT_NONE
, BASE_NONE
, NULL
, 0,
3359 { &hf_isdn_sup_vRVolumeUnit
,
3360 { "vRVolumeUnit", "isdn-sup.vRVolumeUnit",
3361 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_VolumeUnit_vals
), 0,
3362 "VolumeUnit", HFILL
}},
3363 { &hf_isdn_sup_aocdspecificCurrency
,
3364 { "specificCurrency", "isdn-sup.aocdspecificCurrency_element",
3365 FT_NONE
, BASE_NONE
, NULL
, 0,
3366 "AOCDSpecificCurrency", HFILL
}},
3367 { &hf_isdn_sup_recordedCurrency
,
3368 { "recordedCurrency", "isdn-sup.recordedCurrency_element",
3369 FT_NONE
, BASE_NONE
, NULL
, 0,
3371 { &hf_isdn_sup_typeOfChargingInfo
,
3372 { "typeOfChargingInfo", "isdn-sup.typeOfChargingInfo",
3373 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_TypeOfChargingInfo_vals
), 0,
3375 { &hf_isdn_sup_aOCDBillingId
,
3376 { "aOCDBillingId", "isdn-sup.aOCDBillingId",
3377 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCDBillingId_vals
), 0,
3379 { &hf_isdn_sup_aocdspecificchargingunits
,
3380 { "specificChargingUnits", "isdn-sup.aocdspecificchargingunits_element",
3381 FT_NONE
, BASE_NONE
, NULL
, 0,
3382 "AOCDSpecificChargingUnits", HFILL
}},
3383 { &hf_isdn_sup_recordedUnitsList
,
3384 { "recordedUnitsList", "isdn-sup.recordedUnitsList",
3385 FT_UINT32
, BASE_DEC
, NULL
, 0,
3387 { &hf_isdn_sup_rCurrency
,
3388 { "rCurrency", "isdn-sup.rCurrency",
3389 FT_STRING
, BASE_NONE
, NULL
, 0,
3390 "Currency", HFILL
}},
3391 { &hf_isdn_sup_rAmount
,
3392 { "rAmount", "isdn-sup.rAmount_element",
3393 FT_NONE
, BASE_NONE
, NULL
, 0,
3395 { &hf_isdn_sup_RecordedUnitsList_item
,
3396 { "RecordedUnits", "isdn-sup.RecordedUnits_element",
3397 FT_NONE
, BASE_NONE
, NULL
, 0,
3399 { &hf_isdn_sup_recoredunitscc
,
3400 { "cc", "isdn-sup.recoredunitscc",
3401 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_RecoredUnitsCc_vals
), 0,
3402 "RecoredUnitsCc", HFILL
}},
3403 { &hf_isdn_sup_recordedNumberOfUnits
,
3404 { "recordedNumberOfUnits", "isdn-sup.recordedNumberOfUnits",
3405 FT_UINT32
, BASE_DEC
, NULL
, 0,
3406 "NumberOfUnits", HFILL
}},
3407 { &hf_isdn_sup_notAvailable
,
3408 { "notAvailable", "isdn-sup.notAvailable_element",
3409 FT_NONE
, BASE_NONE
, NULL
, 0,
3411 { &hf_isdn_sup_recordedTypeOfUnits
,
3412 { "recordedTypeOfUnits", "isdn-sup.recordedTypeOfUnits",
3413 FT_UINT32
, BASE_DEC
, NULL
, 0,
3414 "TypeOfUnit", HFILL
}},
3415 { &hf_isdn_sup_aocecurrencycc
,
3416 { "cc", "isdn-sup.aocecurrencycc",
3417 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCECurrencyCc_vals
), 0,
3418 "AOCECurrencyCc", HFILL
}},
3419 { &hf_isdn_sup_aoceccspecificCurrency
,
3420 { "specificCurrency", "isdn-sup.aoceccspecificCurrency_element",
3421 FT_NONE
, BASE_NONE
, NULL
, 0,
3422 "AOCECcSpecificCurrency", HFILL
}},
3423 { &hf_isdn_sup_aOCEBillingId
,
3424 { "aOCEBillingId", "isdn-sup.aOCEBillingId",
3425 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCEBillingId_vals
), 0,
3427 { &hf_isdn_sup_chargingAssociation
,
3428 { "chargingAssociation", "isdn-sup.chargingAssociation",
3429 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ChargingAssociation_vals
), 0,
3431 { &hf_isdn_sup_aocechargingunitcc
,
3432 { "cc", "isdn-sup.aocechargingunitcc",
3433 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_AOCEChargingUnitCc_vals
), 0,
3434 "AOCEChargingUnitCc", HFILL
}},
3435 { &hf_isdn_sup_aoceccspecificchargingunits
,
3436 { "specificChargingUnits", "isdn-sup.aoceccspecificchargingunits_element",
3437 FT_NONE
, BASE_NONE
, NULL
, 0,
3438 "AOCECcSpecificChargingUnits", HFILL
}},
3439 { &hf_isdn_sup_currencyAmount
,
3440 { "currencyAmount", "isdn-sup.currencyAmount",
3441 FT_UINT32
, BASE_DEC
, NULL
, 0,
3443 { &hf_isdn_sup_multiplier
,
3444 { "multiplier", "isdn-sup.multiplier",
3445 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_Multiplier_vals
), 0,
3447 { &hf_isdn_sup_lengthOfTimeUnit
,
3448 { "lengthOfTimeUnit", "isdn-sup.lengthOfTimeUnit",
3449 FT_UINT32
, BASE_DEC
, NULL
, 0,
3451 { &hf_isdn_sup_scale
,
3452 { "scale", "isdn-sup.scale",
3453 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_Scale_vals
), 0,
3455 { &hf_isdn_sup_chargeNumber
,
3456 { "chargeNumber", "isdn-sup.chargeNumber",
3457 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3458 "PartyNumber", HFILL
}},
3459 { &hf_isdn_sup_chargeIdentifier
,
3460 { "chargeIdentifier", "isdn-sup.chargeIdentifier",
3461 FT_INT32
, BASE_DEC
, NULL
, 0,
3463 { &hf_isdn_sup_oARequested
,
3464 { "oARequested", "isdn-sup.oARequested",
3465 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3467 { &hf_isdn_sup_cUGIndex
,
3468 { "cUGIndex", "isdn-sup.cUGIndex",
3469 FT_UINT32
, BASE_DEC
, NULL
, 0,
3471 { &hf_isdn_sup_conferenceId
,
3472 { "conferenceId", "isdn-sup.conferenceId",
3473 FT_UINT32
, BASE_DEC
, NULL
, 0,
3475 { &hf_isdn_sup_partyId
,
3476 { "partyId", "isdn-sup.partyId",
3477 FT_UINT32
, BASE_DEC
, NULL
, 0,
3479 { &hf_isdn_sup_procedure
,
3480 { "procedure", "isdn-sup.procedure",
3481 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_Procedure_vals
), 0,
3483 { &hf_isdn_sup_basicService
,
3484 { "basicService", "isdn-sup.basicService",
3485 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_BasicService_vals
), 0,
3487 { &hf_isdn_sup_forwardedToAddress
,
3488 { "forwardedToAddress", "isdn-sup.forwardedToAddress_element",
3489 FT_NONE
, BASE_NONE
, NULL
, 0,
3490 "Address", HFILL
}},
3491 { &hf_isdn_sup_servedUserNr
,
3492 { "servedUserNr", "isdn-sup.servedUserNr",
3493 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_ServedUserNr_vals
), 0,
3495 { &hf_isdn_sup_noReplyTimer
,
3496 { "noReplyTimer", "isdn-sup.noReplyTimer",
3497 FT_UINT32
, BASE_DEC
, NULL
, 0,
3499 { &hf_isdn_sup_forwardedToAddresss
,
3500 { "forwardedToAddresss", "isdn-sup.forwardedToAddresss_element",
3501 FT_NONE
, BASE_NONE
, NULL
, 0,
3502 "Address", HFILL
}},
3503 { &hf_isdn_sup_diversionReason
,
3504 { "diversionReason", "isdn-sup.diversionReason",
3505 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_DiversionReason_vals
), 0,
3507 { &hf_isdn_sup_servedUserSubaddress
,
3508 { "servedUserSubaddress", "isdn-sup.servedUserSubaddress",
3509 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartySubaddress_vals
), 0,
3510 "PartySubaddress", HFILL
}},
3511 { &hf_isdn_sup_callingAddress
,
3512 { "callingAddress", "isdn-sup.callingAddress",
3513 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedAddressScreened_vals
), 0,
3514 "PresentedAddressScreened", HFILL
}},
3515 { &hf_isdn_sup_originalCalledNr
,
3516 { "originalCalledNr", "isdn-sup.originalCalledNr",
3517 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedNumberUnscreened_vals
), 0,
3518 "PresentedNumberUnscreened", HFILL
}},
3519 { &hf_isdn_sup_lastDivertingNr
,
3520 { "lastDivertingNr", "isdn-sup.lastDivertingNr",
3521 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedNumberUnscreened_vals
), 0,
3522 "PresentedNumberUnscreened", HFILL
}},
3523 { &hf_isdn_sup_lastDivertingReason
,
3524 { "lastDivertingReason", "isdn-sup.lastDivertingReason",
3525 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_DiversionReason_vals
), 0,
3526 "DiversionReason", HFILL
}},
3527 { &hf_isdn_sup_userInfo
,
3528 { "userInfo", "isdn-sup.userInfo",
3529 FT_BYTES
, BASE_NONE
, NULL
, 0,
3530 "Q931InformationElement", HFILL
}},
3531 { &hf_isdn_sup_deflectionAddress
,
3532 { "deflectionAddress", "isdn-sup.deflectionAddress_element",
3533 FT_NONE
, BASE_NONE
, NULL
, 0,
3534 "Address", HFILL
}},
3535 { &hf_isdn_sup_presentationAllowedDivertedToUser
,
3536 { "presentationAllowedDivertedToUser", "isdn-sup.presentationAllowedDivertedToUser",
3537 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3538 "PresentationAllowedIndicator", HFILL
}},
3539 { &hf_isdn_sup_rerouteingReason
,
3540 { "rerouteingReason", "isdn-sup.rerouteingReason",
3541 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_DiversionReason_vals
), 0,
3542 "DiversionReason", HFILL
}},
3543 { &hf_isdn_sup_calledAddress
,
3544 { "calledAddress", "isdn-sup.calledAddress_element",
3545 FT_NONE
, BASE_NONE
, NULL
, 0,
3546 "Address", HFILL
}},
3547 { &hf_isdn_sup_rerouteingCounter
,
3548 { "rerouteingCounter", "isdn-sup.rerouteingCounter",
3549 FT_UINT32
, BASE_DEC
, NULL
, 0,
3550 "DiversionCounter", HFILL
}},
3551 { &hf_isdn_sup_q931InfoElement
,
3552 { "q931InfoElement", "isdn-sup.q931InfoElement",
3553 FT_BYTES
, BASE_NONE
, NULL
, 0,
3554 "Q931InformationElement", HFILL
}},
3555 { &hf_isdn_sup_lastRerouteingNr
,
3556 { "lastRerouteingNr", "isdn-sup.lastRerouteingNr",
3557 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedNumberUnscreened_vals
), 0,
3558 "PresentedNumberUnscreened", HFILL
}},
3559 { &hf_isdn_sup_subscriptionOption
,
3560 { "subscriptionOption", "isdn-sup.subscriptionOption",
3561 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_SubscriptionOption_vals
), 0,
3563 { &hf_isdn_sup_callingPartySubaddress
,
3564 { "callingPartySubaddress", "isdn-sup.callingPartySubaddress",
3565 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartySubaddress_vals
), 0,
3566 "PartySubaddress", HFILL
}},
3567 { &hf_isdn_sup_divertedToNumber
,
3568 { "divertedToNumber", "isdn-sup.divertedToNumber",
3569 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedNumberUnscreened_vals
), 0,
3570 "PresentedNumberUnscreened", HFILL
}},
3571 { &hf_isdn_sup_diversionCounter
,
3572 { "diversionCounter", "isdn-sup.diversionCounter",
3573 FT_UINT32
, BASE_DEC
, NULL
, 0,
3575 { &hf_isdn_sup_divertingNr
,
3576 { "divertingNr", "isdn-sup.divertingNr",
3577 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PresentedNumberUnscreened_vals
), 0,
3578 "PresentedNumberUnscreened", HFILL
}},
3579 { &hf_isdn_sup_IntResultList_item
,
3580 { "IntResult", "isdn-sup.IntResult_element",
3581 FT_NONE
, BASE_NONE
, NULL
, 0,
3583 { &hf_isdn_sup_individualNumber
,
3584 { "individualNumber", "isdn-sup.individualNumber",
3585 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3586 "PartyNumber", HFILL
}},
3587 { &hf_isdn_sup_allNumbers
,
3588 { "allNumbers", "isdn-sup.allNumbers_element",
3589 FT_NONE
, BASE_NONE
, NULL
, 0,
3591 { &hf_isdn_sup_ServedUserNumberList_item
,
3592 { "PartyNumber", "isdn-sup.PartyNumber",
3593 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3595 { &hf_isdn_sup_service
,
3596 { "service", "isdn-sup.service",
3597 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_Service_vals
), 0,
3599 { &hf_isdn_sup_preferred
,
3600 { "preferred", "isdn-sup.preferred",
3601 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
3603 { &hf_isdn_sup_servedUserDestination
,
3604 { "servedUserDestination", "isdn-sup.servedUserDestination",
3605 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3606 "PartyNumber", HFILL
}},
3607 { &hf_isdn_sup_queueIdentity
,
3608 { "queueIdentity", "isdn-sup.queueIdentity",
3609 FT_UINT32
, BASE_DEC
, NULL
, 0,
3611 { &hf_isdn_sup_fPHReference
,
3612 { "fPHReference", "isdn-sup.fPHReference",
3613 FT_UINT32
, BASE_DEC
, NULL
, 0,
3615 { &hf_isdn_sup_calledFreephoneNr
,
3616 { "calledFreephoneNr", "isdn-sup.calledFreephoneNr",
3617 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PartyNumber_vals
), 0,
3619 { &hf_isdn_sup_mlppParams
,
3620 { "mlppParams", "isdn-sup.mlppParams_element",
3621 FT_NONE
, BASE_NONE
, NULL
, 0,
3623 { &hf_isdn_sup_ieArg
,
3624 { "ieArg", "isdn-sup.ieArg",
3625 FT_BYTES
, BASE_NONE
, NULL
, 0,
3627 { &hf_isdn_sup_precLevel
,
3628 { "precLevel", "isdn-sup.precLevel",
3629 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_PrecLevel_vals
), 0,
3631 { &hf_isdn_sup_lfbIndictn
,
3632 { "lfbIndictn", "isdn-sup.lfbIndictn",
3633 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_LFBIndictn_vals
), 0,
3635 { &hf_isdn_sup_mlppSvcDomn
,
3636 { "mlppSvcDomn", "isdn-sup.mlppSvcDomn",
3637 FT_BYTES
, BASE_NONE
, NULL
, 0,
3639 { &hf_isdn_sup_statusQuery
,
3640 { "statusQuery", "isdn-sup.statusQuery",
3641 FT_UINT32
, BASE_DEC
, VALS(isdn_sup_StatusQuery_vals
), 0,
3643 { &hf_isdn_sup_location
,
3644 { "location", "isdn-sup.location",
3645 FT_BYTES
, BASE_NONE
, NULL
, 0,
3649 /* List of subtrees */
3650 static int *ett
[] = {
3653 &ett_isdn_sup_PresentedAddressScreened
,
3654 &ett_isdn_sup_PresentedAddressUnscreened
,
3655 &ett_isdn_sup_PresentedNumberScreened
,
3656 &ett_isdn_sup_PresentedNumberUnscreened
,
3657 &ett_isdn_sup_AddressScreened
,
3658 &ett_isdn_sup_NumberScreened
,
3659 &ett_isdn_sup_Address
,
3660 &ett_isdn_sup_PartyNumber
,
3661 &ett_isdn_sup_PublicPartyNumber
,
3662 &ett_isdn_sup_PrivatePartyNumber
,
3663 &ett_isdn_sup_PartySubaddress
,
3664 &ett_isdn_sup_UserSpecifiedSubaddress
,
3665 &ett_isdn_sup_ChargingRequestRes
,
3666 &ett_isdn_sup_AOCSCurrencyArg
,
3667 &ett_isdn_sup_AOCSSpecialArrArg
,
3668 &ett_isdn_sup_AOCDCurrencyArg
,
3669 &ett_isdn_sup_AOCDChargingUnitArg
,
3670 &ett_isdn_sup_AOCECurrencyArg
,
3671 &ett_isdn_sup_AOCEChargingUnitArg
,
3672 &ett_isdn_sup_AOCSCurrencyInfoList
,
3673 &ett_isdn_sup_AOCSCurrencyInfo
,
3674 &ett_isdn_sup_T_chargingtype
,
3675 &ett_isdn_sup_AOCSChargingTypeSpecificCurrency
,
3676 &ett_isdn_sup_DurationCurrency
,
3677 &ett_isdn_sup_FlatRateCurrency
,
3678 &ett_isdn_sup_VolumeRateCurrency
,
3679 &ett_isdn_sup_AOCDCurrencyInfo
,
3680 &ett_isdn_sup_AOCDSpecificCurrency
,
3681 &ett_isdn_sup_AOCDChargingUnitInfo
,
3682 &ett_isdn_sup_AOCDSpecificChargingUnits
,
3683 &ett_isdn_sup_RecordedCurrency
,
3684 &ett_isdn_sup_RecordedUnitsList
,
3685 &ett_isdn_sup_RecordedUnits
,
3686 &ett_isdn_sup_RecoredUnitsCc
,
3687 &ett_isdn_sup_AOCECurrencyInfo
,
3688 &ett_isdn_sup_AOCECurrencyCc
,
3689 &ett_isdn_sup_AOCECcSpecificCurrency
,
3690 &ett_isdn_sup_AOCEChargingUnitInfo
,
3691 &ett_isdn_sup_AOCEChargingUnitCc
,
3692 &ett_isdn_sup_AOCECcSpecificChargingUnits
,
3693 &ett_isdn_sup_Amount
,
3695 &ett_isdn_sup_ChargingAssociation
,
3696 &ett_isdn_sup_CUGcallArg
,
3697 &ett_isdn_sup_BeginCONFRes
,
3698 &ett_isdn_sup_SplitCONFArg
,
3699 &ett_isdn_sup_ActivationDiversionArg
,
3700 &ett_isdn_sup_DeactivationDiversionArg
,
3701 &ett_isdn_sup_ActivationStatusNotificationDivArg
,
3702 &ett_isdn_sup_DeactivationStatusNotificationDivArg
,
3703 &ett_isdn_sup_InterrogationDiversionArg
,
3704 &ett_isdn_sup_DiversionInformationArg
,
3705 &ett_isdn_sup_CallDeflectionArg
,
3706 &ett_isdn_sup_CallRerouteingArg
,
3707 &ett_isdn_sup_DivertingLegInformation1Arg
,
3708 &ett_isdn_sup_DivertingLegInformation2Arg
,
3709 &ett_isdn_sup_IntResultList
,
3710 &ett_isdn_sup_IntResult
,
3711 &ett_isdn_sup_ServedUserNr
,
3712 &ett_isdn_sup_ServedUserNumberList
,
3713 &ett_isdn_sup_UserUserServiceArg
,
3714 &ett_isdn_sup_Monitor_T_FPHArg
,
3715 &ett_isdn_sup_Free_T_FPHArg
,
3716 &ett_isdn_sup_Call_T_FPHArg
,
3717 &ett_isdn_sup_MLPPLFBArg
,
3718 &ett_isdn_sup_MLPPParams
,
3719 &ett_isdn_sup_MLPPLFBResp
,
3722 static ei_register_info ei
[] = {
3724 { &ei_isdn_sup_unsupported_arg_type
, { "isdn_sup.unsupported.arg_type", PI_UNDECODED
, PI_WARN
, "UNSUPPORTED ARGUMENT TYPE (ETSI sup)", EXPFILL
}},
3726 { &ei_isdn_sup_unsupported_result_type
, { "isdn_sup.unsupported.result_type", PI_UNDECODED
, PI_WARN
, "UNSUPPORTED RESULT TYPE (ETSI sup)", EXPFILL
}},
3727 { &ei_isdn_sup_unsupported_error_type
, { "isdn_sup.unsupported.error_type", PI_UNDECODED
, PI_WARN
, "UNSUPPORTED ERROR TYPE (ETSI sup)", EXPFILL
}},
3730 expert_module_t
* expert_isdn_sup
;
3732 /* Register protocol */
3733 proto_isdn_sup
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
3735 /* Register fields and subtrees */
3736 proto_register_field_array(proto_isdn_sup
, hf
, array_length(hf
));
3737 proto_register_subtree_array(ett
, array_length(ett
));
3738 expert_isdn_sup
= expert_register_protocol(proto_isdn_sup
);
3739 expert_register_field_array(expert_isdn_sup
, ei
, array_length(ei
));
3741 /* Register dissectors */
3742 isdn_sup_arg_handle
= register_dissector(PFNAME
"_arg", dissect_isdn_sup_arg
, proto_isdn_sup
);
3743 isdn_sup_res_handle
= register_dissector(PFNAME
"_res", dissect_isdn_sup_res
, proto_isdn_sup
);
3744 isdn_sup_err_handle
= register_dissector(PFNAME
"_err", dissect_isdn_sup_err
, proto_isdn_sup
);