MSWSP: add two more Property Sets
[wireshark-wip.git] / epan / dissectors / packet-isdn-sup.c
blob7e3b96caf6abed841cdd30664c6a0c6956281755
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 /* ../../tools/asn2wrs.py -b -k -p isdn-sup -c ./isdn-sup.cnf -s ./packet-isdn-sup-template -D . -O ../../epan/dissectors 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 */
6 /* Input file: packet-isdn-sup-template.c */
8 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
9 /* packet-isdn-sup-template.c
10 * Routines for ETSI Integrated Services Digital Network (ISDN)
11 * supplementary services
12 * Copyright 2013, Anders Broman <anders.broman@ericsson.com>
14 * $Id$
16 * Wireshark - Network traffic analyzer
17 * By Gerald Combs <gerald@wireshark.org>
18 * Copyright 1998 Gerald Combs
20 * This program is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU General Public License
22 * as published by the Free Software Foundation; either version 2
23 * of the License, or (at your option) any later version.
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 * GNU General Public License for more details.
30 * You should have received a copy of the GNU General Public License
31 * along with this program; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
33 * References: ETSI 300 374
36 #include "config.h"
38 #include <glib.h>
39 #include <epan/packet.h>
42 #include "packet-ber.h"
44 #define PNAME "ISDN supplementary services"
45 #define PSNAME "ISDN_SUP"
46 #define PFNAME "isdn_sup"
49 /*--- Included file: packet-isdn-sup-val.h ---*/
50 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-val.h"
51 #define fPHOID "0.4.0.210.1"
53 /*--- End of included file: packet-isdn-sup-val.h ---*/
54 #line 41 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
56 /* Initialize the protocol and registered fields */
57 static int proto_isdn_sup = -1;
58 static int hf_isdn_sup_operation = -1;
59 static int hf_isdn_sup_error = -1;
61 /* Global variables */
63 #if 0
64 /* ROSE context */
65 static rose_ctx_t isdn_sup_rose_ctx;
66 #endif
68 typedef struct _isdn_sup_op_t {
69 gint32 opcode;
70 new_dissector_t arg_pdu;
71 new_dissector_t res_pdu;
72 } isdn_sup_op_t;
74 typedef struct _isdn_global_sup_op_t {
75 const char* oid;
76 new_dissector_t arg_pdu;
77 new_dissector_t res_pdu;
78 } isdn_sup_global_op_t;
81 typedef struct isdn_sup_err_t {
82 gint32 errcode;
83 new_dissector_t err_pdu;
84 } isdn_sup_err_t;
86 static const value_string isdn_sup_str_operation[] = {
88 /*--- Included file: packet-isdn-sup-table10.c ---*/
89 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-table10.c"
90 { 1, "userUserService" },
91 { 2, "cUGcall" },
92 { 3, "mCIDRequest" },
93 { 7, "activationDiversion" },
94 { 8, "deactivationDiversion" },
95 { 9, "activationStatusNotificationDiv" },
96 { 10, "deactivationStatusNotificationDiv" },
97 { 11, "interrogationDiversion" },
98 { 12, "diversionInformation" },
99 { 13, "callDeflection" },
100 { 14, "callRerouteing" },
101 { 15, "divertingLegInformation2" },
102 { 17, "interrogateServedUserNumbers" },
103 { 18, "divertingLegInformation1" },
104 { 19, "divertingLegInformation3" },
105 { 30, "chargingRequest" },
106 { 31, "aOCSCurrency" },
107 { 32, "aOCSSpecialArr" },
108 { 33, "aOCDCurrency" },
109 { 34, "aOCDChargingUnit" },
110 { 35, "aOCECurrency" },
111 { 36, "aOCEChargingUnit" },
112 { 40, "beginCONF" },
113 { 41, "addCONF" },
114 { 42, "splitCONF" },
115 { 43, "dropCONF" },
116 { 44, "isolateCONF" },
117 { 45, "reattachCONF" },
118 { 46, "partyDISC" },
120 /*--- End of included file: packet-isdn-sup-table10.c ---*/
121 #line 74 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
122 { 0, NULL}
126 static const value_string isdn_sup_str_error[] = {
128 /*--- Included file: packet-isdn-sup-table20.c ---*/
129 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-table20.c"
130 { 0, "notSubscribed" },
131 { 3, "notAvailable" },
132 { 4, "notImplemented" },
133 { 6, "invalidServedUserNr" },
134 { 7, "invalidCallState" },
135 { 8, "basicServiceNotProvided" },
136 { 9, "notIncomingCall" },
137 { 10, "supplementaryServiceInteractionNotAllowed" },
138 { 11, "resourceUnavailable" },
139 { 26, "noChargingInfoAvailable" },
140 { 16, "invalidOrUnregisteredCUGIndex" },
141 { 17, "requestedBasicServiceViolatesCUGConstraints" },
142 { 18, "outgoingCallsBarredWithinCUG" },
143 { 19, "incomingCallsBarredWithinCUG" },
144 { 20, "userNotMemberOfCUG" },
145 { 21, "inconsistencyInDesignatedFacilityAndSubscriberClass" },
146 { 28, "illConferenceId" },
147 { 29, "illPartyId" },
148 { 30, "numberOfPartiesExceeded" },
149 { 31, "notActive" },
150 { 32, "notAllowed" },
151 { 12, "invalidDivertedToNr" },
152 { 14, "specialServiceNr" },
153 { 15, "diversionToServedUserNr" },
154 { 23, "incomingCallAccepted" },
155 { 24, "numberOfDiversionsExceeded" },
156 { 46, "notActivated" },
157 { 48, "requestAlreadyAccepted" },
158 { 1, "rejectedByTheNetwork" },
159 { 2, "rejectedByTheUser" },
161 /*--- End of included file: packet-isdn-sup-table20.c ---*/
162 #line 80 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
163 { 0, NULL}
166 static int hf_isdn_sup = -1;
169 /*--- Included file: packet-isdn-sup-hf.c ---*/
170 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-hf.c"
171 static int hf_isdn_sup_ChargingRequestArg_PDU = -1; /* ChargingRequestArg */
172 static int hf_isdn_sup_ChargingRequestRes_PDU = -1; /* ChargingRequestRes */
173 static int hf_isdn_sup_AOCSCurrencyArg_PDU = -1; /* AOCSCurrencyArg */
174 static int hf_isdn_sup_AOCSSpecialArrArg_PDU = -1; /* AOCSSpecialArrArg */
175 static int hf_isdn_sup_AOCDCurrencyArg_PDU = -1; /* AOCDCurrencyArg */
176 static int hf_isdn_sup_AOCDChargingUnitArg_PDU = -1; /* AOCDChargingUnitArg */
177 static int hf_isdn_sup_AOCECurrencyArg_PDU = -1; /* AOCECurrencyArg */
178 static int hf_isdn_sup_AOCEChargingUnitArg_PDU = -1; /* AOCEChargingUnitArg */
179 static int hf_isdn_sup_CUGcallArg_PDU = -1; /* CUGcallArg */
180 static int hf_isdn_sup_BeginCONFArg_PDU = -1; /* BeginCONFArg */
181 static int hf_isdn_sup_BeginCONFRes_PDU = -1; /* BeginCONFRes */
182 static int hf_isdn_sup_AddCONFArg_PDU = -1; /* AddCONFArg */
183 static int hf_isdn_sup_AddCONFRes_PDU = -1; /* AddCONFRes */
184 static int hf_isdn_sup_SplitCONFArg_PDU = -1; /* SplitCONFArg */
185 static int hf_isdn_sup_DropCONFArg_PDU = -1; /* DropCONFArg */
186 static int hf_isdn_sup_IsolateCONFArg_PDU = -1; /* IsolateCONFArg */
187 static int hf_isdn_sup_ReattachCONFArg_PDU = -1; /* ReattachCONFArg */
188 static int hf_isdn_sup_PartyDISCArg_PDU = -1; /* PartyDISCArg */
189 static int hf_isdn_sup_ActivationDiversionArg_PDU = -1; /* ActivationDiversionArg */
190 static int hf_isdn_sup_DeactivationDiversionArg_PDU = -1; /* DeactivationDiversionArg */
191 static int hf_isdn_sup_ActivationStatusNotificationDivArg_PDU = -1; /* ActivationStatusNotificationDivArg */
192 static int hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU = -1; /* DeactivationStatusNotificationDivArg */
193 static int hf_isdn_sup_InterrogationDiversionArg_PDU = -1; /* InterrogationDiversionArg */
194 static int hf_isdn_sup_InterrogationDiversionRes_PDU = -1; /* InterrogationDiversionRes */
195 static int hf_isdn_sup_InterrogateServedUserNumbersRes_PDU = -1; /* InterrogateServedUserNumbersRes */
196 static int hf_isdn_sup_DiversionInformationArg_PDU = -1; /* DiversionInformationArg */
197 static int hf_isdn_sup_CallDeflectionArg_PDU = -1; /* CallDeflectionArg */
198 static int hf_isdn_sup_CallRerouteingArg_PDU = -1; /* CallRerouteingArg */
199 static int hf_isdn_sup_DivertingLegInformation1Arg_PDU = -1; /* DivertingLegInformation1Arg */
200 static int hf_isdn_sup_DivertingLegInformation2Arg_PDU = -1; /* DivertingLegInformation2Arg */
201 static int hf_isdn_sup_DivertingLegInformation3Arg_PDU = -1; /* DivertingLegInformation3Arg */
202 static int hf_isdn_sup_UserUserServiceArg_PDU = -1; /* UserUserServiceArg */
203 static int hf_isdn_sup_CalledFreephoneNrArg_PDU = -1; /* CalledFreephoneNrArg */
204 static int hf_isdn_sup_Monitor_T_FPHArg_PDU = -1; /* Monitor_T_FPHArg */
205 static int hf_isdn_sup_Free_T_FPHArg_PDU = -1; /* Free_T_FPHArg */
206 static int hf_isdn_sup_Call_T_FPHArg_PDU = -1; /* Call_T_FPHArg */
207 static int hf_isdn_sup_presentationallowedaddressscreened = -1; /* AddressScreened */
208 static int hf_isdn_sup_presentationRestricted = -1; /* NULL */
209 static int hf_isdn_sup_numberNotAvailableDueToInterworking = -1; /* NULL */
210 static int hf_isdn_sup_presentationrestrictedaddressscreened = -1; /* AddressScreened */
211 static int hf_isdn_sup_presentationAllowedAddress = -1; /* Address */
212 static int hf_isdn_sup_presentationRestrictedAddress = -1; /* Address */
213 static int hf_isdn_sup_presentationallowednumberscreened = -1; /* NumberScreened */
214 static int hf_isdn_sup_presentationrestrictednumberscreened = -1; /* NumberScreened */
215 static int hf_isdn_sup_presentationAllowedNumber = -1; /* PartyNumber */
216 static int hf_isdn_sup_presentationRestrictedNumber = -1; /* PartyNumber */
217 static int hf_isdn_sup_partyNumber = -1; /* PartyNumber */
218 static int hf_isdn_sup_screeningIndicator = -1; /* ScreeningIndicator */
219 static int hf_isdn_sup_partySubaddress = -1; /* PartySubaddress */
220 static int hf_isdn_sup_unknownPartyNumber = -1; /* NumberDigits */
221 static int hf_isdn_sup_publicPartyNumber = -1; /* PublicPartyNumber */
222 static int hf_isdn_sup_nsapEncodedNumber = -1; /* NsapEncodedNumber */
223 static int hf_isdn_sup_dataPartyNumber = -1; /* NumberDigits */
224 static int hf_isdn_sup_telexPartyNumber = -1; /* NumberDigits */
225 static int hf_isdn_sup_privatePartyNumber = -1; /* PrivatePartyNumber */
226 static int hf_isdn_sup_nationalStandardPartyNumber = -1; /* NumberDigits */
227 static int hf_isdn_sup_publicTypeOfNumber = -1; /* PublicTypeOfNumber */
228 static int hf_isdn_sup_publicNumberDigits = -1; /* NumberDigits */
229 static int hf_isdn_sup_privateTypeOfNumber = -1; /* PrivateTypeOfNumber */
230 static int hf_isdn_sup_privateNumberDigits = -1; /* NumberDigits */
231 static int hf_isdn_sup_userSpecifiedSubaddress = -1; /* UserSpecifiedSubaddress */
232 static int hf_isdn_sup_nSAPSubaddress = -1; /* NSAPSubaddress */
233 static int hf_isdn_sup_subaddressInformation = -1; /* SubaddressInformation */
234 static int hf_isdn_sup_oddCountIndicator = -1; /* BOOLEAN */
235 static int hf_isdn_sup_aOCSCurrencyInfoList = -1; /* AOCSCurrencyInfoList */
236 static int hf_isdn_sup_aOCSSpecialArrInfo = -1; /* AOCSSpecialArrInfo */
237 static int hf_isdn_sup_chargingInfoFollows = -1; /* NULL */
238 static int hf_isdn_sup_chargeNotAvailable = -1; /* NULL */
239 static int hf_isdn_sup_aOCDCurrencyInfo = -1; /* AOCDCurrencyInfo */
240 static int hf_isdn_sup_aOCDChargingUnitInfo = -1; /* AOCDChargingUnitInfo */
241 static int hf_isdn_sup_aOCECurrencyInfo = -1; /* AOCECurrencyInfo */
242 static int hf_isdn_sup_aOCEChargingUnitInfo = -1; /* AOCEChargingUnitInfo */
243 static int hf_isdn_sup_AOCSCurrencyInfoList_item = -1; /* AOCSCurrencyInfo */
244 static int hf_isdn_sup_chargedItem = -1; /* ChargedItem */
245 static int hf_isdn_sup_chargingtype = -1; /* T_chargingtype */
246 static int hf_isdn_sup_aocschargingtypespecificCurrency = -1; /* AOCSChargingTypeSpecificCurrency */
247 static int hf_isdn_sup_durationCurrency = -1; /* DurationCurrency */
248 static int hf_isdn_sup_flatRateCurrency = -1; /* FlatRateCurrency */
249 static int hf_isdn_sup_volumeRateCurrency = -1; /* VolumeRateCurrency */
250 static int hf_isdn_sup_specialChargingCode = -1; /* SpecialChargingCode */
251 static int hf_isdn_sup_freeOfCharge = -1; /* NULL */
252 static int hf_isdn_sup_currencyInfoNotAvailable = -1; /* NULL */
253 static int hf_isdn_sup_dCurrency = -1; /* Currency */
254 static int hf_isdn_sup_dAmount = -1; /* Amount */
255 static int hf_isdn_sup_dChargingType = -1; /* ChargingType */
256 static int hf_isdn_sup_dTime = -1; /* Time */
257 static int hf_isdn_sup_dGranularity = -1; /* Time */
258 static int hf_isdn_sup_fRCurrency = -1; /* Currency */
259 static int hf_isdn_sup_fRAmount = -1; /* Amount */
260 static int hf_isdn_sup_vRCurrency = -1; /* Currency */
261 static int hf_isdn_sup_vRAmount = -1; /* Amount */
262 static int hf_isdn_sup_vRVolumeUnit = -1; /* VolumeUnit */
263 static int hf_isdn_sup_aocdspecificCurrency = -1; /* AOCDSpecificCurrency */
264 static int hf_isdn_sup_recordedCurrency = -1; /* RecordedCurrency */
265 static int hf_isdn_sup_typeOfChargingInfo = -1; /* TypeOfChargingInfo */
266 static int hf_isdn_sup_aOCDBillingId = -1; /* AOCDBillingId */
267 static int hf_isdn_sup_aocdspecificchargingunits = -1; /* AOCDSpecificChargingUnits */
268 static int hf_isdn_sup_recordedUnitsList = -1; /* RecordedUnitsList */
269 static int hf_isdn_sup_rCurrency = -1; /* Currency */
270 static int hf_isdn_sup_rAmount = -1; /* Amount */
271 static int hf_isdn_sup_RecordedUnitsList_item = -1; /* RecordedUnits */
272 static int hf_isdn_sup_recoredunitscc = -1; /* RecoredUnitsCc */
273 static int hf_isdn_sup_recordedNumberOfUnits = -1; /* NumberOfUnits */
274 static int hf_isdn_sup_notAvailable = -1; /* NULL */
275 static int hf_isdn_sup_recordedTypeOfUnits = -1; /* TypeOfUnit */
276 static int hf_isdn_sup_aocecurrencycc = -1; /* AOCECurrencyCc */
277 static int hf_isdn_sup_aoceccspecificCurrency = -1; /* AOCECcSpecificCurrency */
278 static int hf_isdn_sup_aOCEBillingId = -1; /* AOCEBillingId */
279 static int hf_isdn_sup_chargingAssociation = -1; /* ChargingAssociation */
280 static int hf_isdn_sup_aocechargingunitcc = -1; /* AOCEChargingUnitCc */
281 static int hf_isdn_sup_aoceccspecificchargingunits = -1; /* AOCECcSpecificChargingUnits */
282 static int hf_isdn_sup_currencyAmount = -1; /* CurrencyAmount */
283 static int hf_isdn_sup_multiplier = -1; /* Multiplier */
284 static int hf_isdn_sup_lengthOfTimeUnit = -1; /* LengthOfTimeUnit */
285 static int hf_isdn_sup_scale = -1; /* Scale */
286 static int hf_isdn_sup_chargeNumber = -1; /* PartyNumber */
287 static int hf_isdn_sup_chargeIdentifier = -1; /* ChargeIdentifier */
288 static int hf_isdn_sup_oARequested = -1; /* OARequested */
289 static int hf_isdn_sup_cUGIndex = -1; /* CUGIndex */
290 static int hf_isdn_sup_conferenceId = -1; /* ConferenceId */
291 static int hf_isdn_sup_partyId = -1; /* PartyId */
292 static int hf_isdn_sup_procedure = -1; /* Procedure */
293 static int hf_isdn_sup_basicService = -1; /* BasicService */
294 static int hf_isdn_sup_forwardedToAddress = -1; /* Address */
295 static int hf_isdn_sup_servedUserNr = -1; /* ServedUserNr */
296 static int hf_isdn_sup_noReplyTimer = -1; /* NoReplyTimer */
297 static int hf_isdn_sup_forwardedToAddresss = -1; /* Address */
298 static int hf_isdn_sup_diversionReason = -1; /* DiversionReason */
299 static int hf_isdn_sup_servedUserSubaddress = -1; /* PartySubaddress */
300 static int hf_isdn_sup_callingAddress = -1; /* PresentedAddressScreened */
301 static int hf_isdn_sup_originalCalledNr = -1; /* PresentedNumberUnscreened */
302 static int hf_isdn_sup_lastDivertingNr = -1; /* PresentedNumberUnscreened */
303 static int hf_isdn_sup_lastDivertingReason = -1; /* DiversionReason */
304 static int hf_isdn_sup_userInfo = -1; /* Q931InformationElement */
305 static int hf_isdn_sup_deflectionAddress = -1; /* Address */
306 static int hf_isdn_sup_presentationAllowedDivertedToUser = -1; /* PresentationAllowedIndicator */
307 static int hf_isdn_sup_rerouteingReason = -1; /* DiversionReason */
308 static int hf_isdn_sup_calledAddress = -1; /* Address */
309 static int hf_isdn_sup_rerouteingCounter = -1; /* DiversionCounter */
310 static int hf_isdn_sup_q931InfoElement = -1; /* Q931InformationElement */
311 static int hf_isdn_sup_lastRerouteingNr = -1; /* PresentedNumberUnscreened */
312 static int hf_isdn_sup_subscriptionOption = -1; /* SubscriptionOption */
313 static int hf_isdn_sup_callingPartySubaddress = -1; /* PartySubaddress */
314 static int hf_isdn_sup_divertedToNumber = -1; /* PresentedNumberUnscreened */
315 static int hf_isdn_sup_diversionCounter = -1; /* DiversionCounter */
316 static int hf_isdn_sup_divertingNr = -1; /* PresentedNumberUnscreened */
317 static int hf_isdn_sup_IntResultList_item = -1; /* IntResult */
318 static int hf_isdn_sup_individualNumber = -1; /* PartyNumber */
319 static int hf_isdn_sup_allNumbers = -1; /* NULL */
320 static int hf_isdn_sup_ServedUserNumberList_item = -1; /* PartyNumber */
321 static int hf_isdn_sup_service = -1; /* Service */
322 static int hf_isdn_sup_preferred = -1; /* Preferred */
323 static int hf_isdn_sup_servedUserDestination = -1; /* PartyNumber */
324 static int hf_isdn_sup_queueIdentity = -1; /* QueueIdentity */
325 static int hf_isdn_sup_fPHReference = -1; /* FPHReference */
326 static int hf_isdn_sup_calledFreephoneNr = -1; /* CalledFreephoneNr */
328 /*--- End of included file: packet-isdn-sup-hf.c ---*/
329 #line 86 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
332 /* Initialize the subtree pointers */
333 static gint ett_isdn_sup = -1;
336 /*--- Included file: packet-isdn-sup-ett.c ---*/
337 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-ett.c"
338 static gint ett_isdn_sup_PresentedAddressScreened = -1;
339 static gint ett_isdn_sup_PresentedAddressUnscreened = -1;
340 static gint ett_isdn_sup_PresentedNumberScreened = -1;
341 static gint ett_isdn_sup_PresentedNumberUnscreened = -1;
342 static gint ett_isdn_sup_AddressScreened = -1;
343 static gint ett_isdn_sup_NumberScreened = -1;
344 static gint ett_isdn_sup_Address = -1;
345 static gint ett_isdn_sup_PartyNumber = -1;
346 static gint ett_isdn_sup_PublicPartyNumber = -1;
347 static gint ett_isdn_sup_PrivatePartyNumber = -1;
348 static gint ett_isdn_sup_PartySubaddress = -1;
349 static gint ett_isdn_sup_UserSpecifiedSubaddress = -1;
350 static gint ett_isdn_sup_ChargingRequestRes = -1;
351 static gint ett_isdn_sup_AOCSCurrencyArg = -1;
352 static gint ett_isdn_sup_AOCSSpecialArrArg = -1;
353 static gint ett_isdn_sup_AOCDCurrencyArg = -1;
354 static gint ett_isdn_sup_AOCDChargingUnitArg = -1;
355 static gint ett_isdn_sup_AOCECurrencyArg = -1;
356 static gint ett_isdn_sup_AOCEChargingUnitArg = -1;
357 static gint ett_isdn_sup_AOCSCurrencyInfoList = -1;
358 static gint ett_isdn_sup_AOCSCurrencyInfo = -1;
359 static gint ett_isdn_sup_T_chargingtype = -1;
360 static gint ett_isdn_sup_AOCSChargingTypeSpecificCurrency = -1;
361 static gint ett_isdn_sup_DurationCurrency = -1;
362 static gint ett_isdn_sup_FlatRateCurrency = -1;
363 static gint ett_isdn_sup_VolumeRateCurrency = -1;
364 static gint ett_isdn_sup_AOCDCurrencyInfo = -1;
365 static gint ett_isdn_sup_AOCDSpecificCurrency = -1;
366 static gint ett_isdn_sup_AOCDChargingUnitInfo = -1;
367 static gint ett_isdn_sup_AOCDSpecificChargingUnits = -1;
368 static gint ett_isdn_sup_RecordedCurrency = -1;
369 static gint ett_isdn_sup_RecordedUnitsList = -1;
370 static gint ett_isdn_sup_RecordedUnits = -1;
371 static gint ett_isdn_sup_RecoredUnitsCc = -1;
372 static gint ett_isdn_sup_AOCECurrencyInfo = -1;
373 static gint ett_isdn_sup_AOCECurrencyCc = -1;
374 static gint ett_isdn_sup_AOCECcSpecificCurrency = -1;
375 static gint ett_isdn_sup_AOCEChargingUnitInfo = -1;
376 static gint ett_isdn_sup_AOCEChargingUnitCc = -1;
377 static gint ett_isdn_sup_AOCECcSpecificChargingUnits = -1;
378 static gint ett_isdn_sup_Amount = -1;
379 static gint ett_isdn_sup_Time = -1;
380 static gint ett_isdn_sup_ChargingAssociation = -1;
381 static gint ett_isdn_sup_CUGcallArg = -1;
382 static gint ett_isdn_sup_BeginCONFRes = -1;
383 static gint ett_isdn_sup_SplitCONFArg = -1;
384 static gint ett_isdn_sup_ActivationDiversionArg = -1;
385 static gint ett_isdn_sup_DeactivationDiversionArg = -1;
386 static gint ett_isdn_sup_ActivationStatusNotificationDivArg = -1;
387 static gint ett_isdn_sup_DeactivationStatusNotificationDivArg = -1;
388 static gint ett_isdn_sup_InterrogationDiversionArg = -1;
389 static gint ett_isdn_sup_DiversionInformationArg = -1;
390 static gint ett_isdn_sup_CallDeflectionArg = -1;
391 static gint ett_isdn_sup_CallRerouteingArg = -1;
392 static gint ett_isdn_sup_DivertingLegInformation1Arg = -1;
393 static gint ett_isdn_sup_DivertingLegInformation2Arg = -1;
394 static gint ett_isdn_sup_IntResultList = -1;
395 static gint ett_isdn_sup_IntResult = -1;
396 static gint ett_isdn_sup_ServedUserNr = -1;
397 static gint ett_isdn_sup_ServedUserNumberList = -1;
398 static gint ett_isdn_sup_UserUserServiceArg = -1;
399 static gint ett_isdn_sup_Monitor_T_FPHArg = -1;
400 static gint ett_isdn_sup_Free_T_FPHArg = -1;
401 static gint ett_isdn_sup_Call_T_FPHArg = -1;
403 /*--- End of included file: packet-isdn-sup-ett.c ---*/
404 #line 92 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
407 /* Preference settings default */
409 /* Global variables */
412 /*--- Included file: packet-isdn-sup-fn.c ---*/
413 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-fn.c"
416 static int
417 dissect_isdn_sup_NumberDigits(gboolean 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_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
419 actx, tree, tvb, offset, hf_index,
420 NULL);
422 return offset;
426 static const value_string isdn_sup_PublicTypeOfNumber_vals[] = {
427 { 0, "unknown" },
428 { 1, "internationalNumber" },
429 { 2, "nationalNumber" },
430 { 3, "networkSpecificNumber" },
431 { 4, "subscriberNumber" },
432 { 6, "abbreviatedNumber" },
433 { 0, NULL }
437 static int
438 dissect_isdn_sup_PublicTypeOfNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
439 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
440 NULL);
442 return offset;
446 static const ber_sequence_t PublicPartyNumber_sequence[] = {
447 { &hf_isdn_sup_publicTypeOfNumber, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PublicTypeOfNumber },
448 { &hf_isdn_sup_publicNumberDigits, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberDigits },
449 { NULL, 0, 0, 0, NULL }
452 static int
453 dissect_isdn_sup_PublicPartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
454 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
455 PublicPartyNumber_sequence, hf_index, ett_isdn_sup_PublicPartyNumber);
457 return offset;
462 static int
463 dissect_isdn_sup_NsapEncodedNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
464 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
465 NULL);
467 return offset;
471 static const value_string isdn_sup_PrivateTypeOfNumber_vals[] = {
472 { 0, "unknown" },
473 { 1, "level2RegionalNumber" },
474 { 2, "level1RegionalNumber" },
475 { 3, "pTNSpecificNumber" },
476 { 4, "localNumber" },
477 { 6, "abbreviatedNumber" },
478 { 0, NULL }
482 static int
483 dissect_isdn_sup_PrivateTypeOfNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
484 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
485 NULL);
487 return offset;
491 static const ber_sequence_t PrivatePartyNumber_sequence[] = {
492 { &hf_isdn_sup_privateTypeOfNumber, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PrivateTypeOfNumber },
493 { &hf_isdn_sup_privateNumberDigits, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberDigits },
494 { NULL, 0, 0, 0, NULL }
497 static int
498 dissect_isdn_sup_PrivatePartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
499 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
500 PrivatePartyNumber_sequence, hf_index, ett_isdn_sup_PrivatePartyNumber);
502 return offset;
506 static const value_string isdn_sup_PartyNumber_vals[] = {
507 { 0, "unknownPartyNumber" },
508 { 1, "publicPartyNumber" },
509 { 2, "nsapEncodedNumber" },
510 { 3, "dataPartyNumber" },
511 { 4, "telexPartyNumber" },
512 { 5, "privatePartyNumber" },
513 { 8, "nationalStandardPartyNumber" },
514 { 0, NULL }
517 static const ber_choice_t PartyNumber_choice[] = {
518 { 0, &hf_isdn_sup_unknownPartyNumber, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
519 { 1, &hf_isdn_sup_publicPartyNumber, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_PublicPartyNumber },
520 { 2, &hf_isdn_sup_nsapEncodedNumber, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NsapEncodedNumber },
521 { 3, &hf_isdn_sup_dataPartyNumber, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
522 { 4, &hf_isdn_sup_telexPartyNumber, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
523 { 5, &hf_isdn_sup_privatePartyNumber, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_isdn_sup_PrivatePartyNumber },
524 { 8, &hf_isdn_sup_nationalStandardPartyNumber, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NumberDigits },
525 { 0, NULL, 0, 0, 0, NULL }
528 static int
529 dissect_isdn_sup_PartyNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
530 offset = dissect_ber_choice(actx, tree, tvb, offset,
531 PartyNumber_choice, hf_index, ett_isdn_sup_PartyNumber,
532 NULL);
534 return offset;
538 static const value_string isdn_sup_ScreeningIndicator_vals[] = {
539 { 0, "userProvidedNotScreened" },
540 { 1, "userProvidedVerifiedAndPassed" },
541 { 2, "userProvidedVerifiedAndFailed" },
542 { 3, "networkProvided" },
543 { 0, NULL }
547 static int
548 dissect_isdn_sup_ScreeningIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
549 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
550 NULL);
552 return offset;
557 static int
558 dissect_isdn_sup_SubaddressInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
559 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
560 NULL);
562 return offset;
567 static int
568 dissect_isdn_sup_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
569 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
571 return offset;
575 static const ber_sequence_t UserSpecifiedSubaddress_sequence[] = {
576 { &hf_isdn_sup_subaddressInformation, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SubaddressInformation },
577 { &hf_isdn_sup_oddCountIndicator, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BOOLEAN },
578 { NULL, 0, 0, 0, NULL }
581 static int
582 dissect_isdn_sup_UserSpecifiedSubaddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
583 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
584 UserSpecifiedSubaddress_sequence, hf_index, ett_isdn_sup_UserSpecifiedSubaddress);
586 return offset;
591 static int
592 dissect_isdn_sup_NSAPSubaddress(gboolean 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_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
594 NULL);
596 return offset;
600 static const value_string isdn_sup_PartySubaddress_vals[] = {
601 { 0, "userSpecifiedSubaddress" },
602 { 1, "nSAPSubaddress" },
603 { 0, NULL }
606 static const ber_choice_t PartySubaddress_choice[] = {
607 { 0, &hf_isdn_sup_userSpecifiedSubaddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_UserSpecifiedSubaddress },
608 { 1, &hf_isdn_sup_nSAPSubaddress, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NSAPSubaddress },
609 { 0, NULL, 0, 0, 0, NULL }
612 static int
613 dissect_isdn_sup_PartySubaddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
614 offset = dissect_ber_choice(actx, tree, tvb, offset,
615 PartySubaddress_choice, hf_index, ett_isdn_sup_PartySubaddress,
616 NULL);
618 return offset;
622 static const ber_sequence_t AddressScreened_sequence[] = {
623 { &hf_isdn_sup_partyNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
624 { &hf_isdn_sup_screeningIndicator, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ScreeningIndicator },
625 { &hf_isdn_sup_partySubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
626 { NULL, 0, 0, 0, NULL }
629 static int
630 dissect_isdn_sup_AddressScreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
631 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
632 AddressScreened_sequence, hf_index, ett_isdn_sup_AddressScreened);
634 return offset;
639 static int
640 dissect_isdn_sup_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
641 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
643 return offset;
647 static const value_string isdn_sup_PresentedAddressScreened_vals[] = {
648 { 0, "presentationAllowedAddress" },
649 { 1, "presentationRestricted" },
650 { 2, "numberNotAvailableDueToInterworking" },
651 { 3, "presentationRestrictedAddress" },
652 { 0, NULL }
655 static const ber_choice_t PresentedAddressScreened_choice[] = {
656 { 0, &hf_isdn_sup_presentationallowedaddressscreened, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_isdn_sup_AddressScreened },
657 { 1, &hf_isdn_sup_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
658 { 2, &hf_isdn_sup_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
659 { 3, &hf_isdn_sup_presentationrestrictedaddressscreened, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_AddressScreened },
660 { 0, NULL, 0, 0, 0, NULL }
663 static int
664 dissect_isdn_sup_PresentedAddressScreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
665 offset = dissect_ber_choice(actx, tree, tvb, offset,
666 PresentedAddressScreened_choice, hf_index, ett_isdn_sup_PresentedAddressScreened,
667 NULL);
669 return offset;
673 static const ber_sequence_t Address_sequence[] = {
674 { &hf_isdn_sup_partyNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
675 { &hf_isdn_sup_partySubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
676 { NULL, 0, 0, 0, NULL }
679 static int
680 dissect_isdn_sup_Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
681 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
682 Address_sequence, hf_index, ett_isdn_sup_Address);
684 return offset;
691 static const value_string isdn_sup_PresentedNumberUnscreened_vals[] = {
692 { 0, "presentationAllowedNumber" },
693 { 1, "presentationRestricted" },
694 { 2, "numberNotAvailableDueToInterworking" },
695 { 3, "presentationRestrictedNumber" },
696 { 0, NULL }
699 static const ber_choice_t PresentedNumberUnscreened_choice[] = {
700 { 0, &hf_isdn_sup_presentationAllowedNumber, BER_CLASS_CON, 0, 0, dissect_isdn_sup_PartyNumber },
701 { 1, &hf_isdn_sup_presentationRestricted, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
702 { 2, &hf_isdn_sup_numberNotAvailableDueToInterworking, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
703 { 3, &hf_isdn_sup_presentationRestrictedNumber, BER_CLASS_CON, 3, 0, dissect_isdn_sup_PartyNumber },
704 { 0, NULL, 0, 0, 0, NULL }
707 static int
708 dissect_isdn_sup_PresentedNumberUnscreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
709 offset = dissect_ber_choice(actx, tree, tvb, offset,
710 PresentedNumberUnscreened_choice, hf_index, ett_isdn_sup_PresentedNumberUnscreened,
711 NULL);
713 return offset;
718 static int
719 dissect_isdn_sup_PresentationAllowedIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
720 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
722 return offset;
726 static const value_string isdn_sup_BasicService_vals[] = {
727 { 0, "allServices" },
728 { 1, "speech" },
729 { 2, "unrestrictedDigitalInformation" },
730 { 3, "audio3k1Hz" },
731 { 4, "unrestrictedDigitalInformationWithTonesAndAnnouncements" },
732 { 5, "multirate" },
733 { 32, "telephony3k1Hz" },
734 { 33, "teletex" },
735 { 34, "telefaxGroup4Class1" },
736 { 35, "videotexSyntaxBased" },
737 { 36, "videotelephony" },
738 { 37, "telefaxGroup2-3" },
739 { 38, "telephony7kHz" },
740 { 39, "euroFileTransfer" },
741 { 40, "fileTransferAndAccessManagement" },
742 { 41, "videoconference" },
743 { 42, "audioGraphicConference" },
744 { 0, NULL }
748 static int
749 dissect_isdn_sup_BasicService(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
750 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
751 NULL);
753 return offset;
758 static int
759 dissect_isdn_sup_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
760 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
761 NULL);
763 return offset;
768 static int
769 dissect_isdn_sup_Q931InformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
770 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
771 hf_index, BER_CLASS_APP, 0, TRUE, dissect_isdn_sup_OCTET_STRING);
773 return offset;
777 static const value_string isdn_sup_ChargingCase_vals[] = {
778 { 0, "chargingInformationAtCallSetup" },
779 { 1, "chargingDuringACall" },
780 { 2, "chargingAtTheEndOfACall" },
781 { 0, NULL }
785 static int
786 dissect_isdn_sup_ChargingCase(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
787 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
788 NULL);
790 return offset;
795 static int
796 dissect_isdn_sup_ChargingRequestArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
797 offset = dissect_isdn_sup_ChargingCase(implicit_tag, tvb, offset, actx, tree, hf_index);
799 return offset;
803 static const value_string isdn_sup_ChargedItem_vals[] = {
804 { 0, "basicCommunication" },
805 { 1, "callAttempt" },
806 { 2, "callSetup" },
807 { 3, "userToUserInfo" },
808 { 4, "operationOfSupplementaryServ" },
809 { 0, NULL }
813 static int
814 dissect_isdn_sup_ChargedItem(gboolean 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,
816 NULL);
818 return offset;
823 static int
824 dissect_isdn_sup_Currency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
825 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
826 actx, tree, tvb, offset, hf_index,
827 NULL);
829 return offset;
834 static int
835 dissect_isdn_sup_CurrencyAmount(gboolean 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,
837 NULL);
839 return offset;
843 static const value_string isdn_sup_Multiplier_vals[] = {
844 { 0, "oneThousandth" },
845 { 1, "oneHundredth" },
846 { 2, "oneTenth" },
847 { 3, "one" },
848 { 4, "ten" },
849 { 5, "hundred" },
850 { 6, "thousand" },
851 { 0, NULL }
855 static int
856 dissect_isdn_sup_Multiplier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
857 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
858 NULL);
860 return offset;
864 static const ber_sequence_t Amount_sequence[] = {
865 { &hf_isdn_sup_currencyAmount, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_CurrencyAmount },
866 { &hf_isdn_sup_multiplier , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Multiplier },
867 { NULL, 0, 0, 0, NULL }
870 static int
871 dissect_isdn_sup_Amount(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
872 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
873 Amount_sequence, hf_index, ett_isdn_sup_Amount);
875 return offset;
879 static const value_string isdn_sup_ChargingType_vals[] = {
880 { 0, "continuousCharging" },
881 { 1, "stepFunction" },
882 { 0, NULL }
886 static int
887 dissect_isdn_sup_ChargingType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
888 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
889 NULL);
891 return offset;
896 static int
897 dissect_isdn_sup_LengthOfTimeUnit(gboolean 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,
899 NULL);
901 return offset;
905 static const value_string isdn_sup_Scale_vals[] = {
906 { 0, "oneHundredthSecond" },
907 { 1, "oneTenthSecond" },
908 { 2, "oneSecond" },
909 { 3, "tenSeconds" },
910 { 4, "oneMinute" },
911 { 5, "oneHour" },
912 { 6, "twentyFourHours" },
913 { 0, NULL }
917 static int
918 dissect_isdn_sup_Scale(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
919 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
920 NULL);
922 return offset;
926 static const ber_sequence_t Time_sequence[] = {
927 { &hf_isdn_sup_lengthOfTimeUnit, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_LengthOfTimeUnit },
928 { &hf_isdn_sup_scale , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Scale },
929 { NULL, 0, 0, 0, NULL }
932 static int
933 dissect_isdn_sup_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
934 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
935 Time_sequence, hf_index, ett_isdn_sup_Time);
937 return offset;
941 static const ber_sequence_t DurationCurrency_sequence[] = {
942 { &hf_isdn_sup_dCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
943 { &hf_isdn_sup_dAmount , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
944 { &hf_isdn_sup_dChargingType, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_ChargingType },
945 { &hf_isdn_sup_dTime , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Time },
946 { &hf_isdn_sup_dGranularity, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_Time },
947 { NULL, 0, 0, 0, NULL }
950 static int
951 dissect_isdn_sup_DurationCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
952 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
953 DurationCurrency_sequence, hf_index, ett_isdn_sup_DurationCurrency);
955 return offset;
959 static const ber_sequence_t FlatRateCurrency_sequence[] = {
960 { &hf_isdn_sup_fRCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
961 { &hf_isdn_sup_fRAmount , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
962 { NULL, 0, 0, 0, NULL }
965 static int
966 dissect_isdn_sup_FlatRateCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
967 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
968 FlatRateCurrency_sequence, hf_index, ett_isdn_sup_FlatRateCurrency);
970 return offset;
974 static const value_string isdn_sup_VolumeUnit_vals[] = {
975 { 0, "octet" },
976 { 1, "segment" },
977 { 2, "message" },
978 { 0, NULL }
982 static int
983 dissect_isdn_sup_VolumeUnit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
984 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
985 NULL);
987 return offset;
991 static const ber_sequence_t VolumeRateCurrency_sequence[] = {
992 { &hf_isdn_sup_vRCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
993 { &hf_isdn_sup_vRAmount , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
994 { &hf_isdn_sup_vRVolumeUnit, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_VolumeUnit },
995 { NULL, 0, 0, 0, NULL }
998 static int
999 dissect_isdn_sup_VolumeRateCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1000 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1001 VolumeRateCurrency_sequence, hf_index, ett_isdn_sup_VolumeRateCurrency);
1003 return offset;
1007 static const value_string isdn_sup_AOCSChargingTypeSpecificCurrency_vals[] = {
1008 { 1, "durationCurrency" },
1009 { 2, "flatRateCurrency" },
1010 { 3, "volumeRateCurrency" },
1011 { 0, NULL }
1014 static const ber_choice_t AOCSChargingTypeSpecificCurrency_choice[] = {
1015 { 1, &hf_isdn_sup_durationCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_DurationCurrency },
1016 { 2, &hf_isdn_sup_flatRateCurrency, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_FlatRateCurrency },
1017 { 3, &hf_isdn_sup_volumeRateCurrency, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_isdn_sup_VolumeRateCurrency },
1018 { 0, NULL, 0, 0, 0, NULL }
1021 static int
1022 dissect_isdn_sup_AOCSChargingTypeSpecificCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1023 offset = dissect_ber_choice(actx, tree, tvb, offset,
1024 AOCSChargingTypeSpecificCurrency_choice, hf_index, ett_isdn_sup_AOCSChargingTypeSpecificCurrency,
1025 NULL);
1027 return offset;
1032 static int
1033 dissect_isdn_sup_SpecialChargingCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1034 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1035 NULL);
1037 return offset;
1041 static const value_string isdn_sup_T_chargingtype_vals[] = {
1042 { 0, "specificCurrency" },
1043 { 1, "specialChargingCode" },
1044 { 2, "freeOfCharge" },
1045 { 3, "currencyInfoNotAvailable" },
1046 { 0, NULL }
1049 static const ber_choice_t T_chargingtype_choice[] = {
1050 { 0, &hf_isdn_sup_aocschargingtypespecificCurrency, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSChargingTypeSpecificCurrency },
1051 { 1, &hf_isdn_sup_specialChargingCode, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SpecialChargingCode },
1052 { 2, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1053 { 3, &hf_isdn_sup_currencyInfoNotAvailable, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1054 { 0, NULL, 0, 0, 0, NULL }
1057 static int
1058 dissect_isdn_sup_T_chargingtype(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1059 offset = dissect_ber_choice(actx, tree, tvb, offset,
1060 T_chargingtype_choice, hf_index, ett_isdn_sup_T_chargingtype,
1061 NULL);
1063 return offset;
1067 static const ber_sequence_t AOCSCurrencyInfo_sequence[] = {
1068 { &hf_isdn_sup_chargedItem, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ChargedItem },
1069 { &hf_isdn_sup_chargingtype, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_T_chargingtype },
1070 { NULL, 0, 0, 0, NULL }
1073 static int
1074 dissect_isdn_sup_AOCSCurrencyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1075 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1076 AOCSCurrencyInfo_sequence, hf_index, ett_isdn_sup_AOCSCurrencyInfo);
1078 return offset;
1082 static const ber_sequence_t AOCSCurrencyInfoList_sequence_of[1] = {
1083 { &hf_isdn_sup_AOCSCurrencyInfoList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfo },
1086 static int
1087 dissect_isdn_sup_AOCSCurrencyInfoList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1088 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1089 AOCSCurrencyInfoList_sequence_of, hf_index, ett_isdn_sup_AOCSCurrencyInfoList);
1091 return offset;
1096 static int
1097 dissect_isdn_sup_AOCSSpecialArrInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1098 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1099 NULL);
1101 return offset;
1105 static const value_string isdn_sup_ChargingRequestRes_vals[] = {
1106 { 0, "aOCSCurrencyInfoList" },
1107 { 1, "aOCSSpecialArrInfo" },
1108 { 2, "chargingInfoFollows" },
1109 { 0, NULL }
1112 static const ber_choice_t ChargingRequestRes_choice[] = {
1113 { 0, &hf_isdn_sup_aOCSCurrencyInfoList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfoList },
1114 { 1, &hf_isdn_sup_aOCSSpecialArrInfo, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSSpecialArrInfo },
1115 { 2, &hf_isdn_sup_chargingInfoFollows, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1116 { 0, NULL, 0, 0, 0, NULL }
1119 static int
1120 dissect_isdn_sup_ChargingRequestRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1121 offset = dissect_ber_choice(actx, tree, tvb, offset,
1122 ChargingRequestRes_choice, hf_index, ett_isdn_sup_ChargingRequestRes,
1123 NULL);
1125 return offset;
1129 static const value_string isdn_sup_AOCSCurrencyArg_vals[] = {
1130 { 0, "chargeNotAvailable" },
1131 { 1, "aOCSCurrencyInfoList" },
1132 { 0, NULL }
1135 static const ber_choice_t AOCSCurrencyArg_choice[] = {
1136 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1137 { 1, &hf_isdn_sup_aOCSCurrencyInfoList, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSCurrencyInfoList },
1138 { 0, NULL, 0, 0, 0, NULL }
1141 static int
1142 dissect_isdn_sup_AOCSCurrencyArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1143 offset = dissect_ber_choice(actx, tree, tvb, offset,
1144 AOCSCurrencyArg_choice, hf_index, ett_isdn_sup_AOCSCurrencyArg,
1145 NULL);
1147 return offset;
1151 static const value_string isdn_sup_AOCSSpecialArrArg_vals[] = {
1152 { 0, "chargeNotAvailable" },
1153 { 1, "aOCSSpecialArrInfo" },
1154 { 0, NULL }
1157 static const ber_choice_t AOCSSpecialArrArg_choice[] = {
1158 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1159 { 1, &hf_isdn_sup_aOCSSpecialArrInfo, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCSSpecialArrInfo },
1160 { 0, NULL, 0, 0, 0, NULL }
1163 static int
1164 dissect_isdn_sup_AOCSSpecialArrArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1165 offset = dissect_ber_choice(actx, tree, tvb, offset,
1166 AOCSSpecialArrArg_choice, hf_index, ett_isdn_sup_AOCSSpecialArrArg,
1167 NULL);
1169 return offset;
1173 static const ber_sequence_t RecordedCurrency_sequence[] = {
1174 { &hf_isdn_sup_rCurrency , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Currency },
1175 { &hf_isdn_sup_rAmount , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Amount },
1176 { NULL, 0, 0, 0, NULL }
1179 static int
1180 dissect_isdn_sup_RecordedCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1181 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1182 RecordedCurrency_sequence, hf_index, ett_isdn_sup_RecordedCurrency);
1184 return offset;
1188 static const value_string isdn_sup_TypeOfChargingInfo_vals[] = {
1189 { 0, "subTotal" },
1190 { 1, "total" },
1191 { 0, NULL }
1195 static int
1196 dissect_isdn_sup_TypeOfChargingInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1197 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1198 NULL);
1200 return offset;
1204 static const value_string isdn_sup_AOCDBillingId_vals[] = {
1205 { 0, "normalCharging" },
1206 { 1, "reverseCharging" },
1207 { 2, "creditCardCharging" },
1208 { 0, NULL }
1212 static int
1213 dissect_isdn_sup_AOCDBillingId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1214 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1215 NULL);
1217 return offset;
1221 static const ber_sequence_t AOCDSpecificCurrency_sequence[] = {
1222 { &hf_isdn_sup_recordedCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedCurrency },
1223 { &hf_isdn_sup_typeOfChargingInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_TypeOfChargingInfo },
1224 { &hf_isdn_sup_aOCDBillingId, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCDBillingId },
1225 { NULL, 0, 0, 0, NULL }
1228 static int
1229 dissect_isdn_sup_AOCDSpecificCurrency(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1231 AOCDSpecificCurrency_sequence, hf_index, ett_isdn_sup_AOCDSpecificCurrency);
1233 return offset;
1237 static const value_string isdn_sup_AOCDCurrencyInfo_vals[] = {
1238 { 0, "specificCurrency" },
1239 { 1, "freeOfCharge" },
1240 { 0, NULL }
1243 static const ber_choice_t AOCDCurrencyInfo_choice[] = {
1244 { 0, &hf_isdn_sup_aocdspecificCurrency, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDSpecificCurrency },
1245 { 1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1246 { 0, NULL, 0, 0, 0, NULL }
1249 static int
1250 dissect_isdn_sup_AOCDCurrencyInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251 offset = dissect_ber_choice(actx, tree, tvb, offset,
1252 AOCDCurrencyInfo_choice, hf_index, ett_isdn_sup_AOCDCurrencyInfo,
1253 NULL);
1255 return offset;
1259 static const value_string isdn_sup_AOCDCurrencyArg_vals[] = {
1260 { 0, "chargeNotAvailable" },
1261 { 1, "aOCDCurrencyInfo" },
1262 { 0, NULL }
1265 static const ber_choice_t AOCDCurrencyArg_choice[] = {
1266 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1267 { 1, &hf_isdn_sup_aOCDCurrencyInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDCurrencyInfo },
1268 { 0, NULL, 0, 0, 0, NULL }
1271 static int
1272 dissect_isdn_sup_AOCDCurrencyArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1273 offset = dissect_ber_choice(actx, tree, tvb, offset,
1274 AOCDCurrencyArg_choice, hf_index, ett_isdn_sup_AOCDCurrencyArg,
1275 NULL);
1277 return offset;
1282 static int
1283 dissect_isdn_sup_NumberOfUnits(gboolean 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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1285 NULL);
1287 return offset;
1291 static const value_string isdn_sup_RecoredUnitsCc_vals[] = {
1292 { 0, "recordedNumberOfUnits" },
1293 { 1, "notAvailable" },
1294 { 0, NULL }
1297 static const ber_choice_t RecoredUnitsCc_choice[] = {
1298 { 0, &hf_isdn_sup_recordedNumberOfUnits, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NumberOfUnits },
1299 { 1, &hf_isdn_sup_notAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1300 { 0, NULL, 0, 0, 0, NULL }
1303 static int
1304 dissect_isdn_sup_RecoredUnitsCc(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1305 offset = dissect_ber_choice(actx, tree, tvb, offset,
1306 RecoredUnitsCc_choice, hf_index, ett_isdn_sup_RecoredUnitsCc,
1307 NULL);
1309 return offset;
1314 static int
1315 dissect_isdn_sup_TypeOfUnit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1316 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1317 NULL);
1319 return offset;
1323 static const ber_sequence_t RecordedUnits_sequence[] = {
1324 { &hf_isdn_sup_recoredunitscc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_RecoredUnitsCc },
1325 { &hf_isdn_sup_recordedTypeOfUnits, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_TypeOfUnit },
1326 { NULL, 0, 0, 0, NULL }
1329 static int
1330 dissect_isdn_sup_RecordedUnits(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1331 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1332 RecordedUnits_sequence, hf_index, ett_isdn_sup_RecordedUnits);
1334 return offset;
1338 static const ber_sequence_t RecordedUnitsList_sequence_of[1] = {
1339 { &hf_isdn_sup_RecordedUnitsList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_RecordedUnits },
1342 static int
1343 dissect_isdn_sup_RecordedUnitsList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1344 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1345 RecordedUnitsList_sequence_of, hf_index, ett_isdn_sup_RecordedUnitsList);
1347 return offset;
1351 static const ber_sequence_t AOCDSpecificChargingUnits_sequence[] = {
1352 { &hf_isdn_sup_recordedUnitsList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedUnitsList },
1353 { &hf_isdn_sup_typeOfChargingInfo, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_TypeOfChargingInfo },
1354 { &hf_isdn_sup_aOCDBillingId, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCDBillingId },
1355 { NULL, 0, 0, 0, NULL }
1358 static int
1359 dissect_isdn_sup_AOCDSpecificChargingUnits(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1361 AOCDSpecificChargingUnits_sequence, hf_index, ett_isdn_sup_AOCDSpecificChargingUnits);
1363 return offset;
1367 static const value_string isdn_sup_AOCDChargingUnitInfo_vals[] = {
1368 { 0, "specificChargingUnits" },
1369 { 1, "freeOfCharge" },
1370 { 0, NULL }
1373 static const ber_choice_t AOCDChargingUnitInfo_choice[] = {
1374 { 0, &hf_isdn_sup_aocdspecificchargingunits, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDSpecificChargingUnits },
1375 { 1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1376 { 0, NULL, 0, 0, 0, NULL }
1379 static int
1380 dissect_isdn_sup_AOCDChargingUnitInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1381 offset = dissect_ber_choice(actx, tree, tvb, offset,
1382 AOCDChargingUnitInfo_choice, hf_index, ett_isdn_sup_AOCDChargingUnitInfo,
1383 NULL);
1385 return offset;
1389 static const value_string isdn_sup_AOCDChargingUnitArg_vals[] = {
1390 { 0, "chargeNotAvailable" },
1391 { 1, "aOCDChargingUnitInfo" },
1392 { 0, NULL }
1395 static const ber_choice_t AOCDChargingUnitArg_choice[] = {
1396 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1397 { 1, &hf_isdn_sup_aOCDChargingUnitInfo, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCDChargingUnitInfo },
1398 { 0, NULL, 0, 0, 0, NULL }
1401 static int
1402 dissect_isdn_sup_AOCDChargingUnitArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1403 offset = dissect_ber_choice(actx, tree, tvb, offset,
1404 AOCDChargingUnitArg_choice, hf_index, ett_isdn_sup_AOCDChargingUnitArg,
1405 NULL);
1407 return offset;
1411 static const value_string isdn_sup_AOCEBillingId_vals[] = {
1412 { 0, "normalCharging" },
1413 { 1, "reverseCharging" },
1414 { 2, "creditCardCharging" },
1415 { 3, "callForwardingUnconditional" },
1416 { 4, "callForwardingBusy" },
1417 { 5, "callForwardingNoReply" },
1418 { 6, "callDeflection" },
1419 { 7, "callTransfer" },
1420 { 0, NULL }
1424 static int
1425 dissect_isdn_sup_AOCEBillingId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1426 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1427 NULL);
1429 return offset;
1433 static const ber_sequence_t AOCECcSpecificCurrency_sequence[] = {
1434 { &hf_isdn_sup_recordedCurrency, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedCurrency },
1435 { &hf_isdn_sup_aOCEBillingId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCEBillingId },
1436 { NULL, 0, 0, 0, NULL }
1439 static int
1440 dissect_isdn_sup_AOCECcSpecificCurrency(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1442 AOCECcSpecificCurrency_sequence, hf_index, ett_isdn_sup_AOCECcSpecificCurrency);
1444 return offset;
1448 static const value_string isdn_sup_AOCECurrencyCc_vals[] = {
1449 { 0, "specificCurrency" },
1450 { 1, "freeOfCharge" },
1451 { 0, NULL }
1454 static const ber_choice_t AOCECurrencyCc_choice[] = {
1455 { 0, &hf_isdn_sup_aoceccspecificCurrency, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECcSpecificCurrency },
1456 { 1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1457 { 0, NULL, 0, 0, 0, NULL }
1460 static int
1461 dissect_isdn_sup_AOCECurrencyCc(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1462 offset = dissect_ber_choice(actx, tree, tvb, offset,
1463 AOCECurrencyCc_choice, hf_index, ett_isdn_sup_AOCECurrencyCc,
1464 NULL);
1466 return offset;
1471 static int
1472 dissect_isdn_sup_ChargeIdentifier(gboolean 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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1474 NULL);
1476 return offset;
1480 static const value_string isdn_sup_ChargingAssociation_vals[] = {
1481 { 0, "chargeNumber" },
1482 { 1, "chargeIdentifier" },
1483 { 0, NULL }
1486 static const ber_choice_t ChargingAssociation_choice[] = {
1487 { 0, &hf_isdn_sup_chargeNumber, BER_CLASS_CON, 0, 0, dissect_isdn_sup_PartyNumber },
1488 { 1, &hf_isdn_sup_chargeIdentifier, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ChargeIdentifier },
1489 { 0, NULL, 0, 0, 0, NULL }
1492 static int
1493 dissect_isdn_sup_ChargingAssociation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1494 offset = dissect_ber_choice(actx, tree, tvb, offset,
1495 ChargingAssociation_choice, hf_index, ett_isdn_sup_ChargingAssociation,
1496 NULL);
1498 return offset;
1502 static const ber_sequence_t AOCECurrencyInfo_sequence[] = {
1503 { &hf_isdn_sup_aocecurrencycc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_AOCECurrencyCc },
1504 { &hf_isdn_sup_chargingAssociation, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ChargingAssociation },
1505 { NULL, 0, 0, 0, NULL }
1508 static int
1509 dissect_isdn_sup_AOCECurrencyInfo(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1511 AOCECurrencyInfo_sequence, hf_index, ett_isdn_sup_AOCECurrencyInfo);
1513 return offset;
1517 static const value_string isdn_sup_AOCECurrencyArg_vals[] = {
1518 { 0, "chargeNotAvailable" },
1519 { 1, "aOCECurrencyInfo" },
1520 { 0, NULL }
1523 static const ber_choice_t AOCECurrencyArg_choice[] = {
1524 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1525 { 1, &hf_isdn_sup_aOCECurrencyInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECurrencyInfo },
1526 { 0, NULL, 0, 0, 0, NULL }
1529 static int
1530 dissect_isdn_sup_AOCECurrencyArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1531 offset = dissect_ber_choice(actx, tree, tvb, offset,
1532 AOCECurrencyArg_choice, hf_index, ett_isdn_sup_AOCECurrencyArg,
1533 NULL);
1535 return offset;
1539 static const ber_sequence_t AOCECcSpecificChargingUnits_sequence[] = {
1540 { &hf_isdn_sup_recordedUnitsList, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_RecordedUnitsList },
1541 { &hf_isdn_sup_aOCEBillingId, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_isdn_sup_AOCEBillingId },
1542 { NULL, 0, 0, 0, NULL }
1545 static int
1546 dissect_isdn_sup_AOCECcSpecificChargingUnits(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1548 AOCECcSpecificChargingUnits_sequence, hf_index, ett_isdn_sup_AOCECcSpecificChargingUnits);
1550 return offset;
1554 static const value_string isdn_sup_AOCEChargingUnitCc_vals[] = {
1555 { 0, "specificChargingUnits" },
1556 { 1, "freeOfCharge" },
1557 { 0, NULL }
1560 static const ber_choice_t AOCEChargingUnitCc_choice[] = {
1561 { 0, &hf_isdn_sup_aoceccspecificchargingunits, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCECcSpecificChargingUnits },
1562 { 1, &hf_isdn_sup_freeOfCharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_NULL },
1563 { 0, NULL, 0, 0, 0, NULL }
1566 static int
1567 dissect_isdn_sup_AOCEChargingUnitCc(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1568 offset = dissect_ber_choice(actx, tree, tvb, offset,
1569 AOCEChargingUnitCc_choice, hf_index, ett_isdn_sup_AOCEChargingUnitCc,
1570 NULL);
1572 return offset;
1576 static const ber_sequence_t AOCEChargingUnitInfo_sequence[] = {
1577 { &hf_isdn_sup_aocechargingunitcc, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_AOCEChargingUnitCc },
1578 { &hf_isdn_sup_chargingAssociation, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ChargingAssociation },
1579 { NULL, 0, 0, 0, NULL }
1582 static int
1583 dissect_isdn_sup_AOCEChargingUnitInfo(gboolean 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_sequence(implicit_tag, actx, tree, tvb, offset,
1585 AOCEChargingUnitInfo_sequence, hf_index, ett_isdn_sup_AOCEChargingUnitInfo);
1587 return offset;
1591 static const value_string isdn_sup_AOCEChargingUnitArg_vals[] = {
1592 { 0, "chargeNotAvailable" },
1593 { 1, "aOCEChargingUnitInfo" },
1594 { 0, NULL }
1597 static const ber_choice_t AOCEChargingUnitArg_choice[] = {
1598 { 0, &hf_isdn_sup_chargeNotAvailable, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1599 { 1, &hf_isdn_sup_aOCEChargingUnitInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_AOCEChargingUnitInfo },
1600 { 0, NULL, 0, 0, 0, NULL }
1603 static int
1604 dissect_isdn_sup_AOCEChargingUnitArg(gboolean 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_choice(actx, tree, tvb, offset,
1606 AOCEChargingUnitArg_choice, hf_index, ett_isdn_sup_AOCEChargingUnitArg,
1607 NULL);
1609 return offset;
1614 static int
1615 dissect_isdn_sup_OARequested(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1616 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1617 hf_index, BER_CLASS_CON, 1, TRUE, dissect_isdn_sup_BOOLEAN);
1619 return offset;
1624 static int
1625 dissect_isdn_sup_INTEGER_0_32767(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1626 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1627 NULL);
1629 return offset;
1634 static int
1635 dissect_isdn_sup_CUGIndex(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1637 hf_index, BER_CLASS_CON, 2, TRUE, dissect_isdn_sup_INTEGER_0_32767);
1639 return offset;
1643 static const ber_sequence_t CUGcallArg_sequence[] = {
1644 { &hf_isdn_sup_oARequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_OARequested },
1645 { &hf_isdn_sup_cUGIndex , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_CUGIndex },
1646 { NULL, 0, 0, 0, NULL }
1649 static int
1650 dissect_isdn_sup_CUGcallArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1651 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1652 CUGcallArg_sequence, hf_index, ett_isdn_sup_CUGcallArg);
1654 return offset;
1659 static int
1660 dissect_isdn_sup_ConfSize(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1661 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1662 NULL);
1664 return offset;
1669 static int
1670 dissect_isdn_sup_BeginCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1671 offset = dissect_isdn_sup_ConfSize(implicit_tag, tvb, offset, actx, tree, hf_index);
1673 return offset;
1678 static int
1679 dissect_isdn_sup_ConferenceId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1680 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1681 NULL);
1683 return offset;
1688 static int
1689 dissect_isdn_sup_PartyId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1690 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1691 NULL);
1693 return offset;
1697 static const ber_sequence_t BeginCONFRes_sequence[] = {
1698 { &hf_isdn_sup_conferenceId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ConferenceId },
1699 { &hf_isdn_sup_partyId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyId },
1700 { NULL, 0, 0, 0, NULL }
1703 static int
1704 dissect_isdn_sup_BeginCONFRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1705 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1706 BeginCONFRes_sequence, hf_index, ett_isdn_sup_BeginCONFRes);
1708 return offset;
1713 static int
1714 dissect_isdn_sup_AddCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1715 offset = dissect_isdn_sup_ConferenceId(implicit_tag, tvb, offset, actx, tree, hf_index);
1717 return offset;
1722 static int
1723 dissect_isdn_sup_AddCONFRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1724 offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1726 return offset;
1730 static const ber_sequence_t SplitCONFArg_sequence[] = {
1731 { &hf_isdn_sup_conferenceId, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_ConferenceId },
1732 { &hf_isdn_sup_partyId , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyId },
1733 { NULL, 0, 0, 0, NULL }
1736 static int
1737 dissect_isdn_sup_SplitCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1738 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1739 SplitCONFArg_sequence, hf_index, ett_isdn_sup_SplitCONFArg);
1741 return offset;
1746 static int
1747 dissect_isdn_sup_DropCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1748 offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1750 return offset;
1755 static int
1756 dissect_isdn_sup_IsolateCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1757 offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1759 return offset;
1764 static int
1765 dissect_isdn_sup_ReattachCONFArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1766 offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1768 return offset;
1773 static int
1774 dissect_isdn_sup_PartyDISCArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1775 offset = dissect_isdn_sup_PartyId(implicit_tag, tvb, offset, actx, tree, hf_index);
1777 return offset;
1781 static const value_string isdn_sup_Procedure_vals[] = {
1782 { 0, "cfu" },
1783 { 1, "cfb" },
1784 { 2, "cfnr" },
1785 { 0, NULL }
1789 static int
1790 dissect_isdn_sup_Procedure(gboolean 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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1792 NULL);
1794 return offset;
1798 static const value_string isdn_sup_ServedUserNr_vals[] = {
1799 { 0, "individualNumber" },
1800 { 1, "allNumbers" },
1801 { 0, NULL }
1804 static const ber_choice_t ServedUserNr_choice[] = {
1805 { 0, &hf_isdn_sup_individualNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PartyNumber },
1806 { 1, &hf_isdn_sup_allNumbers , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NULL },
1807 { 0, NULL, 0, 0, 0, NULL }
1810 static int
1811 dissect_isdn_sup_ServedUserNr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1812 offset = dissect_ber_choice(actx, tree, tvb, offset,
1813 ServedUserNr_choice, hf_index, ett_isdn_sup_ServedUserNr,
1814 NULL);
1816 return offset;
1821 static int
1822 dissect_isdn_sup_NoReplyTimer(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1823 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1824 NULL);
1826 return offset;
1830 static const ber_sequence_t ActivationDiversionArg_sequence[] = {
1831 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1832 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1833 { &hf_isdn_sup_forwardedToAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1834 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1835 { &hf_isdn_sup_noReplyTimer, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_NoReplyTimer },
1836 { NULL, 0, 0, 0, NULL }
1839 static int
1840 dissect_isdn_sup_ActivationDiversionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1841 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1842 ActivationDiversionArg_sequence, hf_index, ett_isdn_sup_ActivationDiversionArg);
1844 return offset;
1848 static const ber_sequence_t DeactivationDiversionArg_sequence[] = {
1849 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1850 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1851 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1852 { NULL, 0, 0, 0, NULL }
1855 static int
1856 dissect_isdn_sup_DeactivationDiversionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1857 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1858 DeactivationDiversionArg_sequence, hf_index, ett_isdn_sup_DeactivationDiversionArg);
1860 return offset;
1864 static const ber_sequence_t ActivationStatusNotificationDivArg_sequence[] = {
1865 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1866 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1867 { &hf_isdn_sup_forwardedToAddresss, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1868 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1869 { NULL, 0, 0, 0, NULL }
1872 static int
1873 dissect_isdn_sup_ActivationStatusNotificationDivArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1874 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1875 ActivationStatusNotificationDivArg_sequence, hf_index, ett_isdn_sup_ActivationStatusNotificationDivArg);
1877 return offset;
1881 static const ber_sequence_t DeactivationStatusNotificationDivArg_sequence[] = {
1882 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1883 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1884 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1885 { NULL, 0, 0, 0, NULL }
1888 static int
1889 dissect_isdn_sup_DeactivationStatusNotificationDivArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1890 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1891 DeactivationStatusNotificationDivArg_sequence, hf_index, ett_isdn_sup_DeactivationStatusNotificationDivArg);
1893 return offset;
1897 static const ber_sequence_t InterrogationDiversionArg_sequence[] = {
1898 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1899 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1900 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1901 { NULL, 0, 0, 0, NULL }
1904 static int
1905 dissect_isdn_sup_InterrogationDiversionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1906 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1907 InterrogationDiversionArg_sequence, hf_index, ett_isdn_sup_InterrogationDiversionArg);
1909 return offset;
1913 static const ber_sequence_t IntResult_sequence[] = {
1914 { &hf_isdn_sup_servedUserNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_ServedUserNr },
1915 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1916 { &hf_isdn_sup_procedure , BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Procedure },
1917 { &hf_isdn_sup_forwardedToAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
1918 { NULL, 0, 0, 0, NULL }
1921 static int
1922 dissect_isdn_sup_IntResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1923 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1924 IntResult_sequence, hf_index, ett_isdn_sup_IntResult);
1926 return offset;
1930 static const ber_sequence_t IntResultList_set_of[1] = {
1931 { &hf_isdn_sup_IntResultList_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_IntResult },
1934 static int
1935 dissect_isdn_sup_IntResultList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1936 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1937 IntResultList_set_of, hf_index, ett_isdn_sup_IntResultList);
1939 return offset;
1944 static int
1945 dissect_isdn_sup_InterrogationDiversionRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1946 offset = dissect_isdn_sup_IntResultList(implicit_tag, tvb, offset, actx, tree, hf_index);
1948 return offset;
1952 static const ber_sequence_t ServedUserNumberList_set_of[1] = {
1953 { &hf_isdn_sup_ServedUserNumberList_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
1956 static int
1957 dissect_isdn_sup_ServedUserNumberList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1958 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1959 ServedUserNumberList_set_of, hf_index, ett_isdn_sup_ServedUserNumberList);
1961 return offset;
1966 static int
1967 dissect_isdn_sup_InterrogateServedUserNumbersRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1968 offset = dissect_isdn_sup_ServedUserNumberList(implicit_tag, tvb, offset, actx, tree, hf_index);
1970 return offset;
1974 static const value_string isdn_sup_DiversionReason_vals[] = {
1975 { 0, "unknown" },
1976 { 1, "cfu" },
1977 { 2, "cfb" },
1978 { 3, "cfnr" },
1979 { 4, "cdAlerting" },
1980 { 5, "cdImmediate" },
1981 { 0, NULL }
1985 static int
1986 dissect_isdn_sup_DiversionReason(gboolean 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_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1988 NULL);
1990 return offset;
1994 static const ber_sequence_t DiversionInformationArg_sequence[] = {
1995 { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
1996 { &hf_isdn_sup_basicService, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_BasicService },
1997 { &hf_isdn_sup_servedUserSubaddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
1998 { &hf_isdn_sup_callingAddress, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedAddressScreened },
1999 { &hf_isdn_sup_originalCalledNr, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2000 { &hf_isdn_sup_lastDivertingNr, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2001 { &hf_isdn_sup_lastDivertingReason, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL, dissect_isdn_sup_DiversionReason },
2002 { &hf_isdn_sup_userInfo , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
2003 { NULL, 0, 0, 0, NULL }
2006 static int
2007 dissect_isdn_sup_DiversionInformationArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2008 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2009 DiversionInformationArg_sequence, hf_index, ett_isdn_sup_DiversionInformationArg);
2011 return offset;
2015 static const ber_sequence_t CallDeflectionArg_sequence[] = {
2016 { &hf_isdn_sup_deflectionAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
2017 { &hf_isdn_sup_presentationAllowedDivertedToUser, BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_PresentationAllowedIndicator },
2018 { NULL, 0, 0, 0, NULL }
2021 static int
2022 dissect_isdn_sup_CallDeflectionArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2023 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2024 CallDeflectionArg_sequence, hf_index, ett_isdn_sup_CallDeflectionArg);
2026 return offset;
2031 static int
2032 dissect_isdn_sup_DiversionCounter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2033 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2034 NULL);
2036 return offset;
2040 static const value_string isdn_sup_SubscriptionOption_vals[] = {
2041 { 0, "noNotification" },
2042 { 1, "notificationWithoutDivertedToNr" },
2043 { 2, "notificationWithDivertedToNr" },
2044 { 0, NULL }
2048 static int
2049 dissect_isdn_sup_SubscriptionOption(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2050 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2051 NULL);
2053 return offset;
2057 static const ber_sequence_t CallRerouteingArg_sequence[] = {
2058 { &hf_isdn_sup_rerouteingReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2059 { &hf_isdn_sup_calledAddress, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Address },
2060 { &hf_isdn_sup_rerouteingCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionCounter },
2061 { &hf_isdn_sup_q931InfoElement, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
2062 { &hf_isdn_sup_lastRerouteingNr, BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2063 { &hf_isdn_sup_subscriptionOption, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_isdn_sup_SubscriptionOption },
2064 { &hf_isdn_sup_callingPartySubaddress, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartySubaddress },
2065 { NULL, 0, 0, 0, NULL }
2068 static int
2069 dissect_isdn_sup_CallRerouteingArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2070 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2071 CallRerouteingArg_sequence, hf_index, ett_isdn_sup_CallRerouteingArg);
2073 return offset;
2077 static const ber_sequence_t DivertingLegInformation1Arg_sequence[] = {
2078 { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2079 { &hf_isdn_sup_subscriptionOption, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_SubscriptionOption },
2080 { &hf_isdn_sup_divertedToNumber, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2081 { NULL, 0, 0, 0, NULL }
2084 static int
2085 dissect_isdn_sup_DivertingLegInformation1Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2086 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2087 DivertingLegInformation1Arg_sequence, hf_index, ett_isdn_sup_DivertingLegInformation1Arg);
2089 return offset;
2093 static const ber_sequence_t DivertingLegInformation2Arg_sequence[] = {
2094 { &hf_isdn_sup_diversionCounter, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionCounter },
2095 { &hf_isdn_sup_diversionReason, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_DiversionReason },
2096 { &hf_isdn_sup_divertingNr, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2097 { &hf_isdn_sup_originalCalledNr, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PresentedNumberUnscreened },
2098 { NULL, 0, 0, 0, NULL }
2101 static int
2102 dissect_isdn_sup_DivertingLegInformation2Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2103 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2104 DivertingLegInformation2Arg_sequence, hf_index, ett_isdn_sup_DivertingLegInformation2Arg);
2106 return offset;
2111 static int
2112 dissect_isdn_sup_DivertingLegInformation3Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2113 offset = dissect_isdn_sup_PresentationAllowedIndicator(implicit_tag, tvb, offset, actx, tree, hf_index);
2115 return offset;
2119 static const value_string isdn_sup_Service_vals[] = {
2120 { 1, "service1" },
2121 { 2, "service2" },
2122 { 3, "service3" },
2123 { 0, NULL }
2127 static int
2128 dissect_isdn_sup_Service(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2129 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2130 NULL);
2132 return offset;
2137 static int
2138 dissect_isdn_sup_Preferred(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2139 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2141 return offset;
2145 static const ber_sequence_t UserUserServiceArg_sequence[] = {
2146 { &hf_isdn_sup_service , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Service },
2147 { &hf_isdn_sup_preferred , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_isdn_sup_Preferred },
2148 { NULL, 0, 0, 0, NULL }
2151 static int
2152 dissect_isdn_sup_UserUserServiceArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2153 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2154 UserUserServiceArg_sequence, hf_index, ett_isdn_sup_UserUserServiceArg);
2156 return offset;
2161 static int
2162 dissect_isdn_sup_CalledFreephoneNr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2163 offset = dissect_isdn_sup_PartyNumber(implicit_tag, tvb, offset, actx, tree, hf_index);
2165 return offset;
2170 static int
2171 dissect_isdn_sup_CalledFreephoneNrArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2172 offset = dissect_isdn_sup_CalledFreephoneNr(implicit_tag, tvb, offset, actx, tree, hf_index);
2174 return offset;
2179 static int
2180 dissect_isdn_sup_QueueIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2181 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2182 NULL);
2184 return offset;
2188 static const ber_sequence_t Monitor_T_FPHArg_sequence[] = {
2189 { &hf_isdn_sup_q931InfoElement, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_Q931InformationElement },
2190 { &hf_isdn_sup_servedUserDestination, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
2191 { &hf_isdn_sup_queueIdentity, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_isdn_sup_QueueIdentity },
2192 { NULL, 0, 0, 0, NULL }
2195 static int
2196 dissect_isdn_sup_Monitor_T_FPHArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2197 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2198 Monitor_T_FPHArg_sequence, hf_index, ett_isdn_sup_Monitor_T_FPHArg);
2200 return offset;
2205 static int
2206 dissect_isdn_sup_FPHReference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2207 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2208 NULL);
2210 return offset;
2214 static const ber_sequence_t Free_T_FPHArg_sequence[] = {
2215 { &hf_isdn_sup_servedUserDestination, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_PartyNumber },
2216 { &hf_isdn_sup_fPHReference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_FPHReference },
2217 { NULL, 0, 0, 0, NULL }
2220 static int
2221 dissect_isdn_sup_Free_T_FPHArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2222 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2223 Free_T_FPHArg_sequence, hf_index, ett_isdn_sup_Free_T_FPHArg);
2225 return offset;
2229 static const ber_sequence_t Call_T_FPHArg_sequence[] = {
2230 { &hf_isdn_sup_fPHReference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_isdn_sup_FPHReference },
2231 { &hf_isdn_sup_calledFreephoneNr, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_isdn_sup_CalledFreephoneNr },
2232 { NULL, 0, 0, 0, NULL }
2235 static int
2236 dissect_isdn_sup_Call_T_FPHArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2237 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2238 Call_T_FPHArg_sequence, hf_index, ett_isdn_sup_Call_T_FPHArg);
2240 return offset;
2243 /*--- PDUs ---*/
2245 static int dissect_ChargingRequestArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2246 int offset = 0;
2247 asn1_ctx_t asn1_ctx;
2248 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2249 offset = dissect_isdn_sup_ChargingRequestArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ChargingRequestArg_PDU);
2250 return offset;
2252 static int dissect_ChargingRequestRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2253 int offset = 0;
2254 asn1_ctx_t asn1_ctx;
2255 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2256 offset = dissect_isdn_sup_ChargingRequestRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ChargingRequestRes_PDU);
2257 return offset;
2259 static int dissect_AOCSCurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2260 int offset = 0;
2261 asn1_ctx_t asn1_ctx;
2262 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2263 offset = dissect_isdn_sup_AOCSCurrencyArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCSCurrencyArg_PDU);
2264 return offset;
2266 static int dissect_AOCSSpecialArrArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2267 int offset = 0;
2268 asn1_ctx_t asn1_ctx;
2269 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2270 offset = dissect_isdn_sup_AOCSSpecialArrArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCSSpecialArrArg_PDU);
2271 return offset;
2273 static int dissect_AOCDCurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2274 int offset = 0;
2275 asn1_ctx_t asn1_ctx;
2276 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2277 offset = dissect_isdn_sup_AOCDCurrencyArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCDCurrencyArg_PDU);
2278 return offset;
2280 static int dissect_AOCDChargingUnitArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2281 int offset = 0;
2282 asn1_ctx_t asn1_ctx;
2283 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2284 offset = dissect_isdn_sup_AOCDChargingUnitArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCDChargingUnitArg_PDU);
2285 return offset;
2287 static int dissect_AOCECurrencyArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2288 int offset = 0;
2289 asn1_ctx_t asn1_ctx;
2290 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2291 offset = dissect_isdn_sup_AOCECurrencyArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCECurrencyArg_PDU);
2292 return offset;
2294 static int dissect_AOCEChargingUnitArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2295 int offset = 0;
2296 asn1_ctx_t asn1_ctx;
2297 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2298 offset = dissect_isdn_sup_AOCEChargingUnitArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AOCEChargingUnitArg_PDU);
2299 return offset;
2301 static int dissect_CUGcallArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2302 int offset = 0;
2303 asn1_ctx_t asn1_ctx;
2304 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2305 offset = dissect_isdn_sup_CUGcallArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CUGcallArg_PDU);
2306 return offset;
2308 static int dissect_BeginCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2309 int offset = 0;
2310 asn1_ctx_t asn1_ctx;
2311 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2312 offset = dissect_isdn_sup_BeginCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_BeginCONFArg_PDU);
2313 return offset;
2315 static int dissect_BeginCONFRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2316 int offset = 0;
2317 asn1_ctx_t asn1_ctx;
2318 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2319 offset = dissect_isdn_sup_BeginCONFRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_BeginCONFRes_PDU);
2320 return offset;
2322 static int dissect_AddCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2323 int offset = 0;
2324 asn1_ctx_t asn1_ctx;
2325 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2326 offset = dissect_isdn_sup_AddCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AddCONFArg_PDU);
2327 return offset;
2329 static int dissect_AddCONFRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2330 int offset = 0;
2331 asn1_ctx_t asn1_ctx;
2332 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2333 offset = dissect_isdn_sup_AddCONFRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_AddCONFRes_PDU);
2334 return offset;
2336 static int dissect_SplitCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2337 int offset = 0;
2338 asn1_ctx_t asn1_ctx;
2339 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2340 offset = dissect_isdn_sup_SplitCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_SplitCONFArg_PDU);
2341 return offset;
2343 static int dissect_DropCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2344 int offset = 0;
2345 asn1_ctx_t asn1_ctx;
2346 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2347 offset = dissect_isdn_sup_DropCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DropCONFArg_PDU);
2348 return offset;
2350 static int dissect_IsolateCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2351 int offset = 0;
2352 asn1_ctx_t asn1_ctx;
2353 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2354 offset = dissect_isdn_sup_IsolateCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_IsolateCONFArg_PDU);
2355 return offset;
2357 static int dissect_ReattachCONFArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2358 int offset = 0;
2359 asn1_ctx_t asn1_ctx;
2360 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2361 offset = dissect_isdn_sup_ReattachCONFArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ReattachCONFArg_PDU);
2362 return offset;
2364 static int dissect_PartyDISCArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2365 int offset = 0;
2366 asn1_ctx_t asn1_ctx;
2367 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2368 offset = dissect_isdn_sup_PartyDISCArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_PartyDISCArg_PDU);
2369 return offset;
2371 static int dissect_ActivationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2372 int offset = 0;
2373 asn1_ctx_t asn1_ctx;
2374 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2375 offset = dissect_isdn_sup_ActivationDiversionArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ActivationDiversionArg_PDU);
2376 return offset;
2378 static int dissect_DeactivationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2379 int offset = 0;
2380 asn1_ctx_t asn1_ctx;
2381 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2382 offset = dissect_isdn_sup_DeactivationDiversionArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DeactivationDiversionArg_PDU);
2383 return offset;
2385 static int dissect_ActivationStatusNotificationDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2386 int offset = 0;
2387 asn1_ctx_t asn1_ctx;
2388 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2389 offset = dissect_isdn_sup_ActivationStatusNotificationDivArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_ActivationStatusNotificationDivArg_PDU);
2390 return offset;
2392 static int dissect_DeactivationStatusNotificationDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2393 int offset = 0;
2394 asn1_ctx_t asn1_ctx;
2395 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2396 offset = dissect_isdn_sup_DeactivationStatusNotificationDivArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU);
2397 return offset;
2399 static int dissect_InterrogationDiversionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2400 int offset = 0;
2401 asn1_ctx_t asn1_ctx;
2402 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2403 offset = dissect_isdn_sup_InterrogationDiversionArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogationDiversionArg_PDU);
2404 return offset;
2406 static int dissect_InterrogationDiversionRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2407 int offset = 0;
2408 asn1_ctx_t asn1_ctx;
2409 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2410 offset = dissect_isdn_sup_InterrogationDiversionRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogationDiversionRes_PDU);
2411 return offset;
2413 static int dissect_InterrogateServedUserNumbersRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2414 int offset = 0;
2415 asn1_ctx_t asn1_ctx;
2416 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2417 offset = dissect_isdn_sup_InterrogateServedUserNumbersRes(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_InterrogateServedUserNumbersRes_PDU);
2418 return offset;
2420 static int dissect_DiversionInformationArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2421 int offset = 0;
2422 asn1_ctx_t asn1_ctx;
2423 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2424 offset = dissect_isdn_sup_DiversionInformationArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DiversionInformationArg_PDU);
2425 return offset;
2427 static int dissect_CallDeflectionArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2428 int offset = 0;
2429 asn1_ctx_t asn1_ctx;
2430 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2431 offset = dissect_isdn_sup_CallDeflectionArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CallDeflectionArg_PDU);
2432 return offset;
2434 static int dissect_CallRerouteingArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2435 int offset = 0;
2436 asn1_ctx_t asn1_ctx;
2437 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2438 offset = dissect_isdn_sup_CallRerouteingArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CallRerouteingArg_PDU);
2439 return offset;
2441 static int dissect_DivertingLegInformation1Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2442 int offset = 0;
2443 asn1_ctx_t asn1_ctx;
2444 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2445 offset = dissect_isdn_sup_DivertingLegInformation1Arg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation1Arg_PDU);
2446 return offset;
2448 static int dissect_DivertingLegInformation2Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2449 int offset = 0;
2450 asn1_ctx_t asn1_ctx;
2451 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2452 offset = dissect_isdn_sup_DivertingLegInformation2Arg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation2Arg_PDU);
2453 return offset;
2455 static int dissect_DivertingLegInformation3Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2456 int offset = 0;
2457 asn1_ctx_t asn1_ctx;
2458 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2459 offset = dissect_isdn_sup_DivertingLegInformation3Arg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_DivertingLegInformation3Arg_PDU);
2460 return offset;
2462 static int dissect_UserUserServiceArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2463 int offset = 0;
2464 asn1_ctx_t asn1_ctx;
2465 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2466 offset = dissect_isdn_sup_UserUserServiceArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_UserUserServiceArg_PDU);
2467 return offset;
2469 static int dissect_CalledFreephoneNrArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2470 int offset = 0;
2471 asn1_ctx_t asn1_ctx;
2472 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2473 offset = dissect_isdn_sup_CalledFreephoneNrArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_CalledFreephoneNrArg_PDU);
2474 return offset;
2476 static int dissect_Monitor_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2477 int offset = 0;
2478 asn1_ctx_t asn1_ctx;
2479 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2480 offset = dissect_isdn_sup_Monitor_T_FPHArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Monitor_T_FPHArg_PDU);
2481 return offset;
2483 static int dissect_Free_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2484 int offset = 0;
2485 asn1_ctx_t asn1_ctx;
2486 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2487 offset = dissect_isdn_sup_Free_T_FPHArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Free_T_FPHArg_PDU);
2488 return offset;
2490 static int dissect_Call_T_FPHArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2491 int offset = 0;
2492 asn1_ctx_t asn1_ctx;
2493 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2494 offset = dissect_isdn_sup_Call_T_FPHArg(FALSE, tvb, offset, &asn1_ctx, tree, hf_isdn_sup_Call_T_FPHArg_PDU);
2495 return offset;
2499 /*--- End of included file: packet-isdn-sup-fn.c ---*/
2500 #line 99 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
2502 static const isdn_sup_op_t isdn_sup_op_tab[] = {
2504 /*--- Included file: packet-isdn-sup-table11.c ---*/
2505 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-table11.c"
2506 /* chargingRequest */ { 30, dissect_ChargingRequestArg_PDU, dissect_ChargingRequestRes_PDU },
2507 /* aOCSCurrency */ { 31, dissect_AOCSCurrencyArg_PDU, NULL },
2508 /* aOCSSpecialArr */ { 32, dissect_AOCSSpecialArrArg_PDU, NULL },
2509 /* aOCDCurrency */ { 33, dissect_AOCDCurrencyArg_PDU, NULL },
2510 /* aOCDChargingUnit */ { 34, dissect_AOCDChargingUnitArg_PDU, NULL },
2511 /* aOCECurrency */ { 35, dissect_AOCECurrencyArg_PDU, NULL },
2512 /* aOCEChargingUnit */ { 36, dissect_AOCEChargingUnitArg_PDU, NULL },
2513 /* cUGcall */ { 2, dissect_CUGcallArg_PDU, NULL },
2514 /* beginCONF */ { 40, dissect_BeginCONFArg_PDU, dissect_BeginCONFRes_PDU },
2515 /* addCONF */ { 41, dissect_AddCONFArg_PDU, dissect_AddCONFRes_PDU },
2516 /* splitCONF */ { 42, dissect_SplitCONFArg_PDU, NULL },
2517 /* dropCONF */ { 43, dissect_DropCONFArg_PDU, NULL },
2518 /* isolateCONF */ { 44, dissect_IsolateCONFArg_PDU, NULL },
2519 /* reattachCONF */ { 45, dissect_ReattachCONFArg_PDU, NULL },
2520 /* partyDISC */ { 46, dissect_PartyDISCArg_PDU, NULL },
2521 /* activationDiversion */ { 7, dissect_ActivationDiversionArg_PDU, NULL },
2522 /* deactivationDiversion */ { 8, dissect_DeactivationDiversionArg_PDU, NULL },
2523 /* activationStatusNotificationDiv */ { 9, dissect_ActivationStatusNotificationDivArg_PDU, NULL },
2524 /* deactivationStatusNotificationDiv */ { 10, dissect_DeactivationStatusNotificationDivArg_PDU, NULL },
2525 /* interrogationDiversion */ { 11, dissect_InterrogationDiversionArg_PDU, dissect_InterrogationDiversionRes_PDU },
2526 /* interrogateServedUserNumbers */ { 17, NULL, dissect_InterrogateServedUserNumbersRes_PDU },
2527 /* diversionInformation */ { 12, dissect_DiversionInformationArg_PDU, NULL },
2528 /* callDeflection */ { 13, dissect_CallDeflectionArg_PDU, NULL },
2529 /* callRerouteing */ { 14, dissect_CallRerouteingArg_PDU, NULL },
2530 /* divertingLegInformation1 */ { 18, dissect_DivertingLegInformation1Arg_PDU, NULL },
2531 /* divertingLegInformation2 */ { 15, dissect_DivertingLegInformation2Arg_PDU, NULL },
2532 /* divertingLegInformation3 */ { 19, dissect_DivertingLegInformation3Arg_PDU, NULL },
2533 /* mCIDRequest */ { 3, NULL, NULL },
2534 /* userUserService */ { 1, dissect_UserUserServiceArg_PDU, NULL },
2536 /*--- End of included file: packet-isdn-sup-table11.c ---*/
2537 #line 102 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
2541 static const isdn_sup_global_op_t isdn_sup_global_op_tab[] = {
2544 /*--- Included file: packet-isdn-sup-table31.c ---*/
2545 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-table31.c"
2546 /* callFPH */ { fPHOID".1", dissect_CalledFreephoneNrArg_PDU, NULL },
2547 /* monitor-T-FPH */ { fPHOID".2", dissect_Monitor_T_FPHArg_PDU, NULL },
2548 /* free-T-FPH */ { fPHOID".3", dissect_Free_T_FPHArg_PDU, NULL },
2549 /* call-T-FPH */ { fPHOID".4", dissect_Call_T_FPHArg_PDU, NULL },
2551 /*--- End of included file: packet-isdn-sup-table31.c ---*/
2552 #line 108 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
2555 static const isdn_sup_err_t isdn_sup_err_tab[] = {
2557 /*--- Included file: packet-isdn-sup-table21.c ---*/
2558 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-table21.c"
2559 /* notSubscribed */ { 0, NULL },
2560 /* notAvailable */ { 3, NULL },
2561 /* notImplemented */ { 4, NULL },
2562 /* invalidServedUserNr */ { 6, NULL },
2563 /* invalidCallState */ { 7, NULL },
2564 /* basicServiceNotProvided */ { 8, NULL },
2565 /* notIncomingCall */ { 9, NULL },
2566 /* supplementaryServiceInteractionNotAllowed */ { 10, NULL },
2567 /* resourceUnavailable */ { 11, NULL },
2568 /* noChargingInfoAvailable */ { 26, NULL },
2569 /* invalidOrUnregisteredCUGIndex */ { 16, NULL },
2570 /* requestedBasicServiceViolatesCUGConstraints */ { 17, NULL },
2571 /* outgoingCallsBarredWithinCUG */ { 18, NULL },
2572 /* incomingCallsBarredWithinCUG */ { 19, NULL },
2573 /* userNotMemberOfCUG */ { 20, NULL },
2574 /* inconsistencyInDesignatedFacilityAndSubscriberClass */ { 21, NULL },
2575 /* illConferenceId */ { 28, NULL },
2576 /* illPartyId */ { 29, NULL },
2577 /* numberOfPartiesExceeded */ { 30, NULL },
2578 /* notActive */ { 31, NULL },
2579 /* notAllowed */ { 32, NULL },
2580 /* invalidDivertedToNr */ { 12, NULL },
2581 /* specialServiceNr */ { 14, NULL },
2582 /* diversionToServedUserNr */ { 15, NULL },
2583 /* incomingCallAccepted */ { 23, NULL },
2584 /* numberOfDiversionsExceeded */ { 24, NULL },
2585 /* notActivated */ { 46, NULL },
2586 /* requestAlreadyAccepted */ { 48, NULL },
2587 /* rejectedByTheNetwork */ { 1, NULL },
2588 /* rejectedByTheUser */ { 2, NULL },
2590 /*--- End of included file: packet-isdn-sup-table21.c ---*/
2591 #line 112 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
2595 static const isdn_sup_op_t *get_op(gint32 opcode) {
2596 int i;
2598 /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2599 for (i = array_length(isdn_sup_op_tab) - 1; i >= 0; i--)
2600 if (isdn_sup_op_tab[i].opcode == opcode)
2601 return &isdn_sup_op_tab[i];
2602 return NULL;
2605 static const isdn_sup_err_t *get_err(gint32 errcode) {
2606 int i;
2608 /* search from the end to get the last occurrence if the operation is redefined in some newer specification */
2609 for (i = array_length(isdn_sup_err_tab) - 1; i >= 0; i--)
2610 if (isdn_sup_err_tab[i].errcode == errcode)
2611 return &isdn_sup_err_tab[i];
2612 return NULL;
2615 /*--- dissect_isdn_sup_arg ------------------------------------------------------*/
2616 static int
2617 dissect_isdn_sup_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2618 int offset;
2619 rose_ctx_t *rctx = get_rose_ctx(data);
2620 gint32 opcode = 0;
2621 const gchar *p;
2622 const isdn_sup_op_t *op_ptr;
2623 proto_item *ti;
2624 proto_tree *isdn_sup_tree;
2626 offset = 0;
2628 DISSECTOR_ASSERT(rctx);
2629 if (rctx->d.pdu != 1) /* invoke */
2630 return offset;
2631 if (rctx->d.code == 0) { /* local */
2632 opcode = rctx->d.code_local;
2633 } else {
2634 return offset;
2636 op_ptr = get_op(opcode);
2637 if (!op_ptr)
2638 return offset;
2640 ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, tvb_length(tvb), ENC_NA);
2641 isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2643 proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
2644 p = try_val_to_str(opcode, VALS(isdn_sup_str_operation));
2645 if (p) {
2646 proto_item_append_text(ti, ": %s", p);
2647 proto_item_append_text(rctx->d.code_item, " - %s", p);
2648 if (rctx->apdu_depth >= 0)
2649 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2652 if (op_ptr->arg_pdu)
2653 offset = op_ptr->arg_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2654 else
2655 if (tvb_length_remaining(tvb, offset) > 0) {
2656 proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED ARGUMENT TYPE (ETSI Sup)");
2657 offset += tvb_length_remaining(tvb, offset);
2660 return offset;
2663 /*--- dissect_isdn_sup_res -------------------------------------------------------*/
2664 static int
2665 dissect_isdn_sup_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2666 gint offset;
2667 rose_ctx_t *rctx = get_rose_ctx(data);
2668 gint32 opcode = 0;
2669 const gchar *p;
2670 const isdn_sup_op_t *op_ptr;
2671 proto_item *ti;
2672 proto_tree *isdn_sup_tree;
2674 offset = 0;
2676 DISSECTOR_ASSERT(rctx);
2677 if (rctx->d.pdu != 2) /* returnResult */
2678 return offset;
2679 if (rctx->d.code != 0) /* local */
2680 return offset;
2681 opcode = rctx->d.code_local;
2682 op_ptr = get_op(opcode);
2683 if (!op_ptr)
2684 return offset;
2686 ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, tvb_length(tvb), ENC_NA);
2687 isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2689 proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
2690 p = try_val_to_str(opcode, VALS(isdn_sup_str_operation));
2691 if (p) {
2692 proto_item_append_text(ti, ": %s", p);
2693 proto_item_append_text(rctx->d.code_item, " - %s", p);
2694 if (rctx->apdu_depth >= 0)
2695 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2698 if (op_ptr->res_pdu)
2699 offset = op_ptr->res_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2700 else
2701 if (tvb_length_remaining(tvb, offset) > 0) {
2702 proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED RESULT TYPE (ETSI sup)");
2703 offset += tvb_length_remaining(tvb, offset);
2706 return offset;
2710 /*--- dissect_isdn_sup_err ------------------------------------------------------*/
2711 static int
2712 dissect_isdn_sup_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
2713 int offset;
2714 rose_ctx_t *rctx = get_rose_ctx(data);
2715 gint32 errcode;
2716 const isdn_sup_err_t *err_ptr;
2717 const gchar *p;
2718 proto_item *ti;
2719 proto_tree *isdn_sup_tree;
2721 offset = 0;
2723 DISSECTOR_ASSERT(rctx);
2724 if (rctx->d.pdu != 3) /* returnError */
2725 return offset;
2726 if (rctx->d.code != 0) /* local */
2727 return offset;
2728 errcode = rctx->d.code_local;
2729 err_ptr = get_err(errcode);
2730 if (!err_ptr)
2731 return offset;
2733 ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, tvb_length(tvb), ENC_NA);
2734 isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
2736 proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_error, tvb, 0, 0, errcode);
2737 p = try_val_to_str(errcode, VALS(isdn_sup_str_error));
2738 if (p) {
2739 proto_item_append_text(ti, ": %s", p);
2740 proto_item_append_text(rctx->d.code_item, " - %s", p);
2741 if (rctx->apdu_depth >= 0)
2742 proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p);
2745 if (err_ptr->err_pdu)
2746 offset = err_ptr->err_pdu(tvb, pinfo, isdn_sup_tree, NULL);
2747 else
2748 if (tvb_length_remaining(tvb, offset) > 0) {
2749 proto_tree_add_text(isdn_sup_tree, tvb, offset, -1, "UNSUPPORTED ERROR TYPE (ETSI sup)");
2750 offset += tvb_length_remaining(tvb, offset);
2753 return offset;
2757 /*--- proto_reg_handoff_isdn_sup ---------------------------------------*/
2759 void proto_reg_handoff_isdn_sup(void) {
2760 int i;
2761 #if 0
2762 dissector_handle_t q931_handle;
2763 #endif
2764 dissector_handle_t isdn_sup_arg_handle;
2765 dissector_handle_t isdn_sup_res_handle;
2766 dissector_handle_t isdn_sup_err_handle;
2768 #if 0
2769 q931_handle = find_dissector("q931");
2770 #endif
2772 isdn_sup_arg_handle = new_create_dissector_handle(dissect_isdn_sup_arg, proto_isdn_sup);
2773 isdn_sup_res_handle = new_create_dissector_handle(dissect_isdn_sup_res, proto_isdn_sup);
2774 for (i=0; i<(int)array_length(isdn_sup_op_tab); i++) {
2775 dissector_add_uint("q932.ros.etsi.local.arg", isdn_sup_op_tab[i].opcode, isdn_sup_arg_handle);
2776 dissector_add_uint("q932.ros.etsi.local.res", isdn_sup_op_tab[i].opcode, isdn_sup_res_handle);
2779 for (i=0; i<(int)array_length(isdn_sup_global_op_tab); i++) {
2780 if(isdn_sup_global_op_tab->arg_pdu)
2781 dissector_add_string("q932.ros.global.arg", isdn_sup_global_op_tab[i].oid, new_create_dissector_handle(isdn_sup_global_op_tab[i].arg_pdu, proto_isdn_sup));
2782 if(isdn_sup_global_op_tab->res_pdu)
2783 dissector_add_string("q932.ros.global.res", isdn_sup_global_op_tab[i].oid, new_create_dissector_handle(isdn_sup_global_op_tab[i].res_pdu, proto_isdn_sup));
2786 isdn_sup_err_handle = new_create_dissector_handle(dissect_isdn_sup_err, proto_isdn_sup);
2788 for (i=0; i<(int)array_length(isdn_sup_err_tab); i++) {
2789 dissector_add_uint("q932.ros.etsi.local.err", isdn_sup_err_tab[i].errcode, isdn_sup_err_handle);
2795 void proto_register_isdn_sup(void) {
2797 /* List of fields */
2798 static hf_register_info hf[] = {
2799 { &hf_isdn_sup,
2800 { "isdn_sup", "isdn_sup.1",
2801 FT_INT32, BASE_DEC, NULL, 0,
2802 NULL, HFILL }
2804 { &hf_isdn_sup_operation,
2805 { "Operation", "isdn_sup.operation",
2806 FT_UINT8, BASE_DEC, VALS(isdn_sup_str_operation), 0x0,
2807 NULL, HFILL }
2809 { &hf_isdn_sup_error,
2810 { "Error", "isdn_sup.error",
2811 FT_UINT8, BASE_DEC, VALS(isdn_sup_str_error), 0x0,
2812 NULL, HFILL }
2816 /*--- Included file: packet-isdn-sup-hfarr.c ---*/
2817 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-hfarr.c"
2818 { &hf_isdn_sup_ChargingRequestArg_PDU,
2819 { "ChargingRequestArg", "isdn-sup.ChargingRequestArg",
2820 FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingCase_vals), 0,
2821 NULL, HFILL }},
2822 { &hf_isdn_sup_ChargingRequestRes_PDU,
2823 { "ChargingRequestRes", "isdn-sup.ChargingRequestRes",
2824 FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingRequestRes_vals), 0,
2825 NULL, HFILL }},
2826 { &hf_isdn_sup_AOCSCurrencyArg_PDU,
2827 { "AOCSCurrencyArg", "isdn-sup.AOCSCurrencyArg",
2828 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSCurrencyArg_vals), 0,
2829 NULL, HFILL }},
2830 { &hf_isdn_sup_AOCSSpecialArrArg_PDU,
2831 { "AOCSSpecialArrArg", "isdn-sup.AOCSSpecialArrArg",
2832 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSSpecialArrArg_vals), 0,
2833 NULL, HFILL }},
2834 { &hf_isdn_sup_AOCDCurrencyArg_PDU,
2835 { "AOCDCurrencyArg", "isdn-sup.AOCDCurrencyArg",
2836 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDCurrencyArg_vals), 0,
2837 NULL, HFILL }},
2838 { &hf_isdn_sup_AOCDChargingUnitArg_PDU,
2839 { "AOCDChargingUnitArg", "isdn-sup.AOCDChargingUnitArg",
2840 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDChargingUnitArg_vals), 0,
2841 NULL, HFILL }},
2842 { &hf_isdn_sup_AOCECurrencyArg_PDU,
2843 { "AOCECurrencyArg", "isdn-sup.AOCECurrencyArg",
2844 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCECurrencyArg_vals), 0,
2845 NULL, HFILL }},
2846 { &hf_isdn_sup_AOCEChargingUnitArg_PDU,
2847 { "AOCEChargingUnitArg", "isdn-sup.AOCEChargingUnitArg",
2848 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEChargingUnitArg_vals), 0,
2849 NULL, HFILL }},
2850 { &hf_isdn_sup_CUGcallArg_PDU,
2851 { "CUGcallArg", "isdn-sup.CUGcallArg_element",
2852 FT_NONE, BASE_NONE, NULL, 0,
2853 NULL, HFILL }},
2854 { &hf_isdn_sup_BeginCONFArg_PDU,
2855 { "BeginCONFArg", "isdn-sup.BeginCONFArg",
2856 FT_UINT32, BASE_DEC, NULL, 0,
2857 NULL, HFILL }},
2858 { &hf_isdn_sup_BeginCONFRes_PDU,
2859 { "BeginCONFRes", "isdn-sup.BeginCONFRes_element",
2860 FT_NONE, BASE_NONE, NULL, 0,
2861 NULL, HFILL }},
2862 { &hf_isdn_sup_AddCONFArg_PDU,
2863 { "AddCONFArg", "isdn-sup.AddCONFArg",
2864 FT_UINT32, BASE_DEC, NULL, 0,
2865 NULL, HFILL }},
2866 { &hf_isdn_sup_AddCONFRes_PDU,
2867 { "AddCONFRes", "isdn-sup.AddCONFRes",
2868 FT_UINT32, BASE_DEC, NULL, 0,
2869 NULL, HFILL }},
2870 { &hf_isdn_sup_SplitCONFArg_PDU,
2871 { "SplitCONFArg", "isdn-sup.SplitCONFArg_element",
2872 FT_NONE, BASE_NONE, NULL, 0,
2873 NULL, HFILL }},
2874 { &hf_isdn_sup_DropCONFArg_PDU,
2875 { "DropCONFArg", "isdn-sup.DropCONFArg",
2876 FT_UINT32, BASE_DEC, NULL, 0,
2877 NULL, HFILL }},
2878 { &hf_isdn_sup_IsolateCONFArg_PDU,
2879 { "IsolateCONFArg", "isdn-sup.IsolateCONFArg",
2880 FT_UINT32, BASE_DEC, NULL, 0,
2881 NULL, HFILL }},
2882 { &hf_isdn_sup_ReattachCONFArg_PDU,
2883 { "ReattachCONFArg", "isdn-sup.ReattachCONFArg",
2884 FT_UINT32, BASE_DEC, NULL, 0,
2885 NULL, HFILL }},
2886 { &hf_isdn_sup_PartyDISCArg_PDU,
2887 { "PartyDISCArg", "isdn-sup.PartyDISCArg",
2888 FT_UINT32, BASE_DEC, NULL, 0,
2889 NULL, HFILL }},
2890 { &hf_isdn_sup_ActivationDiversionArg_PDU,
2891 { "ActivationDiversionArg", "isdn-sup.ActivationDiversionArg_element",
2892 FT_NONE, BASE_NONE, NULL, 0,
2893 NULL, HFILL }},
2894 { &hf_isdn_sup_DeactivationDiversionArg_PDU,
2895 { "DeactivationDiversionArg", "isdn-sup.DeactivationDiversionArg_element",
2896 FT_NONE, BASE_NONE, NULL, 0,
2897 NULL, HFILL }},
2898 { &hf_isdn_sup_ActivationStatusNotificationDivArg_PDU,
2899 { "ActivationStatusNotificationDivArg", "isdn-sup.ActivationStatusNotificationDivArg_element",
2900 FT_NONE, BASE_NONE, NULL, 0,
2901 NULL, HFILL }},
2902 { &hf_isdn_sup_DeactivationStatusNotificationDivArg_PDU,
2903 { "DeactivationStatusNotificationDivArg", "isdn-sup.DeactivationStatusNotificationDivArg_element",
2904 FT_NONE, BASE_NONE, NULL, 0,
2905 NULL, HFILL }},
2906 { &hf_isdn_sup_InterrogationDiversionArg_PDU,
2907 { "InterrogationDiversionArg", "isdn-sup.InterrogationDiversionArg_element",
2908 FT_NONE, BASE_NONE, NULL, 0,
2909 NULL, HFILL }},
2910 { &hf_isdn_sup_InterrogationDiversionRes_PDU,
2911 { "InterrogationDiversionRes", "isdn-sup.InterrogationDiversionRes",
2912 FT_UINT32, BASE_DEC, NULL, 0,
2913 NULL, HFILL }},
2914 { &hf_isdn_sup_InterrogateServedUserNumbersRes_PDU,
2915 { "InterrogateServedUserNumbersRes", "isdn-sup.InterrogateServedUserNumbersRes",
2916 FT_UINT32, BASE_DEC, NULL, 0,
2917 NULL, HFILL }},
2918 { &hf_isdn_sup_DiversionInformationArg_PDU,
2919 { "DiversionInformationArg", "isdn-sup.DiversionInformationArg_element",
2920 FT_NONE, BASE_NONE, NULL, 0,
2921 NULL, HFILL }},
2922 { &hf_isdn_sup_CallDeflectionArg_PDU,
2923 { "CallDeflectionArg", "isdn-sup.CallDeflectionArg_element",
2924 FT_NONE, BASE_NONE, NULL, 0,
2925 NULL, HFILL }},
2926 { &hf_isdn_sup_CallRerouteingArg_PDU,
2927 { "CallRerouteingArg", "isdn-sup.CallRerouteingArg_element",
2928 FT_NONE, BASE_NONE, NULL, 0,
2929 NULL, HFILL }},
2930 { &hf_isdn_sup_DivertingLegInformation1Arg_PDU,
2931 { "DivertingLegInformation1Arg", "isdn-sup.DivertingLegInformation1Arg_element",
2932 FT_NONE, BASE_NONE, NULL, 0,
2933 NULL, HFILL }},
2934 { &hf_isdn_sup_DivertingLegInformation2Arg_PDU,
2935 { "DivertingLegInformation2Arg", "isdn-sup.DivertingLegInformation2Arg_element",
2936 FT_NONE, BASE_NONE, NULL, 0,
2937 NULL, HFILL }},
2938 { &hf_isdn_sup_DivertingLegInformation3Arg_PDU,
2939 { "DivertingLegInformation3Arg", "isdn-sup.DivertingLegInformation3Arg",
2940 FT_BOOLEAN, BASE_NONE, NULL, 0,
2941 NULL, HFILL }},
2942 { &hf_isdn_sup_UserUserServiceArg_PDU,
2943 { "UserUserServiceArg", "isdn-sup.UserUserServiceArg_element",
2944 FT_NONE, BASE_NONE, NULL, 0,
2945 NULL, HFILL }},
2946 { &hf_isdn_sup_CalledFreephoneNrArg_PDU,
2947 { "CalledFreephoneNrArg", "isdn-sup.CalledFreephoneNrArg",
2948 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
2949 NULL, HFILL }},
2950 { &hf_isdn_sup_Monitor_T_FPHArg_PDU,
2951 { "Monitor-T-FPHArg", "isdn-sup.Monitor_T_FPHArg_element",
2952 FT_NONE, BASE_NONE, NULL, 0,
2953 NULL, HFILL }},
2954 { &hf_isdn_sup_Free_T_FPHArg_PDU,
2955 { "Free-T-FPHArg", "isdn-sup.Free_T_FPHArg_element",
2956 FT_NONE, BASE_NONE, NULL, 0,
2957 NULL, HFILL }},
2958 { &hf_isdn_sup_Call_T_FPHArg_PDU,
2959 { "Call-T-FPHArg", "isdn-sup.Call_T_FPHArg_element",
2960 FT_NONE, BASE_NONE, NULL, 0,
2961 NULL, HFILL }},
2962 { &hf_isdn_sup_presentationallowedaddressscreened,
2963 { "presentationAllowedAddress", "isdn-sup.presentationAllowedAddress_element",
2964 FT_NONE, BASE_NONE, NULL, 0,
2965 "AddressScreened", HFILL }},
2966 { &hf_isdn_sup_presentationRestricted,
2967 { "presentationRestricted", "isdn-sup.presentationRestricted_element",
2968 FT_NONE, BASE_NONE, NULL, 0,
2969 NULL, HFILL }},
2970 { &hf_isdn_sup_numberNotAvailableDueToInterworking,
2971 { "numberNotAvailableDueToInterworking", "isdn-sup.numberNotAvailableDueToInterworking_element",
2972 FT_NONE, BASE_NONE, NULL, 0,
2973 NULL, HFILL }},
2974 { &hf_isdn_sup_presentationrestrictedaddressscreened,
2975 { "presentationRestrictedAddress", "isdn-sup.presentationRestrictedAddress_element",
2976 FT_NONE, BASE_NONE, NULL, 0,
2977 "AddressScreened", HFILL }},
2978 { &hf_isdn_sup_presentationAllowedAddress,
2979 { "presentationAllowedAddress", "isdn-sup.presentationAllowedAddress_element",
2980 FT_NONE, BASE_NONE, NULL, 0,
2981 "Address", HFILL }},
2982 { &hf_isdn_sup_presentationRestrictedAddress,
2983 { "presentationRestrictedAddress", "isdn-sup.presentationRestrictedAddress_element",
2984 FT_NONE, BASE_NONE, NULL, 0,
2985 "Address", HFILL }},
2986 { &hf_isdn_sup_presentationallowednumberscreened,
2987 { "presentationAllowedNumber", "isdn-sup.presentationAllowedNumber_element",
2988 FT_NONE, BASE_NONE, NULL, 0,
2989 "NumberScreened", HFILL }},
2990 { &hf_isdn_sup_presentationrestrictednumberscreened,
2991 { "presentationRestrictedNumber", "isdn-sup.presentationRestrictedNumber_element",
2992 FT_NONE, BASE_NONE, NULL, 0,
2993 "NumberScreened", HFILL }},
2994 { &hf_isdn_sup_presentationAllowedNumber,
2995 { "presentationAllowedNumber", "isdn-sup.presentationAllowedNumber",
2996 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
2997 "PartyNumber", HFILL }},
2998 { &hf_isdn_sup_presentationRestrictedNumber,
2999 { "presentationRestrictedNumber", "isdn-sup.presentationRestrictedNumber",
3000 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3001 "PartyNumber", HFILL }},
3002 { &hf_isdn_sup_partyNumber,
3003 { "partyNumber", "isdn-sup.partyNumber",
3004 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3005 NULL, HFILL }},
3006 { &hf_isdn_sup_screeningIndicator,
3007 { "screeningIndicator", "isdn-sup.screeningIndicator",
3008 FT_UINT32, BASE_DEC, VALS(isdn_sup_ScreeningIndicator_vals), 0,
3009 NULL, HFILL }},
3010 { &hf_isdn_sup_partySubaddress,
3011 { "partySubaddress", "isdn-sup.partySubaddress",
3012 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3013 NULL, HFILL }},
3014 { &hf_isdn_sup_unknownPartyNumber,
3015 { "unknownPartyNumber", "isdn-sup.unknownPartyNumber",
3016 FT_STRING, BASE_NONE, NULL, 0,
3017 "NumberDigits", HFILL }},
3018 { &hf_isdn_sup_publicPartyNumber,
3019 { "publicPartyNumber", "isdn-sup.publicPartyNumber_element",
3020 FT_NONE, BASE_NONE, NULL, 0,
3021 NULL, HFILL }},
3022 { &hf_isdn_sup_nsapEncodedNumber,
3023 { "nsapEncodedNumber", "isdn-sup.nsapEncodedNumber",
3024 FT_BYTES, BASE_NONE, NULL, 0,
3025 NULL, HFILL }},
3026 { &hf_isdn_sup_dataPartyNumber,
3027 { "dataPartyNumber", "isdn-sup.dataPartyNumber",
3028 FT_STRING, BASE_NONE, NULL, 0,
3029 "NumberDigits", HFILL }},
3030 { &hf_isdn_sup_telexPartyNumber,
3031 { "telexPartyNumber", "isdn-sup.telexPartyNumber",
3032 FT_STRING, BASE_NONE, NULL, 0,
3033 "NumberDigits", HFILL }},
3034 { &hf_isdn_sup_privatePartyNumber,
3035 { "privatePartyNumber", "isdn-sup.privatePartyNumber_element",
3036 FT_NONE, BASE_NONE, NULL, 0,
3037 NULL, HFILL }},
3038 { &hf_isdn_sup_nationalStandardPartyNumber,
3039 { "nationalStandardPartyNumber", "isdn-sup.nationalStandardPartyNumber",
3040 FT_STRING, BASE_NONE, NULL, 0,
3041 "NumberDigits", HFILL }},
3042 { &hf_isdn_sup_publicTypeOfNumber,
3043 { "publicTypeOfNumber", "isdn-sup.publicTypeOfNumber",
3044 FT_UINT32, BASE_DEC, VALS(isdn_sup_PublicTypeOfNumber_vals), 0,
3045 NULL, HFILL }},
3046 { &hf_isdn_sup_publicNumberDigits,
3047 { "publicNumberDigits", "isdn-sup.publicNumberDigits",
3048 FT_STRING, BASE_NONE, NULL, 0,
3049 "NumberDigits", HFILL }},
3050 { &hf_isdn_sup_privateTypeOfNumber,
3051 { "privateTypeOfNumber", "isdn-sup.privateTypeOfNumber",
3052 FT_UINT32, BASE_DEC, VALS(isdn_sup_PrivateTypeOfNumber_vals), 0,
3053 NULL, HFILL }},
3054 { &hf_isdn_sup_privateNumberDigits,
3055 { "privateNumberDigits", "isdn-sup.privateNumberDigits",
3056 FT_STRING, BASE_NONE, NULL, 0,
3057 "NumberDigits", HFILL }},
3058 { &hf_isdn_sup_userSpecifiedSubaddress,
3059 { "userSpecifiedSubaddress", "isdn-sup.userSpecifiedSubaddress_element",
3060 FT_NONE, BASE_NONE, NULL, 0,
3061 NULL, HFILL }},
3062 { &hf_isdn_sup_nSAPSubaddress,
3063 { "nSAPSubaddress", "isdn-sup.nSAPSubaddress",
3064 FT_BYTES, BASE_NONE, NULL, 0,
3065 NULL, HFILL }},
3066 { &hf_isdn_sup_subaddressInformation,
3067 { "subaddressInformation", "isdn-sup.subaddressInformation",
3068 FT_BYTES, BASE_NONE, NULL, 0,
3069 NULL, HFILL }},
3070 { &hf_isdn_sup_oddCountIndicator,
3071 { "oddCountIndicator", "isdn-sup.oddCountIndicator",
3072 FT_BOOLEAN, BASE_NONE, NULL, 0,
3073 "BOOLEAN", HFILL }},
3074 { &hf_isdn_sup_aOCSCurrencyInfoList,
3075 { "aOCSCurrencyInfoList", "isdn-sup.aOCSCurrencyInfoList",
3076 FT_UINT32, BASE_DEC, NULL, 0,
3077 NULL, HFILL }},
3078 { &hf_isdn_sup_aOCSSpecialArrInfo,
3079 { "aOCSSpecialArrInfo", "isdn-sup.aOCSSpecialArrInfo",
3080 FT_UINT32, BASE_DEC, NULL, 0,
3081 NULL, HFILL }},
3082 { &hf_isdn_sup_chargingInfoFollows,
3083 { "chargingInfoFollows", "isdn-sup.chargingInfoFollows_element",
3084 FT_NONE, BASE_NONE, NULL, 0,
3085 NULL, HFILL }},
3086 { &hf_isdn_sup_chargeNotAvailable,
3087 { "chargeNotAvailable", "isdn-sup.chargeNotAvailable_element",
3088 FT_NONE, BASE_NONE, NULL, 0,
3089 NULL, HFILL }},
3090 { &hf_isdn_sup_aOCDCurrencyInfo,
3091 { "aOCDCurrencyInfo", "isdn-sup.aOCDCurrencyInfo",
3092 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDCurrencyInfo_vals), 0,
3093 NULL, HFILL }},
3094 { &hf_isdn_sup_aOCDChargingUnitInfo,
3095 { "aOCDChargingUnitInfo", "isdn-sup.aOCDChargingUnitInfo",
3096 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDChargingUnitInfo_vals), 0,
3097 NULL, HFILL }},
3098 { &hf_isdn_sup_aOCECurrencyInfo,
3099 { "aOCECurrencyInfo", "isdn-sup.aOCECurrencyInfo_element",
3100 FT_NONE, BASE_NONE, NULL, 0,
3101 NULL, HFILL }},
3102 { &hf_isdn_sup_aOCEChargingUnitInfo,
3103 { "aOCEChargingUnitInfo", "isdn-sup.aOCEChargingUnitInfo_element",
3104 FT_NONE, BASE_NONE, NULL, 0,
3105 NULL, HFILL }},
3106 { &hf_isdn_sup_AOCSCurrencyInfoList_item,
3107 { "AOCSCurrencyInfo", "isdn-sup.AOCSCurrencyInfo_element",
3108 FT_NONE, BASE_NONE, NULL, 0,
3109 NULL, HFILL }},
3110 { &hf_isdn_sup_chargedItem,
3111 { "chargedItem", "isdn-sup.chargedItem",
3112 FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargedItem_vals), 0,
3113 NULL, HFILL }},
3114 { &hf_isdn_sup_chargingtype,
3115 { "chargingtype", "isdn-sup.chargingtype",
3116 FT_UINT32, BASE_DEC, VALS(isdn_sup_T_chargingtype_vals), 0,
3117 NULL, HFILL }},
3118 { &hf_isdn_sup_aocschargingtypespecificCurrency,
3119 { "specificCurrency", "isdn-sup.specificCurrency",
3120 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCSChargingTypeSpecificCurrency_vals), 0,
3121 "AOCSChargingTypeSpecificCurrency", HFILL }},
3122 { &hf_isdn_sup_durationCurrency,
3123 { "durationCurrency", "isdn-sup.durationCurrency_element",
3124 FT_NONE, BASE_NONE, NULL, 0,
3125 NULL, HFILL }},
3126 { &hf_isdn_sup_flatRateCurrency,
3127 { "flatRateCurrency", "isdn-sup.flatRateCurrency_element",
3128 FT_NONE, BASE_NONE, NULL, 0,
3129 NULL, HFILL }},
3130 { &hf_isdn_sup_volumeRateCurrency,
3131 { "volumeRateCurrency", "isdn-sup.volumeRateCurrency_element",
3132 FT_NONE, BASE_NONE, NULL, 0,
3133 NULL, HFILL }},
3134 { &hf_isdn_sup_specialChargingCode,
3135 { "specialChargingCode", "isdn-sup.specialChargingCode",
3136 FT_UINT32, BASE_DEC, NULL, 0,
3137 NULL, HFILL }},
3138 { &hf_isdn_sup_freeOfCharge,
3139 { "freeOfCharge", "isdn-sup.freeOfCharge_element",
3140 FT_NONE, BASE_NONE, NULL, 0,
3141 NULL, HFILL }},
3142 { &hf_isdn_sup_currencyInfoNotAvailable,
3143 { "currencyInfoNotAvailable", "isdn-sup.currencyInfoNotAvailable_element",
3144 FT_NONE, BASE_NONE, NULL, 0,
3145 NULL, HFILL }},
3146 { &hf_isdn_sup_dCurrency,
3147 { "dCurrency", "isdn-sup.dCurrency",
3148 FT_STRING, BASE_NONE, NULL, 0,
3149 "Currency", HFILL }},
3150 { &hf_isdn_sup_dAmount,
3151 { "dAmount", "isdn-sup.dAmount_element",
3152 FT_NONE, BASE_NONE, NULL, 0,
3153 "Amount", HFILL }},
3154 { &hf_isdn_sup_dChargingType,
3155 { "dChargingType", "isdn-sup.dChargingType",
3156 FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingType_vals), 0,
3157 "ChargingType", HFILL }},
3158 { &hf_isdn_sup_dTime,
3159 { "dTime", "isdn-sup.dTime_element",
3160 FT_NONE, BASE_NONE, NULL, 0,
3161 "Time", HFILL }},
3162 { &hf_isdn_sup_dGranularity,
3163 { "dGranularity", "isdn-sup.dGranularity_element",
3164 FT_NONE, BASE_NONE, NULL, 0,
3165 "Time", HFILL }},
3166 { &hf_isdn_sup_fRCurrency,
3167 { "fRCurrency", "isdn-sup.fRCurrency",
3168 FT_STRING, BASE_NONE, NULL, 0,
3169 "Currency", HFILL }},
3170 { &hf_isdn_sup_fRAmount,
3171 { "fRAmount", "isdn-sup.fRAmount_element",
3172 FT_NONE, BASE_NONE, NULL, 0,
3173 "Amount", HFILL }},
3174 { &hf_isdn_sup_vRCurrency,
3175 { "vRCurrency", "isdn-sup.vRCurrency",
3176 FT_STRING, BASE_NONE, NULL, 0,
3177 "Currency", HFILL }},
3178 { &hf_isdn_sup_vRAmount,
3179 { "vRAmount", "isdn-sup.vRAmount_element",
3180 FT_NONE, BASE_NONE, NULL, 0,
3181 "Amount", HFILL }},
3182 { &hf_isdn_sup_vRVolumeUnit,
3183 { "vRVolumeUnit", "isdn-sup.vRVolumeUnit",
3184 FT_UINT32, BASE_DEC, VALS(isdn_sup_VolumeUnit_vals), 0,
3185 "VolumeUnit", HFILL }},
3186 { &hf_isdn_sup_aocdspecificCurrency,
3187 { "specificCurrency", "isdn-sup.specificCurrency_element",
3188 FT_NONE, BASE_NONE, NULL, 0,
3189 "AOCDSpecificCurrency", HFILL }},
3190 { &hf_isdn_sup_recordedCurrency,
3191 { "recordedCurrency", "isdn-sup.recordedCurrency_element",
3192 FT_NONE, BASE_NONE, NULL, 0,
3193 NULL, HFILL }},
3194 { &hf_isdn_sup_typeOfChargingInfo,
3195 { "typeOfChargingInfo", "isdn-sup.typeOfChargingInfo",
3196 FT_UINT32, BASE_DEC, VALS(isdn_sup_TypeOfChargingInfo_vals), 0,
3197 NULL, HFILL }},
3198 { &hf_isdn_sup_aOCDBillingId,
3199 { "aOCDBillingId", "isdn-sup.aOCDBillingId",
3200 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCDBillingId_vals), 0,
3201 NULL, HFILL }},
3202 { &hf_isdn_sup_aocdspecificchargingunits,
3203 { "specificChargingUnits", "isdn-sup.specificChargingUnits_element",
3204 FT_NONE, BASE_NONE, NULL, 0,
3205 "AOCDSpecificChargingUnits", HFILL }},
3206 { &hf_isdn_sup_recordedUnitsList,
3207 { "recordedUnitsList", "isdn-sup.recordedUnitsList",
3208 FT_UINT32, BASE_DEC, NULL, 0,
3209 NULL, HFILL }},
3210 { &hf_isdn_sup_rCurrency,
3211 { "rCurrency", "isdn-sup.rCurrency",
3212 FT_STRING, BASE_NONE, NULL, 0,
3213 "Currency", HFILL }},
3214 { &hf_isdn_sup_rAmount,
3215 { "rAmount", "isdn-sup.rAmount_element",
3216 FT_NONE, BASE_NONE, NULL, 0,
3217 "Amount", HFILL }},
3218 { &hf_isdn_sup_RecordedUnitsList_item,
3219 { "RecordedUnits", "isdn-sup.RecordedUnits_element",
3220 FT_NONE, BASE_NONE, NULL, 0,
3221 NULL, HFILL }},
3222 { &hf_isdn_sup_recoredunitscc,
3223 { "cc", "isdn-sup.cc",
3224 FT_UINT32, BASE_DEC, VALS(isdn_sup_RecoredUnitsCc_vals), 0,
3225 "RecoredUnitsCc", HFILL }},
3226 { &hf_isdn_sup_recordedNumberOfUnits,
3227 { "recordedNumberOfUnits", "isdn-sup.recordedNumberOfUnits",
3228 FT_UINT32, BASE_DEC, NULL, 0,
3229 "NumberOfUnits", HFILL }},
3230 { &hf_isdn_sup_notAvailable,
3231 { "notAvailable", "isdn-sup.notAvailable_element",
3232 FT_NONE, BASE_NONE, NULL, 0,
3233 NULL, HFILL }},
3234 { &hf_isdn_sup_recordedTypeOfUnits,
3235 { "recordedTypeOfUnits", "isdn-sup.recordedTypeOfUnits",
3236 FT_UINT32, BASE_DEC, NULL, 0,
3237 "TypeOfUnit", HFILL }},
3238 { &hf_isdn_sup_aocecurrencycc,
3239 { "cc", "isdn-sup.cc",
3240 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCECurrencyCc_vals), 0,
3241 "AOCECurrencyCc", HFILL }},
3242 { &hf_isdn_sup_aoceccspecificCurrency,
3243 { "specificCurrency", "isdn-sup.specificCurrency_element",
3244 FT_NONE, BASE_NONE, NULL, 0,
3245 "AOCECcSpecificCurrency", HFILL }},
3246 { &hf_isdn_sup_aOCEBillingId,
3247 { "aOCEBillingId", "isdn-sup.aOCEBillingId",
3248 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEBillingId_vals), 0,
3249 NULL, HFILL }},
3250 { &hf_isdn_sup_chargingAssociation,
3251 { "chargingAssociation", "isdn-sup.chargingAssociation",
3252 FT_UINT32, BASE_DEC, VALS(isdn_sup_ChargingAssociation_vals), 0,
3253 NULL, HFILL }},
3254 { &hf_isdn_sup_aocechargingunitcc,
3255 { "cc", "isdn-sup.cc",
3256 FT_UINT32, BASE_DEC, VALS(isdn_sup_AOCEChargingUnitCc_vals), 0,
3257 "AOCEChargingUnitCc", HFILL }},
3258 { &hf_isdn_sup_aoceccspecificchargingunits,
3259 { "specificChargingUnits", "isdn-sup.specificChargingUnits_element",
3260 FT_NONE, BASE_NONE, NULL, 0,
3261 "AOCECcSpecificChargingUnits", HFILL }},
3262 { &hf_isdn_sup_currencyAmount,
3263 { "currencyAmount", "isdn-sup.currencyAmount",
3264 FT_UINT32, BASE_DEC, NULL, 0,
3265 NULL, HFILL }},
3266 { &hf_isdn_sup_multiplier,
3267 { "multiplier", "isdn-sup.multiplier",
3268 FT_UINT32, BASE_DEC, VALS(isdn_sup_Multiplier_vals), 0,
3269 NULL, HFILL }},
3270 { &hf_isdn_sup_lengthOfTimeUnit,
3271 { "lengthOfTimeUnit", "isdn-sup.lengthOfTimeUnit",
3272 FT_UINT32, BASE_DEC, NULL, 0,
3273 NULL, HFILL }},
3274 { &hf_isdn_sup_scale,
3275 { "scale", "isdn-sup.scale",
3276 FT_UINT32, BASE_DEC, VALS(isdn_sup_Scale_vals), 0,
3277 NULL, HFILL }},
3278 { &hf_isdn_sup_chargeNumber,
3279 { "chargeNumber", "isdn-sup.chargeNumber",
3280 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3281 "PartyNumber", HFILL }},
3282 { &hf_isdn_sup_chargeIdentifier,
3283 { "chargeIdentifier", "isdn-sup.chargeIdentifier",
3284 FT_INT32, BASE_DEC, NULL, 0,
3285 NULL, HFILL }},
3286 { &hf_isdn_sup_oARequested,
3287 { "oARequested", "isdn-sup.oARequested",
3288 FT_BOOLEAN, BASE_NONE, NULL, 0,
3289 NULL, HFILL }},
3290 { &hf_isdn_sup_cUGIndex,
3291 { "cUGIndex", "isdn-sup.cUGIndex",
3292 FT_UINT32, BASE_DEC, NULL, 0,
3293 NULL, HFILL }},
3294 { &hf_isdn_sup_conferenceId,
3295 { "conferenceId", "isdn-sup.conferenceId",
3296 FT_UINT32, BASE_DEC, NULL, 0,
3297 NULL, HFILL }},
3298 { &hf_isdn_sup_partyId,
3299 { "partyId", "isdn-sup.partyId",
3300 FT_UINT32, BASE_DEC, NULL, 0,
3301 NULL, HFILL }},
3302 { &hf_isdn_sup_procedure,
3303 { "procedure", "isdn-sup.procedure",
3304 FT_UINT32, BASE_DEC, VALS(isdn_sup_Procedure_vals), 0,
3305 NULL, HFILL }},
3306 { &hf_isdn_sup_basicService,
3307 { "basicService", "isdn-sup.basicService",
3308 FT_UINT32, BASE_DEC, VALS(isdn_sup_BasicService_vals), 0,
3309 NULL, HFILL }},
3310 { &hf_isdn_sup_forwardedToAddress,
3311 { "forwardedToAddress", "isdn-sup.forwardedToAddress_element",
3312 FT_NONE, BASE_NONE, NULL, 0,
3313 "Address", HFILL }},
3314 { &hf_isdn_sup_servedUserNr,
3315 { "servedUserNr", "isdn-sup.servedUserNr",
3316 FT_UINT32, BASE_DEC, VALS(isdn_sup_ServedUserNr_vals), 0,
3317 NULL, HFILL }},
3318 { &hf_isdn_sup_noReplyTimer,
3319 { "noReplyTimer", "isdn-sup.noReplyTimer",
3320 FT_UINT32, BASE_DEC, NULL, 0,
3321 NULL, HFILL }},
3322 { &hf_isdn_sup_forwardedToAddresss,
3323 { "forwardedToAddresss", "isdn-sup.forwardedToAddresss_element",
3324 FT_NONE, BASE_NONE, NULL, 0,
3325 "Address", HFILL }},
3326 { &hf_isdn_sup_diversionReason,
3327 { "diversionReason", "isdn-sup.diversionReason",
3328 FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3329 NULL, HFILL }},
3330 { &hf_isdn_sup_servedUserSubaddress,
3331 { "servedUserSubaddress", "isdn-sup.servedUserSubaddress",
3332 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3333 "PartySubaddress", HFILL }},
3334 { &hf_isdn_sup_callingAddress,
3335 { "callingAddress", "isdn-sup.callingAddress",
3336 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedAddressScreened_vals), 0,
3337 "PresentedAddressScreened", HFILL }},
3338 { &hf_isdn_sup_originalCalledNr,
3339 { "originalCalledNr", "isdn-sup.originalCalledNr",
3340 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3341 "PresentedNumberUnscreened", HFILL }},
3342 { &hf_isdn_sup_lastDivertingNr,
3343 { "lastDivertingNr", "isdn-sup.lastDivertingNr",
3344 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3345 "PresentedNumberUnscreened", HFILL }},
3346 { &hf_isdn_sup_lastDivertingReason,
3347 { "lastDivertingReason", "isdn-sup.lastDivertingReason",
3348 FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3349 "DiversionReason", HFILL }},
3350 { &hf_isdn_sup_userInfo,
3351 { "userInfo", "isdn-sup.userInfo",
3352 FT_BYTES, BASE_NONE, NULL, 0,
3353 "Q931InformationElement", HFILL }},
3354 { &hf_isdn_sup_deflectionAddress,
3355 { "deflectionAddress", "isdn-sup.deflectionAddress_element",
3356 FT_NONE, BASE_NONE, NULL, 0,
3357 "Address", HFILL }},
3358 { &hf_isdn_sup_presentationAllowedDivertedToUser,
3359 { "presentationAllowedDivertedToUser", "isdn-sup.presentationAllowedDivertedToUser",
3360 FT_BOOLEAN, BASE_NONE, NULL, 0,
3361 "PresentationAllowedIndicator", HFILL }},
3362 { &hf_isdn_sup_rerouteingReason,
3363 { "rerouteingReason", "isdn-sup.rerouteingReason",
3364 FT_UINT32, BASE_DEC, VALS(isdn_sup_DiversionReason_vals), 0,
3365 "DiversionReason", HFILL }},
3366 { &hf_isdn_sup_calledAddress,
3367 { "calledAddress", "isdn-sup.calledAddress_element",
3368 FT_NONE, BASE_NONE, NULL, 0,
3369 "Address", HFILL }},
3370 { &hf_isdn_sup_rerouteingCounter,
3371 { "rerouteingCounter", "isdn-sup.rerouteingCounter",
3372 FT_UINT32, BASE_DEC, NULL, 0,
3373 "DiversionCounter", HFILL }},
3374 { &hf_isdn_sup_q931InfoElement,
3375 { "q931InfoElement", "isdn-sup.q931InfoElement",
3376 FT_BYTES, BASE_NONE, NULL, 0,
3377 "Q931InformationElement", HFILL }},
3378 { &hf_isdn_sup_lastRerouteingNr,
3379 { "lastRerouteingNr", "isdn-sup.lastRerouteingNr",
3380 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3381 "PresentedNumberUnscreened", HFILL }},
3382 { &hf_isdn_sup_subscriptionOption,
3383 { "subscriptionOption", "isdn-sup.subscriptionOption",
3384 FT_UINT32, BASE_DEC, VALS(isdn_sup_SubscriptionOption_vals), 0,
3385 NULL, HFILL }},
3386 { &hf_isdn_sup_callingPartySubaddress,
3387 { "callingPartySubaddress", "isdn-sup.callingPartySubaddress",
3388 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartySubaddress_vals), 0,
3389 "PartySubaddress", HFILL }},
3390 { &hf_isdn_sup_divertedToNumber,
3391 { "divertedToNumber", "isdn-sup.divertedToNumber",
3392 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3393 "PresentedNumberUnscreened", HFILL }},
3394 { &hf_isdn_sup_diversionCounter,
3395 { "diversionCounter", "isdn-sup.diversionCounter",
3396 FT_UINT32, BASE_DEC, NULL, 0,
3397 NULL, HFILL }},
3398 { &hf_isdn_sup_divertingNr,
3399 { "divertingNr", "isdn-sup.divertingNr",
3400 FT_UINT32, BASE_DEC, VALS(isdn_sup_PresentedNumberUnscreened_vals), 0,
3401 "PresentedNumberUnscreened", HFILL }},
3402 { &hf_isdn_sup_IntResultList_item,
3403 { "IntResult", "isdn-sup.IntResult_element",
3404 FT_NONE, BASE_NONE, NULL, 0,
3405 NULL, HFILL }},
3406 { &hf_isdn_sup_individualNumber,
3407 { "individualNumber", "isdn-sup.individualNumber",
3408 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3409 "PartyNumber", HFILL }},
3410 { &hf_isdn_sup_allNumbers,
3411 { "allNumbers", "isdn-sup.allNumbers_element",
3412 FT_NONE, BASE_NONE, NULL, 0,
3413 NULL, HFILL }},
3414 { &hf_isdn_sup_ServedUserNumberList_item,
3415 { "PartyNumber", "isdn-sup.PartyNumber",
3416 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3417 NULL, HFILL }},
3418 { &hf_isdn_sup_service,
3419 { "service", "isdn-sup.service",
3420 FT_UINT32, BASE_DEC, VALS(isdn_sup_Service_vals), 0,
3421 NULL, HFILL }},
3422 { &hf_isdn_sup_preferred,
3423 { "preferred", "isdn-sup.preferred",
3424 FT_BOOLEAN, BASE_NONE, NULL, 0,
3425 NULL, HFILL }},
3426 { &hf_isdn_sup_servedUserDestination,
3427 { "servedUserDestination", "isdn-sup.servedUserDestination",
3428 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3429 "PartyNumber", HFILL }},
3430 { &hf_isdn_sup_queueIdentity,
3431 { "queueIdentity", "isdn-sup.queueIdentity",
3432 FT_UINT32, BASE_DEC, NULL, 0,
3433 NULL, HFILL }},
3434 { &hf_isdn_sup_fPHReference,
3435 { "fPHReference", "isdn-sup.fPHReference",
3436 FT_UINT32, BASE_DEC, NULL, 0,
3437 NULL, HFILL }},
3438 { &hf_isdn_sup_calledFreephoneNr,
3439 { "calledFreephoneNr", "isdn-sup.calledFreephoneNr",
3440 FT_UINT32, BASE_DEC, VALS(isdn_sup_PartyNumber_vals), 0,
3441 NULL, HFILL }},
3443 /*--- End of included file: packet-isdn-sup-hfarr.c ---*/
3444 #line 336 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
3447 /* List of subtrees */
3448 static gint *ett[] = {
3449 &ett_isdn_sup,
3452 /*--- Included file: packet-isdn-sup-ettarr.c ---*/
3453 #line 1 "../../asn1/isdn-sup/packet-isdn-sup-ettarr.c"
3454 &ett_isdn_sup_PresentedAddressScreened,
3455 &ett_isdn_sup_PresentedAddressUnscreened,
3456 &ett_isdn_sup_PresentedNumberScreened,
3457 &ett_isdn_sup_PresentedNumberUnscreened,
3458 &ett_isdn_sup_AddressScreened,
3459 &ett_isdn_sup_NumberScreened,
3460 &ett_isdn_sup_Address,
3461 &ett_isdn_sup_PartyNumber,
3462 &ett_isdn_sup_PublicPartyNumber,
3463 &ett_isdn_sup_PrivatePartyNumber,
3464 &ett_isdn_sup_PartySubaddress,
3465 &ett_isdn_sup_UserSpecifiedSubaddress,
3466 &ett_isdn_sup_ChargingRequestRes,
3467 &ett_isdn_sup_AOCSCurrencyArg,
3468 &ett_isdn_sup_AOCSSpecialArrArg,
3469 &ett_isdn_sup_AOCDCurrencyArg,
3470 &ett_isdn_sup_AOCDChargingUnitArg,
3471 &ett_isdn_sup_AOCECurrencyArg,
3472 &ett_isdn_sup_AOCEChargingUnitArg,
3473 &ett_isdn_sup_AOCSCurrencyInfoList,
3474 &ett_isdn_sup_AOCSCurrencyInfo,
3475 &ett_isdn_sup_T_chargingtype,
3476 &ett_isdn_sup_AOCSChargingTypeSpecificCurrency,
3477 &ett_isdn_sup_DurationCurrency,
3478 &ett_isdn_sup_FlatRateCurrency,
3479 &ett_isdn_sup_VolumeRateCurrency,
3480 &ett_isdn_sup_AOCDCurrencyInfo,
3481 &ett_isdn_sup_AOCDSpecificCurrency,
3482 &ett_isdn_sup_AOCDChargingUnitInfo,
3483 &ett_isdn_sup_AOCDSpecificChargingUnits,
3484 &ett_isdn_sup_RecordedCurrency,
3485 &ett_isdn_sup_RecordedUnitsList,
3486 &ett_isdn_sup_RecordedUnits,
3487 &ett_isdn_sup_RecoredUnitsCc,
3488 &ett_isdn_sup_AOCECurrencyInfo,
3489 &ett_isdn_sup_AOCECurrencyCc,
3490 &ett_isdn_sup_AOCECcSpecificCurrency,
3491 &ett_isdn_sup_AOCEChargingUnitInfo,
3492 &ett_isdn_sup_AOCEChargingUnitCc,
3493 &ett_isdn_sup_AOCECcSpecificChargingUnits,
3494 &ett_isdn_sup_Amount,
3495 &ett_isdn_sup_Time,
3496 &ett_isdn_sup_ChargingAssociation,
3497 &ett_isdn_sup_CUGcallArg,
3498 &ett_isdn_sup_BeginCONFRes,
3499 &ett_isdn_sup_SplitCONFArg,
3500 &ett_isdn_sup_ActivationDiversionArg,
3501 &ett_isdn_sup_DeactivationDiversionArg,
3502 &ett_isdn_sup_ActivationStatusNotificationDivArg,
3503 &ett_isdn_sup_DeactivationStatusNotificationDivArg,
3504 &ett_isdn_sup_InterrogationDiversionArg,
3505 &ett_isdn_sup_DiversionInformationArg,
3506 &ett_isdn_sup_CallDeflectionArg,
3507 &ett_isdn_sup_CallRerouteingArg,
3508 &ett_isdn_sup_DivertingLegInformation1Arg,
3509 &ett_isdn_sup_DivertingLegInformation2Arg,
3510 &ett_isdn_sup_IntResultList,
3511 &ett_isdn_sup_IntResult,
3512 &ett_isdn_sup_ServedUserNr,
3513 &ett_isdn_sup_ServedUserNumberList,
3514 &ett_isdn_sup_UserUserServiceArg,
3515 &ett_isdn_sup_Monitor_T_FPHArg,
3516 &ett_isdn_sup_Free_T_FPHArg,
3517 &ett_isdn_sup_Call_T_FPHArg,
3519 /*--- End of included file: packet-isdn-sup-ettarr.c ---*/
3520 #line 343 "../../asn1/isdn-sup/packet-isdn-sup-template.c"
3523 /* Register fields and subtrees */
3524 proto_register_field_array(proto_isdn_sup, hf, array_length(hf));
3525 proto_register_subtree_array(ett, array_length(ett));
3527 /* Register protocol */
3528 proto_isdn_sup = proto_register_protocol(PNAME, PSNAME, PFNAME);