1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -T -e -p qsig -c qsig.cnf -s packet-qsig-template qsig-gf-ext.asn qsig-gf-gp.asn qsig-gf-ade.asn qsig-na.asn qsig-cf.asn */
6 /* Input file: packet-qsig-template.c */
8 #line 1 "packet-qsig-template.c"
10 * Routines for QSIG packet dissection
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
19 * This program is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU General Public License
21 * as published by the Free Software Foundation; either version 2
22 * of the License, or (at your option) any later version.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License
30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
38 #include <epan/packet.h>
39 #include <epan/prefs.h>
40 #include <epan/strutil.h>
41 #include <epan/emem.h>
42 #include <epan/asn1.h>
44 #include "packet-ber.h"
45 #include "packet-qsig.h"
51 /* Shifted codeset values */
61 #define QSIG_IE_TRANSIT_COUNTER 0x31
62 #define QSIG_IE_PARTY_CATEGORY 0x32
64 static const value_string qsig_str_ie_type_cs4[] = {
65 { QSIG_IE_TRANSIT_COUNTER , "Transit counter" },
68 static const value_string qsig_str_ie_type_cs5[] = {
69 { QSIG_IE_PARTY_CATEGORY , "Party category" },
73 static const value_string *qsig_str_ie_type[] = {
85 static const value_string qsig_str_pc[] = {
87 { 0x01 , "extension" },
88 { 0x02 , "operator" },
89 { 0x03 , "emergency extension" },
93 const value_string qsig_str_service[] = {
100 { 14844, "QSIG-DND(O)" },
101 { 14846, "QSIG-CI" },
102 { 15050, "QSIG-AOC" },
103 { 15052, "QSIG-RE" },
104 { 15054, "QSIG-CINT" },
105 { 15506, "QSIG-MWI" },
106 { 15507, "SYNC-SIG" },
107 { 15772, "QSIG-CMN" },
108 { 15992, "QSIG-CPI(P)" },
109 { 17876, "QSIG-PUMR" },
110 { 17878, "QSIG-PUMCH" },
111 { 19460, "QSIG-SSCT" },
112 { 15429, "QSIG-WTMLR" },
113 { 15431, "QSIG-WTMCH" },
114 { 15433, "QSIG-WTMAU" },
115 { 21407, "QSIG-SD" },
116 { 21889, "QSIG-CIDL" },
119 { 3471, "QSIG-MCM" },
120 { 3472, "QSIG-MID" },
124 const value_string qsig_str_service_name[] = {
125 { 13868, "Name-Operations" },
126 { 13873, "Call-Diversion-Operations" },
127 { 13874, "Path-Replacement-Operations" },
128 { 13869, "Call-Transfer-Operations" },
129 { 13870, "SS-CC-Operations" },
130 { 14843, "Call-Offer-Operations" },
131 { 14844, "Do-Not-Disturb-Operations" },
132 { 14846, "Call-Intrusion-Operations" },
133 { 15050, "SS-AOC-Operation" },
134 { 15052, "Recall-Operation" },
135 { 15054, "Call-Interception-Operations" },
136 { 15506, "SS-MWI-Operations" },
137 { 15507, "Synchronization-Operations" },
138 { 15772, "Common-Information-Operations" },
139 { 15992, "Call-Interruption-Operation" },
140 { 17876, "PUM-Registration-Operation" },
141 { 17878, "Private-User-Mobility-Call-Handling-Operations" },
142 { 19460, "Single-Step-Call-Transfer-Operations" },
143 { 15429, "WTM-Location-Registration-Operations" },
144 { 15431, "Wireless-Terminal-Call-Handling-Operations" },
145 { 15433, "WTM-Authentication-Operations" },
146 { 21407, "SS-SD-Operations" },
147 { 21889, "Call-Identification-and-Call-Linkage-Operations" },
148 { 325, "Short-Message-Service-Operations" },
149 { 344, "SS-MCR-Operations" },
150 { 3471, "SS-MCM-Operations" },
151 { 3472, "SS-MID-Operations" },
155 const value_string qsig_str_operation[] = {
156 { 0, "callingName" },
158 { 2, "connectedName" },
160 { 4, "pathReplacePropose" },
161 { 5, "pathReplaceSetup" },
162 { 6, "pathReplaceRetain" },
163 { 7, "callTransferIdentify" },
164 { 8, "callTransferAbandon" },
165 { 9, "callTransferInitiate" },
166 { 10, "callTransferSetup" },
167 { 11, "callTransferActive" },
168 { 12, "callTransferComplete" },
169 { 13, "callTransferUpdate" },
170 { 14, "subaddressTransfer" },
171 { 15, "activateDiversionQ" },
172 { 16, "deactivateDiversionQ" },
173 { 17, "interrogateDiversionQ" },
174 { 18, "checkRestriction" },
175 { 19, "callRerouteing" },
176 { 20, "divertingLegInformation1" },
177 { 21, "divertingLegInformation2" },
178 { 22, "divertingLegInformation3" },
179 { 23, "cfnrDivertedLegFailed" },
180 /* 24 Reserved (corresponding integer value used by ISO for MLPP) */
181 /* 25 Reserved (corresponding integer value used by ISO for MLPP) */
182 /* 26 Reserved (corresponding integer value used by ISO for MLPP) */
183 { 27, "ccnrRequest" },
185 { 29, "ccExecPossible" },
186 { 30, "ccPathReserve" },
190 { 34, "callOfferRequest" },
191 { 35, "doNotDisturbActivateQ" },
192 { 36, "doNotDisturbDeactivateQ" },
193 { 37, "doNotDisturbInterrogateQ" },
194 { 38, "doNotDisturbOverrideQ" },
195 { 39, "doNotDisturbOvrExecuteQ" },
196 { 40, "ccbsRequest" },
197 { 41, "pathRetain" }, /* common for QSIG-CO, QSIG-DND(O), QSIG-CI */
198 { 42, "serviceAvailable" }, /* common for QSIG-CO, QSIG-DND(O), QSIG-CI */
199 { 43, "callIntrusionRequest" },
200 { 44, "callIntrusionGetCIPL" },
201 { 45, "callIntrusionIsolate" },
202 { 46, "callIntrusionForcedRelease" },
203 { 47, "callIntrusionWOBRequest" },
204 { 48, "callIntrusionCompleted" },
205 { 49, "cfbOverride" }, /* common for QSIG-CO, QSIG-CI */
209 { 53, "pisnEnquiry" },
210 { 54, "wtmiEnquiry" },
211 { 55, "wtmiDivert" },
212 { 56, "wtmiInform" },
213 { 57, "recallAlerting" },
214 { 58, "recallAnswered" },
215 { 59, "chargeRequest" },
216 { 60, "getFinalCharge" },
218 { 62, "aocInterim" },
220 { 64, "aocComplete" },
221 { 65, "aocDivChargeReq" },
222 { 66, "cintLegInformation1" },
223 { 67, "cintLegInformation2" },
224 { 68, "cintCondition" },
225 { 69, "cintDisable" },
226 { 70, "cintEnable" },
228 { 72, "authWtmUser" },
229 { 73, "getWtatParam" },
230 { 74, "wtatParamEnq" },
231 { 75, "getWtanParam" },
232 { 76, "wtanParamEnq" },
233 { 77, "transferAuthParam" },
234 { 78, "synchronizationRequest" },
235 { 79, "synchronizationInfo" },
236 { 80, "mwiActivate/mCMNewMsg" }, /* common for QSIG-MWI, QSIG-MCM */
237 { 81, "mwiDeactivate/mCMNoNewMsg" }, /* common for QSIG-MWI, QSIG-MCM */
238 { 82, "mwiInterrogate/mCMUpdateReq" }, /* common for QSIG-MWI, QSIG-MCM */
239 /* 83 Reserved (corresponding integer value used by ISO for RRC) ISO/IEC 13241 */
240 { 84, "cmnRequest" },
242 { 86, "pathReplaceInvite" },
243 { 87, "callInterruptionRequest" },
244 { 88, "callProtectionRequest" },
245 { 89, "pumRegistr" },
248 { 92, "pumInterrog" },
249 { 93, "pumiEnquiry" },
250 { 94, "pumiDivert" },
251 { 95, "pumiInform" },
254 { 98, "locInfoCheck" },
255 { 99, "ssctInitiate" },
256 { 100, "ssctSetup" },
257 { 101, "ssctPostDial" },
258 { 102, "ssctDigitInfo" },
261 { 105, "callIdentificationAssign" },
262 { 106, "callIdentificationUpdate" },
263 { 107, "smsSubmit" },
264 { 108, "smsDeliver" },
265 { 109, "smsStatusReport" },
266 { 110, "smsCommand" },
268 { 112, "mCRequest" },
269 { 113, "mCAlerting" },
271 { 115, "mCMUpdate" },
272 { 116, "mCMService" },
273 { 117, "mCMInterrogate" },
274 { 118, "mCMailboxFull" },
275 { 119, "mIDMailboxAuth" },
276 { 120, "mIDMailboxID" },
281 void dissect_qsig_arg(tvbuff_t*, packet_info*, proto_tree*, guint32);
282 #define FNABODY(x) static void dissect_qsig_arg##x(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) \
283 { dissect_qsig_arg(tvb, pinfo, tree, (x)); }
285 void dissect_qsig_res(tvbuff_t*, packet_info*, proto_tree*, guint32);
286 #define FNRBODY(x) static void dissect_qsig_res##x(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) \
287 { dissect_qsig_res(tvb, pinfo, tree, (x)); }
290 FNABODY(0) FNRBODY(0)
291 FNABODY(1) FNRBODY(1)
292 FNABODY(2) FNRBODY(2)
293 FNABODY(3) FNRBODY(3)
295 FNABODY(15) FNRBODY(15)
296 FNABODY(16) FNRBODY(16)
297 FNABODY(17) FNRBODY(17)
298 FNABODY(18) FNRBODY(18)
299 FNABODY(19) FNRBODY(19)
300 FNABODY(20) FNRBODY(20)
301 FNABODY(21) FNRBODY(21)
302 FNABODY(22) FNRBODY(22)
303 FNABODY(23) FNRBODY(23)
305 FNABODY(4) FNRBODY(4)
306 FNABODY(5) FNRBODY(5)
307 FNABODY(6) FNRBODY(6)
308 FNABODY(86) FNRBODY(86)
310 FNABODY(7) FNRBODY(7)
311 FNABODY(8) FNRBODY(8)
312 FNABODY(9) FNRBODY(9)
313 FNABODY(10) FNRBODY(10)
314 FNABODY(11) FNRBODY(11)
315 FNABODY(12) FNRBODY(12)
316 FNABODY(13) FNRBODY(13)
317 FNABODY(14) FNRBODY(14)
319 FNABODY(40) FNRBODY(40)
320 FNABODY(27) FNRBODY(27)
321 FNABODY(28) FNRBODY(28)
322 FNABODY(29) FNRBODY(29)
323 FNABODY(30) FNRBODY(30)
324 FNABODY(31) FNRBODY(31)
325 FNABODY(32) FNRBODY(32)
326 FNABODY(33) FNRBODY(33)
328 FNABODY(34) FNRBODY(34)
329 /* see common for QSIG-CO, QSIG-DND(O), QSIG-CI */
331 FNABODY(35) FNRBODY(35)
332 FNABODY(36) FNRBODY(36)
333 FNABODY(37) FNRBODY(37)
334 FNABODY(38) FNRBODY(38)
335 FNABODY(39) FNRBODY(39)
336 /* see common for QSIG-CO, QSIG-DND(O), QSIG-CI */
338 FNABODY(43) FNRBODY(43)
339 FNABODY(44) FNRBODY(44)
340 FNABODY(45) FNRBODY(45)
341 FNABODY(46) FNRBODY(46)
342 FNABODY(47) FNRBODY(47)
343 FNABODY(48) FNRBODY(48)
345 FNABODY(59) FNRBODY(59)
346 FNABODY(60) FNRBODY(60)
347 FNABODY(61) FNRBODY(61)
348 FNABODY(62) FNRBODY(62)
349 FNABODY(63) FNRBODY(63)
350 FNABODY(64) FNRBODY(64)
351 FNABODY(65) FNRBODY(65)
353 FNABODY(57) FNRBODY(57)
354 FNABODY(58) FNRBODY(58)
356 FNABODY(66) FNRBODY(66)
357 FNABODY(67) FNRBODY(67)
358 FNABODY(68) FNRBODY(68)
359 FNABODY(69) FNRBODY(69)
360 FNABODY(70) FNRBODY(70)
362 /* see common for QSIG-MWI, QSIG-MCM */
364 FNABODY(78) FNRBODY(78)
365 FNABODY(79) FNRBODY(79)
367 FNABODY(84) FNRBODY(84)
368 FNABODY(85) FNRBODY(85)
370 FNABODY(87) FNRBODY(87)
371 FNABODY(88) FNRBODY(88)
373 FNABODY(89) FNRBODY(89)
374 FNABODY(90) FNRBODY(90)
375 FNABODY(91) FNRBODY(91)
376 FNABODY(92) FNRBODY(92)
378 FNABODY(93) FNRBODY(93)
379 FNABODY(94) FNRBODY(94)
380 FNABODY(95) FNRBODY(95)
381 FNABODY(96) FNRBODY(96)
383 FNABODY(99) FNRBODY(99)
384 FNABODY(100) FNRBODY(100)
385 FNABODY(101) FNRBODY(101)
386 FNABODY(102) FNRBODY(102)
388 FNABODY(50) FNRBODY(50)
389 FNABODY(51) FNRBODY(51)
390 FNABODY(52) FNRBODY(52)
391 FNABODY(53) FNRBODY(53)
392 FNABODY(97) FNRBODY(97)
393 FNABODY(98) FNRBODY(98)
395 FNABODY(54) FNRBODY(54)
396 FNABODY(55) FNRBODY(55)
397 FNABODY(56) FNRBODY(56)
398 FNABODY(71) FNRBODY(71)
400 FNABODY(72) FNRBODY(72)
401 FNABODY(73) FNRBODY(73)
402 FNABODY(74) FNRBODY(74)
403 FNABODY(75) FNRBODY(75)
404 FNABODY(76) FNRBODY(76)
405 FNABODY(77) FNRBODY(77)
407 FNABODY(103) FNRBODY(103)
408 FNABODY(104) FNRBODY(104)
410 FNABODY(105) FNRBODY(105)
411 FNABODY(106) FNRBODY(106)
413 FNABODY(107) FNRBODY(107)
414 FNABODY(108) FNRBODY(108)
415 FNABODY(109) FNRBODY(109)
416 FNABODY(110) FNRBODY(110)
417 FNABODY(111) FNRBODY(111)
419 FNABODY(112) FNRBODY(112)
420 FNABODY(113) FNRBODY(113)
421 FNABODY(114) FNRBODY(114)
423 FNABODY(115) FNRBODY(115)
424 FNABODY(116) FNRBODY(116)
425 FNABODY(117) FNRBODY(117)
426 FNABODY(118) FNRBODY(118)
428 FNABODY(119) FNRBODY(119)
429 FNABODY(120) FNRBODY(120)
430 /* common for QSIG-CO, QSIG-DND(O), QSIG-CI */
431 FNABODY(41) FNRBODY(41)
432 FNABODY(42) FNRBODY(42)
433 FNABODY(49) FNRBODY(49)
434 /* common for QSIG-MWI, QSIG-MCM */
435 FNABODY(80) FNRBODY(80)
436 FNABODY(81) FNRBODY(81)
437 FNABODY(82) FNRBODY(82)
440 typedef guint32 (*pdu_fn)(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset);
442 typedef struct _qsig_op {
444 dissector_t arg_dissector;
445 dissector_t res_dissector;
449 #define NO_SRV ((guint32)-1)
450 #define FNA(x) dissect_qsig_arg##x
451 #define FNR(x) dissect_qsig_res##x
453 /* Initialize the protocol and registered fields */
455 static int hf_qsig_operation = -1;
456 static int hf_qsig_service = -1;
457 static int hf_qsig_ie_type = -1;
458 static int hf_qsig_ie_type_cs4 = -1;
459 static int hf_qsig_ie_type_cs5 = -1;
460 static int hf_qsig_ie_len = -1;
461 static int hf_qsig_ie_data = -1;
462 static int hf_qsig_tc = -1;
463 static int hf_qsig_pc = -1;
465 /*--- Included file: packet-qsig-hf.c ---*/
466 #line 1 "packet-qsig-hf.c"
467 static int hf_qsig_NameArg_PDU = -1; /* NameArg */
468 static int hf_qsig_ActivateDivArg_PDU = -1; /* ActivateDivArg */
469 static int hf_qsig_ActivateDivRes_PDU = -1; /* ActivateDivRes */
470 static int hf_qsig_DeactivateDivArg_PDU = -1; /* DeactivateDivArg */
471 static int hf_qsig_DeactivateDivRes_PDU = -1; /* DeactivateDivRes */
472 static int hf_qsig_InterrDivArg_PDU = -1; /* InterrDivArg */
473 static int hf_qsig_ChkResArg_PDU = -1; /* ChkResArg */
474 static int hf_qsig_ChkResRes_PDU = -1; /* ChkResRes */
475 static int hf_qsig_CallRrArg_PDU = -1; /* CallRrArg */
476 static int hf_qsig_CallRrRes_PDU = -1; /* CallRrRes */
477 static int hf_qsig_DivLegInf1Arg_PDU = -1; /* DivLegInf1Arg */
478 static int hf_qsig_DivLegInf2Arg_PDU = -1; /* DivLegInf2Arg */
479 static int hf_qsig_DivLegInf3Arg_PDU = -1; /* DivLegInf3Arg */
480 static int hf_qsig_DivLegFailArg_PDU = -1; /* DivLegFailArg */
481 static int hf_qsig_IntResultList_PDU = -1; /* IntResultList */
482 static int hf_qsig_extensionId = -1; /* OBJECT_IDENTIFIER */
483 static int hf_qsig_extensionArgument = -1; /* T_extensionArgument */
484 static int hf_qsig_presentationAllowedAddressS = -1; /* AddressScreened */
485 static int hf_qsig_presentationRestricted = -1; /* NULL */
486 static int hf_qsig_numberNotAvailableDueToInterworking = -1; /* NULL */
487 static int hf_qsig_presentationRestrictedAddressS = -1; /* AddressScreened */
488 static int hf_qsig_presentationAllowedAddressU = -1; /* Address */
489 static int hf_qsig_presentationRestrictedAddressU = -1; /* Address */
490 static int hf_qsig_presentationAllowedAddressNS = -1; /* NumberScreened */
491 static int hf_qsig_presentationRestrictedAddressNS = -1; /* NumberScreened */
492 static int hf_qsig_presentationAllowedAddressNU = -1; /* PartyNumber */
493 static int hf_qsig_presentationRestrictedAddressNU = -1; /* PartyNumber */
494 static int hf_qsig_partyNumber = -1; /* PartyNumber */
495 static int hf_qsig_screeningIndicator = -1; /* ScreeningIndicator */
496 static int hf_qsig_partySubaddress = -1; /* PartySubaddress */
497 static int hf_qsig_unknownPartyNumber = -1; /* NumberDigits */
498 static int hf_qsig_publicPartyNumber = -1; /* PublicPartyNumber */
499 static int hf_qsig_dataPartyNumber = -1; /* NumberDigits */
500 static int hf_qsig_telexPartyNumber = -1; /* NumberDigits */
501 static int hf_qsig_privatePartyNumber = -1; /* PrivatePartyNumber */
502 static int hf_qsig_nationalStandardPartyNumber = -1; /* NumberDigits */
503 static int hf_qsig_publicTypeOfNumber = -1; /* PublicTypeOfNumber */
504 static int hf_qsig_publicNumberDigits = -1; /* NumberDigits */
505 static int hf_qsig_privateTypeOfNumber = -1; /* PrivateTypeOfNumber */
506 static int hf_qsig_privateNumberDigits = -1; /* NumberDigits */
507 static int hf_qsig_userSpecifiedSubaddress = -1; /* UserSpecifiedSubaddress */
508 static int hf_qsig_nSAPSubaddress = -1; /* NSAPSubaddress */
509 static int hf_qsig_subaddressInformation = -1; /* SubaddressInformation */
510 static int hf_qsig_oddCountIndicator = -1; /* BOOLEAN */
511 static int hf_qsig_name = -1; /* Name */
512 static int hf_qsig_nameSequence = -1; /* T_nameSequence */
513 static int hf_qsig_extensionNA = -1; /* NameExtension */
514 static int hf_qsig_single = -1; /* Extension */
515 static int hf_qsig_multiple = -1; /* SEQUENCE_OF_Extension */
516 static int hf_qsig_multiple_item = -1; /* Extension */
517 static int hf_qsig_namePresentationAllowed = -1; /* NamePresentationAllowed */
518 static int hf_qsig_namePresentationRestricted = -1; /* NamePresentationRestricted */
519 static int hf_qsig_nameNotAvailable = -1; /* NameNotAvailable */
520 static int hf_qsig_namePresentationAllowedSimple = -1; /* NameData */
521 static int hf_qsig_namePresentationAllowedExtended = -1; /* NameSet */
522 static int hf_qsig_namePresentationRestrictedSimple = -1; /* NameData */
523 static int hf_qsig_namePresentationRestrictedExtended = -1; /* NameSet */
524 static int hf_qsig_namePresentationRestrictedNull = -1; /* NULL */
525 static int hf_qsig_nameData = -1; /* NameData */
526 static int hf_qsig_characterSet = -1; /* CharacterSet */
527 static int hf_qsig_procedure = -1; /* Procedure */
528 static int hf_qsig_basicService = -1; /* BasicService */
529 static int hf_qsig_divertedToAddress = -1; /* Address */
530 static int hf_qsig_servedUserNr = -1; /* PartyNumber */
531 static int hf_qsig_activatingUserNr = -1; /* PartyNumber */
532 static int hf_qsig_extensionAD = -1; /* ADExtension */
533 static int hf_qsig_null = -1; /* NULL */
534 static int hf_qsig_deactivatingUserNr = -1; /* PartyNumber */
535 static int hf_qsig_extensionDD = -1; /* DDExtension */
536 static int hf_qsig_interrogatingUserNr = -1; /* PartyNumber */
537 static int hf_qsig_extensionID = -1; /* IDExtension */
538 static int hf_qsig_divertedToNr = -1; /* PartyNumber */
539 static int hf_qsig_extensionCHR = -1; /* CHRExtension */
540 static int hf_qsig_rerouteingReason = -1; /* DiversionReason */
541 static int hf_qsig_originalRerouteingReason = -1; /* DiversionReason */
542 static int hf_qsig_calledAddress = -1; /* Address */
543 static int hf_qsig_diversionCounter = -1; /* INTEGER_1_15 */
544 static int hf_qsig_pSS1InfoElement = -1; /* PSS1InformationElement */
545 static int hf_qsig_lastRerouteingNr = -1; /* PresentedNumberUnscreened */
546 static int hf_qsig_subscriptionOption = -1; /* SubscriptionOption */
547 static int hf_qsig_callingPartySubaddress = -1; /* PartySubaddress */
548 static int hf_qsig_callingNumber = -1; /* PresentedNumberScreened */
549 static int hf_qsig_callingName = -1; /* Name */
550 static int hf_qsig_originalCalledNr = -1; /* PresentedNumberUnscreened */
551 static int hf_qsig_redirectingName = -1; /* Name */
552 static int hf_qsig_originalCalledName = -1; /* Name */
553 static int hf_qsig_extensionCRR = -1; /* CRRExtension */
554 static int hf_qsig_diversionReason = -1; /* DiversionReason */
555 static int hf_qsig_nominatedNr = -1; /* PartyNumber */
556 static int hf_qsig_extensionDLI1 = -1; /* DLI1Extension */
557 static int hf_qsig_originalDiversionReason = -1; /* DiversionReason */
558 static int hf_qsig_divertingNr = -1; /* PresentedNumberUnscreened */
559 static int hf_qsig_extensionDLI2 = -1; /* DLI2Extension */
560 static int hf_qsig_presentationAllowedIndicator = -1; /* PresentationAllowedIndicator */
561 static int hf_qsig_redirectionName = -1; /* Name */
562 static int hf_qsig_extensionDLI3 = -1; /* DLI3Extension */
563 static int hf_qsig_IntResultList_item = -1; /* IntResult */
564 static int hf_qsig_remoteEnabled = -1; /* BOOLEAN */
565 static int hf_qsig_extensionIR = -1; /* IRExtension */
567 /*--- End of included file: packet-qsig-hf.c ---*/
568 #line 457 "packet-qsig-template.c"
570 static int *hf_qsig_ie_type_arr[] = {
575 &hf_qsig_ie_type_cs4,
576 &hf_qsig_ie_type_cs5,
581 /* Initialize the subtree pointers */
582 static gint ett_qsig = -1;
583 static gint ett_qsig_ie = -1;
585 /*--- Included file: packet-qsig-ett.c ---*/
586 #line 1 "packet-qsig-ett.c"
587 static gint ett_qsig_Extension = -1;
588 static gint ett_qsig_PresentedAddressScreened = -1;
589 static gint ett_qsig_PresentedAddressUnscreened = -1;
590 static gint ett_qsig_PresentedNumberScreened = -1;
591 static gint ett_qsig_PresentedNumberUnscreened = -1;
592 static gint ett_qsig_AddressScreened = -1;
593 static gint ett_qsig_NumberScreened = -1;
594 static gint ett_qsig_Address = -1;
595 static gint ett_qsig_PartyNumber = -1;
596 static gint ett_qsig_PublicPartyNumber = -1;
597 static gint ett_qsig_PrivatePartyNumber = -1;
598 static gint ett_qsig_PartySubaddress = -1;
599 static gint ett_qsig_UserSpecifiedSubaddress = -1;
600 static gint ett_qsig_NameArg = -1;
601 static gint ett_qsig_T_nameSequence = -1;
602 static gint ett_qsig_NameExtension = -1;
603 static gint ett_qsig_SEQUENCE_OF_Extension = -1;
604 static gint ett_qsig_Name = -1;
605 static gint ett_qsig_NamePresentationAllowed = -1;
606 static gint ett_qsig_NamePresentationRestricted = -1;
607 static gint ett_qsig_NameSet = -1;
608 static gint ett_qsig_ActivateDivArg = -1;
609 static gint ett_qsig_ADExtension = -1;
610 static gint ett_qsig_ActivateDivRes = -1;
611 static gint ett_qsig_DeactivateDivArg = -1;
612 static gint ett_qsig_DDExtension = -1;
613 static gint ett_qsig_DeactivateDivRes = -1;
614 static gint ett_qsig_InterrDivArg = -1;
615 static gint ett_qsig_IDExtension = -1;
616 static gint ett_qsig_ChkResArg = -1;
617 static gint ett_qsig_CHRExtension = -1;
618 static gint ett_qsig_ChkResRes = -1;
619 static gint ett_qsig_CallRrArg = -1;
620 static gint ett_qsig_CRRExtension = -1;
621 static gint ett_qsig_CallRrRes = -1;
622 static gint ett_qsig_DivLegInf1Arg = -1;
623 static gint ett_qsig_DLI1Extension = -1;
624 static gint ett_qsig_DivLegInf2Arg = -1;
625 static gint ett_qsig_DLI2Extension = -1;
626 static gint ett_qsig_DivLegInf3Arg = -1;
627 static gint ett_qsig_DLI3Extension = -1;
628 static gint ett_qsig_DivLegFailArg = -1;
629 static gint ett_qsig_IntResultList = -1;
630 static gint ett_qsig_IntResult = -1;
631 static gint ett_qsig_IRExtension = -1;
633 /*--- End of included file: packet-qsig-ett.c ---*/
634 #line 473 "packet-qsig-template.c"
639 static dissector_handle_t data_handle = NULL;
641 /* Gloabl variables */
645 /*--- Included file: packet-qsig-fn.c ---*/
646 #line 1 "packet-qsig-fn.c"
647 /*--- Fields for imported types ---*/
653 dissect_qsig_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
654 offset = dissect_ber_object_identifier(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index, NULL);
658 static int dissect_extensionId(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
659 return dissect_qsig_OBJECT_IDENTIFIER(FALSE, tvb, offset, actx, tree, hf_qsig_extensionId);
665 dissect_qsig_T_extensionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
672 static int dissect_extensionArgument(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
673 return dissect_qsig_T_extensionArgument(FALSE, tvb, offset, actx, tree, hf_qsig_extensionArgument);
677 static const ber_sequence_t Extension_sequence[] = {
678 { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extensionId },
679 { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_extensionArgument },
684 dissect_qsig_Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
685 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
686 Extension_sequence, hf_index, ett_qsig_Extension);
690 static int dissect_single_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
691 return dissect_qsig_Extension(TRUE, tvb, offset, actx, tree, hf_qsig_single);
693 static int dissect_multiple_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
694 return dissect_qsig_Extension(FALSE, tvb, offset, actx, tree, hf_qsig_multiple_item);
700 dissect_qsig_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_) {
701 offset = dissect_ber_octet_string(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
710 dissect_qsig_PSS1InformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
711 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
712 hf_index, BER_CLASS_APP, 0, TRUE, dissect_qsig_OCTET_STRING);
716 static int dissect_pSS1InfoElement(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
717 return dissect_qsig_PSS1InformationElement(FALSE, tvb, offset, actx, tree, hf_qsig_pSS1InfoElement);
723 dissect_qsig_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_) {
724 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
725 actx->pinfo, tree, tvb, offset, hf_index,
730 static int dissect_unknownPartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
731 return dissect_qsig_NumberDigits(TRUE, tvb, offset, actx, tree, hf_qsig_unknownPartyNumber);
733 static int dissect_dataPartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
734 return dissect_qsig_NumberDigits(TRUE, tvb, offset, actx, tree, hf_qsig_dataPartyNumber);
736 static int dissect_telexPartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
737 return dissect_qsig_NumberDigits(TRUE, tvb, offset, actx, tree, hf_qsig_telexPartyNumber);
739 static int dissect_nationalStandardPartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
740 return dissect_qsig_NumberDigits(TRUE, tvb, offset, actx, tree, hf_qsig_nationalStandardPartyNumber);
742 static int dissect_publicNumberDigits(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
743 return dissect_qsig_NumberDigits(FALSE, tvb, offset, actx, tree, hf_qsig_publicNumberDigits);
745 static int dissect_privateNumberDigits(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
746 return dissect_qsig_NumberDigits(FALSE, tvb, offset, actx, tree, hf_qsig_privateNumberDigits);
750 static const value_string qsig_PublicTypeOfNumber_vals[] = {
752 { 1, "internationalNumber" },
753 { 2, "nationalNumber" },
754 { 3, "networkSpecificNumber" },
755 { 4, "subscriberNumber" },
756 { 6, "abbreviatedNumber" },
762 dissect_qsig_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_) {
763 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
768 static int dissect_publicTypeOfNumber(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
769 return dissect_qsig_PublicTypeOfNumber(FALSE, tvb, offset, actx, tree, hf_qsig_publicTypeOfNumber);
773 static const ber_sequence_t PublicPartyNumber_sequence[] = {
774 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_publicTypeOfNumber },
775 { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_publicNumberDigits },
780 dissect_qsig_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_) {
781 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
782 PublicPartyNumber_sequence, hf_index, ett_qsig_PublicPartyNumber);
786 static int dissect_publicPartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
787 return dissect_qsig_PublicPartyNumber(TRUE, tvb, offset, actx, tree, hf_qsig_publicPartyNumber);
791 static const value_string qsig_PrivateTypeOfNumber_vals[] = {
793 { 1, "level2RegionalNumber" },
794 { 2, "level1RegionalNumber" },
795 { 3, "pISNSpecificNumber" },
796 { 4, "localNumber" },
797 { 6, "abbreviatedNumber" },
803 dissect_qsig_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_) {
804 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
809 static int dissect_privateTypeOfNumber(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
810 return dissect_qsig_PrivateTypeOfNumber(FALSE, tvb, offset, actx, tree, hf_qsig_privateTypeOfNumber);
814 static const ber_sequence_t PrivatePartyNumber_sequence[] = {
815 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_privateTypeOfNumber },
816 { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_privateNumberDigits },
821 dissect_qsig_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_) {
822 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
823 PrivatePartyNumber_sequence, hf_index, ett_qsig_PrivatePartyNumber);
827 static int dissect_privatePartyNumber_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
828 return dissect_qsig_PrivatePartyNumber(TRUE, tvb, offset, actx, tree, hf_qsig_privatePartyNumber);
832 static const value_string qsig_PartyNumber_vals[] = {
833 { 0, "unknownPartyNumber" },
834 { 1, "publicPartyNumber" },
835 { 3, "dataPartyNumber" },
836 { 4, "telexPartyNumber" },
837 { 5, "privatePartyNumber" },
838 { 8, "nationalStandardPartyNumber" },
842 static const ber_choice_t PartyNumber_choice[] = {
843 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_unknownPartyNumber_impl },
844 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_publicPartyNumber_impl },
845 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_dataPartyNumber_impl },
846 { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_telexPartyNumber_impl },
847 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_privatePartyNumber_impl },
848 { 8, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_nationalStandardPartyNumber_impl },
853 dissect_qsig_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_) {
854 offset = dissect_ber_choice(actx, tree, tvb, offset,
855 PartyNumber_choice, hf_index, ett_qsig_PartyNumber,
860 static int dissect_presentationAllowedAddressNU(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
861 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_presentationAllowedAddressNU);
863 static int dissect_presentationRestrictedAddressNU(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
864 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_presentationRestrictedAddressNU);
866 static int dissect_partyNumber(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
867 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_partyNumber);
869 static int dissect_servedUserNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
870 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_servedUserNr);
872 static int dissect_activatingUserNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
873 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_activatingUserNr);
875 static int dissect_deactivatingUserNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
876 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_deactivatingUserNr);
878 static int dissect_interrogatingUserNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
879 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_interrogatingUserNr);
881 static int dissect_divertedToNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
882 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_divertedToNr);
884 static int dissect_nominatedNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
885 return dissect_qsig_PartyNumber(FALSE, tvb, offset, actx, tree, hf_qsig_nominatedNr);
889 static const value_string qsig_ScreeningIndicator_vals[] = {
890 { 0, "userProvidedNotScreened" },
891 { 1, "userProvidedVerifiedAndPassed" },
892 { 2, "userProvidedVerifiedAndFailed" },
893 { 3, "networkProvided" },
899 dissect_qsig_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_) {
900 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
905 static int dissect_screeningIndicator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
906 return dissect_qsig_ScreeningIndicator(FALSE, tvb, offset, actx, tree, hf_qsig_screeningIndicator);
912 dissect_qsig_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_) {
913 offset = dissect_ber_octet_string(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
918 static int dissect_subaddressInformation(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
919 return dissect_qsig_SubaddressInformation(FALSE, tvb, offset, actx, tree, hf_qsig_subaddressInformation);
925 dissect_qsig_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_) {
926 offset = dissect_ber_boolean(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index);
930 static int dissect_oddCountIndicator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
931 return dissect_qsig_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_qsig_oddCountIndicator);
933 static int dissect_remoteEnabled(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
934 return dissect_qsig_BOOLEAN(FALSE, tvb, offset, actx, tree, hf_qsig_remoteEnabled);
938 static const ber_sequence_t UserSpecifiedSubaddress_sequence[] = {
939 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_subaddressInformation },
940 { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_oddCountIndicator },
945 dissect_qsig_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_) {
946 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
947 UserSpecifiedSubaddress_sequence, hf_index, ett_qsig_UserSpecifiedSubaddress);
951 static int dissect_userSpecifiedSubaddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
952 return dissect_qsig_UserSpecifiedSubaddress(FALSE, tvb, offset, actx, tree, hf_qsig_userSpecifiedSubaddress);
958 dissect_qsig_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_) {
959 offset = dissect_ber_octet_string(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
964 static int dissect_nSAPSubaddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
965 return dissect_qsig_NSAPSubaddress(FALSE, tvb, offset, actx, tree, hf_qsig_nSAPSubaddress);
969 static const value_string qsig_PartySubaddress_vals[] = {
970 { 0, "userSpecifiedSubaddress" },
971 { 1, "nSAPSubaddress" },
975 static const ber_choice_t PartySubaddress_choice[] = {
976 { 0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_userSpecifiedSubaddress },
977 { 1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_nSAPSubaddress },
982 dissect_qsig_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_) {
983 offset = dissect_ber_choice(actx, tree, tvb, offset,
984 PartySubaddress_choice, hf_index, ett_qsig_PartySubaddress,
989 static int dissect_partySubaddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
990 return dissect_qsig_PartySubaddress(FALSE, tvb, offset, actx, tree, hf_qsig_partySubaddress);
992 static int dissect_callingPartySubaddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
993 return dissect_qsig_PartySubaddress(FALSE, tvb, offset, actx, tree, hf_qsig_callingPartySubaddress);
997 static const ber_sequence_t AddressScreened_sequence[] = {
998 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_partyNumber },
999 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_screeningIndicator },
1000 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_partySubaddress },
1005 dissect_qsig_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_) {
1006 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1007 AddressScreened_sequence, hf_index, ett_qsig_AddressScreened);
1011 static int dissect_presentationAllowedAddressS_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1012 return dissect_qsig_AddressScreened(TRUE, tvb, offset, actx, tree, hf_qsig_presentationAllowedAddressS);
1014 static int dissect_presentationRestrictedAddressS_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1015 return dissect_qsig_AddressScreened(TRUE, tvb, offset, actx, tree, hf_qsig_presentationRestrictedAddressS);
1021 dissect_qsig_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_) {
1022 offset = dissect_ber_null(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index);
1026 static int dissect_presentationRestricted_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1027 return dissect_qsig_NULL(TRUE, tvb, offset, actx, tree, hf_qsig_presentationRestricted);
1029 static int dissect_numberNotAvailableDueToInterworking_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1030 return dissect_qsig_NULL(TRUE, tvb, offset, actx, tree, hf_qsig_numberNotAvailableDueToInterworking);
1032 static int dissect_namePresentationRestrictedNull_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1033 return dissect_qsig_NULL(TRUE, tvb, offset, actx, tree, hf_qsig_namePresentationRestrictedNull);
1035 static int dissect_null(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1036 return dissect_qsig_NULL(FALSE, tvb, offset, actx, tree, hf_qsig_null);
1040 static const value_string qsig_PresentedAddressScreened_vals[] = {
1041 { 0, "presentationAllowedAddressS" },
1042 { 1, "presentationRestricted" },
1043 { 2, "numberNotAvailableDueToInterworking" },
1044 { 3, "presentationRestrictedAddressS" },
1048 static const ber_choice_t PresentedAddressScreened_choice[] = {
1049 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_presentationAllowedAddressS_impl },
1050 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
1051 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_numberNotAvailableDueToInterworking_impl },
1052 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_presentationRestrictedAddressS_impl },
1053 { 0, 0, 0, 0, NULL }
1057 dissect_qsig_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_) {
1058 offset = dissect_ber_choice(actx, tree, tvb, offset,
1059 PresentedAddressScreened_choice, hf_index, ett_qsig_PresentedAddressScreened,
1066 static const ber_sequence_t Address_sequence[] = {
1067 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_partyNumber },
1068 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_partySubaddress },
1073 dissect_qsig_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_) {
1074 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1075 Address_sequence, hf_index, ett_qsig_Address);
1079 static int dissect_presentationAllowedAddressU_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1080 return dissect_qsig_Address(TRUE, tvb, offset, actx, tree, hf_qsig_presentationAllowedAddressU);
1082 static int dissect_presentationRestrictedAddressU_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1083 return dissect_qsig_Address(TRUE, tvb, offset, actx, tree, hf_qsig_presentationRestrictedAddressU);
1085 static int dissect_divertedToAddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1086 return dissect_qsig_Address(FALSE, tvb, offset, actx, tree, hf_qsig_divertedToAddress);
1088 static int dissect_calledAddress(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1089 return dissect_qsig_Address(FALSE, tvb, offset, actx, tree, hf_qsig_calledAddress);
1093 static const value_string qsig_PresentedAddressUnscreened_vals[] = {
1094 { 0, "presentationAllowedAddressU" },
1095 { 1, "presentationRestricted" },
1096 { 2, "numberNotAvailableDueToInterworking" },
1097 { 3, "presentationRestrictedAddressU" },
1101 static const ber_choice_t PresentedAddressUnscreened_choice[] = {
1102 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_presentationAllowedAddressU_impl },
1103 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
1104 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_numberNotAvailableDueToInterworking_impl },
1105 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_presentationRestrictedAddressU_impl },
1106 { 0, 0, 0, 0, NULL }
1110 dissect_qsig_PresentedAddressUnscreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1111 offset = dissect_ber_choice(actx, tree, tvb, offset,
1112 PresentedAddressUnscreened_choice, hf_index, ett_qsig_PresentedAddressUnscreened,
1119 static const ber_sequence_t NumberScreened_sequence[] = {
1120 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_partyNumber },
1121 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_screeningIndicator },
1126 dissect_qsig_NumberScreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1128 NumberScreened_sequence, hf_index, ett_qsig_NumberScreened);
1132 static int dissect_presentationAllowedAddressNS_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1133 return dissect_qsig_NumberScreened(TRUE, tvb, offset, actx, tree, hf_qsig_presentationAllowedAddressNS);
1135 static int dissect_presentationRestrictedAddressNS_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1136 return dissect_qsig_NumberScreened(TRUE, tvb, offset, actx, tree, hf_qsig_presentationRestrictedAddressNS);
1140 static const value_string qsig_PresentedNumberScreened_vals[] = {
1141 { 0, "presentationAllowedAddressNS" },
1142 { 1, "presentationRestricted" },
1143 { 2, "numberNotAvailableDueToInterworking" },
1144 { 3, "presentationRestrictedAddressNS" },
1148 static const ber_choice_t PresentedNumberScreened_choice[] = {
1149 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_presentationAllowedAddressNS_impl },
1150 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
1151 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_numberNotAvailableDueToInterworking_impl },
1152 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_presentationRestrictedAddressNS_impl },
1153 { 0, 0, 0, 0, NULL }
1157 dissect_qsig_PresentedNumberScreened(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1158 offset = dissect_ber_choice(actx, tree, tvb, offset,
1159 PresentedNumberScreened_choice, hf_index, ett_qsig_PresentedNumberScreened,
1164 static int dissect_callingNumber(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1165 return dissect_qsig_PresentedNumberScreened(FALSE, tvb, offset, actx, tree, hf_qsig_callingNumber);
1169 static const value_string qsig_PresentedNumberUnscreened_vals[] = {
1170 { 0, "presentationAllowedAddressNU" },
1171 { 1, "presentationRestricted" },
1172 { 2, "numberNotAvailableDueToInterworking" },
1173 { 3, "presentationRestrictedAddressNU" },
1177 static const ber_choice_t PresentedNumberUnscreened_choice[] = {
1178 { 0, BER_CLASS_CON, 0, 0, dissect_presentationAllowedAddressNU },
1179 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentationRestricted_impl },
1180 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_numberNotAvailableDueToInterworking_impl },
1181 { 3, BER_CLASS_CON, 3, 0, dissect_presentationRestrictedAddressNU },
1182 { 0, 0, 0, 0, NULL }
1186 dissect_qsig_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_) {
1187 offset = dissect_ber_choice(actx, tree, tvb, offset,
1188 PresentedNumberUnscreened_choice, hf_index, ett_qsig_PresentedNumberUnscreened,
1193 static int dissect_lastRerouteingNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1194 return dissect_qsig_PresentedNumberUnscreened(FALSE, tvb, offset, actx, tree, hf_qsig_lastRerouteingNr);
1196 static int dissect_originalCalledNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1197 return dissect_qsig_PresentedNumberUnscreened(FALSE, tvb, offset, actx, tree, hf_qsig_originalCalledNr);
1199 static int dissect_divertingNr(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1200 return dissect_qsig_PresentedNumberUnscreened(FALSE, tvb, offset, actx, tree, hf_qsig_divertingNr);
1206 dissect_qsig_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_) {
1207 offset = dissect_ber_boolean(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index);
1211 static int dissect_presentationAllowedIndicator(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1212 return dissect_qsig_PresentationAllowedIndicator(FALSE, tvb, offset, actx, tree, hf_qsig_presentationAllowedIndicator);
1218 dissect_qsig_NameData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1219 offset = dissect_ber_octet_string(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1224 static int dissect_namePresentationAllowedSimple_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1225 return dissect_qsig_NameData(TRUE, tvb, offset, actx, tree, hf_qsig_namePresentationAllowedSimple);
1227 static int dissect_namePresentationRestrictedSimple_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1228 return dissect_qsig_NameData(TRUE, tvb, offset, actx, tree, hf_qsig_namePresentationRestrictedSimple);
1230 static int dissect_nameData(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1231 return dissect_qsig_NameData(FALSE, tvb, offset, actx, tree, hf_qsig_nameData);
1235 static const value_string qsig_CharacterSet_vals[] = {
1243 { 8, "iso10646-BmpString" },
1244 { 9, "iso10646-utf-8String" },
1250 dissect_qsig_CharacterSet(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_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1256 static int dissect_characterSet(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1257 return dissect_qsig_CharacterSet(FALSE, tvb, offset, actx, tree, hf_qsig_characterSet);
1261 static const ber_sequence_t NameSet_sequence[] = {
1262 { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_nameData },
1263 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_characterSet },
1268 dissect_qsig_NameSet(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1269 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1270 NameSet_sequence, hf_index, ett_qsig_NameSet);
1274 static int dissect_namePresentationAllowedExtended_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1275 return dissect_qsig_NameSet(TRUE, tvb, offset, actx, tree, hf_qsig_namePresentationAllowedExtended);
1277 static int dissect_namePresentationRestrictedExtended_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1278 return dissect_qsig_NameSet(TRUE, tvb, offset, actx, tree, hf_qsig_namePresentationRestrictedExtended);
1282 static const value_string qsig_NamePresentationAllowed_vals[] = {
1283 { 0, "namePresentationAllowedSimple" },
1284 { 1, "namePresentationAllowedExtended" },
1288 static const ber_choice_t NamePresentationAllowed_choice[] = {
1289 { 0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_namePresentationAllowedSimple_impl },
1290 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_namePresentationAllowedExtended_impl },
1291 { 0, 0, 0, 0, NULL }
1295 dissect_qsig_NamePresentationAllowed(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1296 offset = dissect_ber_choice(actx, tree, tvb, offset,
1297 NamePresentationAllowed_choice, hf_index, ett_qsig_NamePresentationAllowed,
1302 static int dissect_namePresentationAllowed(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1303 return dissect_qsig_NamePresentationAllowed(FALSE, tvb, offset, actx, tree, hf_qsig_namePresentationAllowed);
1307 static const value_string qsig_NamePresentationRestricted_vals[] = {
1308 { 2, "namePresentationRestrictedSimple" },
1309 { 3, "namePresentationRestrictedExtended" },
1310 { 7, "namePresentationRestrictedNull" },
1314 static const ber_choice_t NamePresentationRestricted_choice[] = {
1315 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_namePresentationRestrictedSimple_impl },
1316 { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_namePresentationRestrictedExtended_impl },
1317 { 7, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_namePresentationRestrictedNull_impl },
1318 { 0, 0, 0, 0, NULL }
1322 dissect_qsig_NamePresentationRestricted(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1323 offset = dissect_ber_choice(actx, tree, tvb, offset,
1324 NamePresentationRestricted_choice, hf_index, ett_qsig_NamePresentationRestricted,
1329 static int dissect_namePresentationRestricted(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1330 return dissect_qsig_NamePresentationRestricted(FALSE, tvb, offset, actx, tree, hf_qsig_namePresentationRestricted);
1336 dissect_qsig_NameNotAvailable(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1337 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1338 hf_index, BER_CLASS_CON, 4, TRUE, dissect_qsig_NULL);
1342 static int dissect_nameNotAvailable(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1343 return dissect_qsig_NameNotAvailable(FALSE, tvb, offset, actx, tree, hf_qsig_nameNotAvailable);
1347 static const ber_choice_t Name_choice[] = {
1348 { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_namePresentationAllowed },
1349 { 1, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_namePresentationRestricted },
1350 { 2, BER_CLASS_CON, 4, BER_FLAGS_NOOWNTAG, dissect_nameNotAvailable },
1351 { 0, 0, 0, 0, NULL }
1355 dissect_qsig_Name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1356 offset = dissect_ber_choice(actx, tree, tvb, offset,
1357 Name_choice, hf_index, ett_qsig_Name,
1362 static int dissect_name(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1363 return dissect_qsig_Name(FALSE, tvb, offset, actx, tree, hf_qsig_name);
1365 static int dissect_callingName(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1366 return dissect_qsig_Name(FALSE, tvb, offset, actx, tree, hf_qsig_callingName);
1368 static int dissect_redirectingName(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1369 return dissect_qsig_Name(FALSE, tvb, offset, actx, tree, hf_qsig_redirectingName);
1371 static int dissect_originalCalledName(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1372 return dissect_qsig_Name(FALSE, tvb, offset, actx, tree, hf_qsig_originalCalledName);
1374 static int dissect_redirectionName(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1375 return dissect_qsig_Name(FALSE, tvb, offset, actx, tree, hf_qsig_redirectionName);
1379 static const ber_sequence_t SEQUENCE_OF_Extension_sequence_of[1] = {
1380 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_multiple_item },
1384 dissect_qsig_SEQUENCE_OF_Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1385 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1386 SEQUENCE_OF_Extension_sequence_of, hf_index, ett_qsig_SEQUENCE_OF_Extension);
1390 static int dissect_multiple_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1391 return dissect_qsig_SEQUENCE_OF_Extension(TRUE, tvb, offset, actx, tree, hf_qsig_multiple);
1395 static const value_string qsig_NameExtension_vals[] = {
1401 static const ber_choice_t NameExtension_choice[] = {
1402 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_single_impl },
1403 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1404 { 0, 0, 0, 0, NULL }
1408 dissect_qsig_NameExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1409 offset = dissect_ber_choice(actx, tree, tvb, offset,
1410 NameExtension_choice, hf_index, ett_qsig_NameExtension,
1415 static int dissect_extensionNA(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1416 return dissect_qsig_NameExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionNA);
1420 static const ber_sequence_t T_nameSequence_sequence[] = {
1421 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
1422 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionNA },
1427 dissect_qsig_T_nameSequence(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1428 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1429 T_nameSequence_sequence, hf_index, ett_qsig_T_nameSequence);
1433 static int dissect_nameSequence(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1434 return dissect_qsig_T_nameSequence(FALSE, tvb, offset, actx, tree, hf_qsig_nameSequence);
1438 static const value_string qsig_NameArg_vals[] = {
1440 { 1, "nameSequence" },
1444 static const ber_choice_t NameArg_choice[] = {
1445 { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_name },
1446 { 1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_nameSequence },
1447 { 0, 0, 0, 0, NULL }
1451 dissect_qsig_NameArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1452 offset = dissect_ber_choice(actx, tree, tvb, offset,
1453 NameArg_choice, hf_index, ett_qsig_NameArg,
1460 static const value_string qsig_Procedure_vals[] = {
1469 dissect_qsig_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_) {
1470 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1475 static int dissect_procedure(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1476 return dissect_qsig_Procedure(FALSE, tvb, offset, actx, tree, hf_qsig_procedure);
1480 static const value_string qsig_BasicService_vals[] = {
1481 { 0, "allServices" },
1483 { 2, "unrestrictedDigitalInformation" },
1484 { 3, "audio3100Hz" },
1485 { 32, "telephony" },
1487 { 34, "telefaxGroup4Class1" },
1488 { 35, "videotexSyntaxBased" },
1489 { 36, "videotelephony" },
1495 dissect_qsig_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_) {
1496 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1501 static int dissect_basicService(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1502 return dissect_qsig_BasicService(FALSE, tvb, offset, actx, tree, hf_qsig_basicService);
1506 static const value_string qsig_ADExtension_vals[] = {
1512 static const ber_choice_t ADExtension_choice[] = {
1513 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1514 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1515 { 0, 0, 0, 0, NULL }
1519 dissect_qsig_ADExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1520 offset = dissect_ber_choice(actx, tree, tvb, offset,
1521 ADExtension_choice, hf_index, ett_qsig_ADExtension,
1526 static int dissect_extensionAD(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1527 return dissect_qsig_ADExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionAD);
1531 static const ber_sequence_t ActivateDivArg_sequence[] = {
1532 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_procedure },
1533 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_basicService },
1534 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_divertedToAddress },
1535 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_servedUserNr },
1536 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_activatingUserNr },
1537 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionAD },
1542 dissect_qsig_ActivateDivArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1543 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1544 ActivateDivArg_sequence, hf_index, ett_qsig_ActivateDivArg);
1550 static const value_string qsig_ActivateDivRes_vals[] = {
1557 static const ber_choice_t ActivateDivRes_choice[] = {
1558 { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
1559 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1560 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1561 { 0, 0, 0, 0, NULL }
1565 dissect_qsig_ActivateDivRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1566 offset = dissect_ber_choice(actx, tree, tvb, offset,
1567 ActivateDivRes_choice, hf_index, ett_qsig_ActivateDivRes,
1574 static const value_string qsig_DDExtension_vals[] = {
1580 static const ber_choice_t DDExtension_choice[] = {
1581 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1582 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1583 { 0, 0, 0, 0, NULL }
1587 dissect_qsig_DDExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1588 offset = dissect_ber_choice(actx, tree, tvb, offset,
1589 DDExtension_choice, hf_index, ett_qsig_DDExtension,
1594 static int dissect_extensionDD(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1595 return dissect_qsig_DDExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionDD);
1599 static const ber_sequence_t DeactivateDivArg_sequence[] = {
1600 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_procedure },
1601 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_basicService },
1602 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_servedUserNr },
1603 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_deactivatingUserNr },
1604 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionDD },
1609 dissect_qsig_DeactivateDivArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1610 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1611 DeactivateDivArg_sequence, hf_index, ett_qsig_DeactivateDivArg);
1617 static const value_string qsig_DeactivateDivRes_vals[] = {
1624 static const ber_choice_t DeactivateDivRes_choice[] = {
1625 { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
1626 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1627 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1628 { 0, 0, 0, 0, NULL }
1632 dissect_qsig_DeactivateDivRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1633 offset = dissect_ber_choice(actx, tree, tvb, offset,
1634 DeactivateDivRes_choice, hf_index, ett_qsig_DeactivateDivRes,
1641 static const value_string qsig_IDExtension_vals[] = {
1647 static const ber_choice_t IDExtension_choice[] = {
1648 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1649 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1650 { 0, 0, 0, 0, NULL }
1654 dissect_qsig_IDExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1655 offset = dissect_ber_choice(actx, tree, tvb, offset,
1656 IDExtension_choice, hf_index, ett_qsig_IDExtension,
1661 static int dissect_extensionID(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1662 return dissect_qsig_IDExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionID);
1666 static const ber_sequence_t InterrDivArg_sequence[] = {
1667 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_procedure },
1668 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_basicService },
1669 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_servedUserNr },
1670 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_interrogatingUserNr },
1671 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionID },
1676 dissect_qsig_InterrDivArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1677 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1678 InterrDivArg_sequence, hf_index, ett_qsig_InterrDivArg);
1684 static const value_string qsig_CHRExtension_vals[] = {
1690 static const ber_choice_t CHRExtension_choice[] = {
1691 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1692 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1693 { 0, 0, 0, 0, NULL }
1697 dissect_qsig_CHRExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1698 offset = dissect_ber_choice(actx, tree, tvb, offset,
1699 CHRExtension_choice, hf_index, ett_qsig_CHRExtension,
1704 static int dissect_extensionCHR(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1705 return dissect_qsig_CHRExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionCHR);
1709 static const ber_sequence_t ChkResArg_sequence[] = {
1710 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_servedUserNr },
1711 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_basicService },
1712 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_divertedToNr },
1713 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionCHR },
1718 dissect_qsig_ChkResArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1719 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1720 ChkResArg_sequence, hf_index, ett_qsig_ChkResArg);
1726 static const value_string qsig_ChkResRes_vals[] = {
1733 static const ber_choice_t ChkResRes_choice[] = {
1734 { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
1735 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1736 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1737 { 0, 0, 0, 0, NULL }
1741 dissect_qsig_ChkResRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1742 offset = dissect_ber_choice(actx, tree, tvb, offset,
1743 ChkResRes_choice, hf_index, ett_qsig_ChkResRes,
1750 static const value_string qsig_DiversionReason_vals[] = {
1760 dissect_qsig_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_) {
1761 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1766 static int dissect_rerouteingReason(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1767 return dissect_qsig_DiversionReason(FALSE, tvb, offset, actx, tree, hf_qsig_rerouteingReason);
1769 static int dissect_originalRerouteingReason_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1770 return dissect_qsig_DiversionReason(TRUE, tvb, offset, actx, tree, hf_qsig_originalRerouteingReason);
1772 static int dissect_diversionReason(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1773 return dissect_qsig_DiversionReason(FALSE, tvb, offset, actx, tree, hf_qsig_diversionReason);
1775 static int dissect_originalDiversionReason_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1776 return dissect_qsig_DiversionReason(TRUE, tvb, offset, actx, tree, hf_qsig_originalDiversionReason);
1782 dissect_qsig_INTEGER_1_15(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1783 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1788 static int dissect_diversionCounter(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1789 return dissect_qsig_INTEGER_1_15(FALSE, tvb, offset, actx, tree, hf_qsig_diversionCounter);
1793 static const value_string qsig_SubscriptionOption_vals[] = {
1794 { 0, "noNotification" },
1795 { 1, "notificationWithoutDivertedToNr" },
1796 { 2, "notificationWithDivertedToNr" },
1802 dissect_qsig_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_) {
1803 offset = dissect_ber_integer(implicit_tag, actx->pinfo, tree, tvb, offset, hf_index,
1808 static int dissect_subscriptionOption(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1809 return dissect_qsig_SubscriptionOption(FALSE, tvb, offset, actx, tree, hf_qsig_subscriptionOption);
1811 static int dissect_subscriptionOption_impl(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1812 return dissect_qsig_SubscriptionOption(TRUE, tvb, offset, actx, tree, hf_qsig_subscriptionOption);
1816 static const value_string qsig_CRRExtension_vals[] = {
1822 static const ber_choice_t CRRExtension_choice[] = {
1823 { 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_single_impl },
1824 { 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1825 { 0, 0, 0, 0, NULL }
1829 dissect_qsig_CRRExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1830 offset = dissect_ber_choice(actx, tree, tvb, offset,
1831 CRRExtension_choice, hf_index, ett_qsig_CRRExtension,
1836 static int dissect_extensionCRR(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1837 return dissect_qsig_CRRExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionCRR);
1841 static const ber_sequence_t CallRrArg_sequence[] = {
1842 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_rerouteingReason },
1843 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originalRerouteingReason_impl },
1844 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_calledAddress },
1845 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_diversionCounter },
1846 { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_pSS1InfoElement },
1847 { BER_CLASS_CON, 1, BER_FLAGS_NOTCHKTAG, dissect_lastRerouteingNr },
1848 { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_subscriptionOption_impl },
1849 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_callingPartySubaddress },
1850 { BER_CLASS_CON, 4, BER_FLAGS_NOTCHKTAG, dissect_callingNumber },
1851 { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_callingName },
1852 { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_originalCalledNr },
1853 { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_redirectingName },
1854 { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_originalCalledName },
1855 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionCRR },
1860 dissect_qsig_CallRrArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1861 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1862 CallRrArg_sequence, hf_index, ett_qsig_CallRrArg);
1868 static const value_string qsig_CallRrRes_vals[] = {
1875 static const ber_choice_t CallRrRes_choice[] = {
1876 { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
1877 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1878 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1879 { 0, 0, 0, 0, NULL }
1883 dissect_qsig_CallRrRes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1884 offset = dissect_ber_choice(actx, tree, tvb, offset,
1885 CallRrRes_choice, hf_index, ett_qsig_CallRrRes,
1892 static const value_string qsig_DLI1Extension_vals[] = {
1898 static const ber_choice_t DLI1Extension_choice[] = {
1899 { 9, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_single_impl },
1900 { 10, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1901 { 0, 0, 0, 0, NULL }
1905 dissect_qsig_DLI1Extension(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_choice(actx, tree, tvb, offset,
1907 DLI1Extension_choice, hf_index, ett_qsig_DLI1Extension,
1912 static int dissect_extensionDLI1(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1913 return dissect_qsig_DLI1Extension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionDLI1);
1917 static const ber_sequence_t DivLegInf1Arg_sequence[] = {
1918 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_diversionReason },
1919 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_subscriptionOption },
1920 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_nominatedNr },
1921 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionDLI1 },
1926 dissect_qsig_DivLegInf1Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1927 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1928 DivLegInf1Arg_sequence, hf_index, ett_qsig_DivLegInf1Arg);
1934 static const value_string qsig_DLI2Extension_vals[] = {
1940 static const ber_choice_t DLI2Extension_choice[] = {
1941 { 5, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_single_impl },
1942 { 6, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1943 { 0, 0, 0, 0, NULL }
1947 dissect_qsig_DLI2Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1948 offset = dissect_ber_choice(actx, tree, tvb, offset,
1949 DLI2Extension_choice, hf_index, ett_qsig_DLI2Extension,
1954 static int dissect_extensionDLI2(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
1955 return dissect_qsig_DLI2Extension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionDLI2);
1959 static const ber_sequence_t DivLegInf2Arg_sequence[] = {
1960 { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_diversionCounter },
1961 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_diversionReason },
1962 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originalDiversionReason_impl },
1963 { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_divertingNr },
1964 { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_originalCalledNr },
1965 { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_redirectingName },
1966 { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_originalCalledName },
1967 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionDLI2 },
1972 dissect_qsig_DivLegInf2Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1973 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1974 DivLegInf2Arg_sequence, hf_index, ett_qsig_DivLegInf2Arg);
1980 static const value_string qsig_DLI3Extension_vals[] = {
1986 static const ber_choice_t DLI3Extension_choice[] = {
1987 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
1988 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
1989 { 0, 0, 0, 0, NULL }
1993 dissect_qsig_DLI3Extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1994 offset = dissect_ber_choice(actx, tree, tvb, offset,
1995 DLI3Extension_choice, hf_index, ett_qsig_DLI3Extension,
2000 static int dissect_extensionDLI3(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2001 return dissect_qsig_DLI3Extension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionDLI3);
2005 static const ber_sequence_t DivLegInf3Arg_sequence[] = {
2006 { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_NOOWNTAG, dissect_presentationAllowedIndicator },
2007 { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_redirectionName },
2008 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionDLI3 },
2013 dissect_qsig_DivLegInf3Arg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2014 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2015 DivLegInf3Arg_sequence, hf_index, ett_qsig_DivLegInf3Arg);
2021 static const value_string qsig_DivLegFailArg_vals[] = {
2028 static const ber_choice_t DivLegFailArg_choice[] = {
2029 { 0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_null },
2030 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
2031 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
2032 { 0, 0, 0, 0, NULL }
2036 dissect_qsig_DivLegFailArg(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2037 offset = dissect_ber_choice(actx, tree, tvb, offset,
2038 DivLegFailArg_choice, hf_index, ett_qsig_DivLegFailArg,
2045 static const value_string qsig_IRExtension_vals[] = {
2051 static const ber_choice_t IRExtension_choice[] = {
2052 { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_single_impl },
2053 { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_multiple_impl },
2054 { 0, 0, 0, 0, NULL }
2058 dissect_qsig_IRExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2059 offset = dissect_ber_choice(actx, tree, tvb, offset,
2060 IRExtension_choice, hf_index, ett_qsig_IRExtension,
2065 static int dissect_extensionIR(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2066 return dissect_qsig_IRExtension(FALSE, tvb, offset, actx, tree, hf_qsig_extensionIR);
2070 static const ber_sequence_t IntResult_sequence[] = {
2071 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_servedUserNr },
2072 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_basicService },
2073 { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_procedure },
2074 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_divertedToAddress },
2075 { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_remoteEnabled },
2076 { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extensionIR },
2081 dissect_qsig_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_) {
2082 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2083 IntResult_sequence, hf_index, ett_qsig_IntResult);
2087 static int dissect_IntResultList_item(proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_) {
2088 return dissect_qsig_IntResult(FALSE, tvb, offset, actx, tree, hf_qsig_IntResultList_item);
2092 static const ber_sequence_t IntResultList_set_of[1] = {
2093 { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_IntResultList_item },
2097 dissect_qsig_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_) {
2098 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2099 IntResultList_set_of, hf_index, ett_qsig_IntResultList);
2106 static void dissect_NameArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2107 asn1_ctx_t asn1_ctx;
2108 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2109 dissect_qsig_NameArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_NameArg_PDU);
2111 static void dissect_ActivateDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2112 asn1_ctx_t asn1_ctx;
2113 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2114 dissect_qsig_ActivateDivArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_ActivateDivArg_PDU);
2116 static void dissect_ActivateDivRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2117 asn1_ctx_t asn1_ctx;
2118 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2119 dissect_qsig_ActivateDivRes(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_ActivateDivRes_PDU);
2121 static void dissect_DeactivateDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2122 asn1_ctx_t asn1_ctx;
2123 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2124 dissect_qsig_DeactivateDivArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DeactivateDivArg_PDU);
2126 static void dissect_DeactivateDivRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2127 asn1_ctx_t asn1_ctx;
2128 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2129 dissect_qsig_DeactivateDivRes(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DeactivateDivRes_PDU);
2131 static void dissect_InterrDivArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2132 asn1_ctx_t asn1_ctx;
2133 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2134 dissect_qsig_InterrDivArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_InterrDivArg_PDU);
2136 static void dissect_ChkResArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2137 asn1_ctx_t asn1_ctx;
2138 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2139 dissect_qsig_ChkResArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_ChkResArg_PDU);
2141 static void dissect_ChkResRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2142 asn1_ctx_t asn1_ctx;
2143 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2144 dissect_qsig_ChkResRes(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_ChkResRes_PDU);
2146 static void dissect_CallRrArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2147 asn1_ctx_t asn1_ctx;
2148 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2149 dissect_qsig_CallRrArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_CallRrArg_PDU);
2151 static void dissect_CallRrRes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2152 asn1_ctx_t asn1_ctx;
2153 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2154 dissect_qsig_CallRrRes(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_CallRrRes_PDU);
2156 static void dissect_DivLegInf1Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2157 asn1_ctx_t asn1_ctx;
2158 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2159 dissect_qsig_DivLegInf1Arg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DivLegInf1Arg_PDU);
2161 static void dissect_DivLegInf2Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2162 asn1_ctx_t asn1_ctx;
2163 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2164 dissect_qsig_DivLegInf2Arg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DivLegInf2Arg_PDU);
2166 static void dissect_DivLegInf3Arg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2167 asn1_ctx_t asn1_ctx;
2168 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2169 dissect_qsig_DivLegInf3Arg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DivLegInf3Arg_PDU);
2171 static void dissect_DivLegFailArg_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2172 asn1_ctx_t asn1_ctx;
2173 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2174 dissect_qsig_DivLegFailArg(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_DivLegFailArg_PDU);
2176 static void dissect_IntResultList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
2177 asn1_ctx_t asn1_ctx;
2178 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
2179 dissect_qsig_IntResultList(FALSE, tvb, 0, &asn1_ctx, tree, hf_qsig_IntResultList_PDU);
2183 /*--- End of included file: packet-qsig-fn.c ---*/
2184 #line 483 "packet-qsig-template.c"
2187 static qsig_op qsig_tab[] = {
2188 /* 0 */ { 13868, FNA( 0), FNR( 0), dissect_NameArg_PDU, NULL },
2189 /* 1 */ { 13868, FNA( 1), FNR( 1), dissect_NameArg_PDU, NULL },
2190 /* 2 */ { 13868, FNA( 2), FNR( 2), dissect_NameArg_PDU, NULL },
2191 /* 3 */ { 13868, FNA( 3), FNR( 3), dissect_NameArg_PDU, NULL },
2192 /* 4 */ { 13874, FNA( 4), FNR( 4), NULL, NULL },
2193 /* 5 */ { 13874, FNA( 5), FNR( 5), NULL, NULL },
2194 /* 6 */ { 13874, FNA( 6), FNR( 6), NULL, NULL },
2195 /* 7 */ { 13869, FNA( 7), FNR( 7), NULL, NULL },
2196 /* 8 */ { 13869, FNA( 8), FNR( 8), NULL, NULL },
2197 /* 9 */ { 13869, FNA( 9), FNR( 9), NULL, NULL },
2198 /* 10 */ { 13869, FNA( 10), FNR( 10), NULL, NULL },
2199 /* 11 */ { 13869, FNA( 11), FNR( 11), NULL, NULL },
2200 /* 12 */ { 13869, FNA( 12), FNR( 12), NULL, NULL },
2201 /* 13 */ { 13869, FNA( 13), FNR( 13), NULL, NULL },
2202 /* 14 */ { 13869, FNA( 14), FNR( 14), NULL, NULL },
2203 /* 15 */ { 13873, FNA( 15), FNR( 15), dissect_ActivateDivArg_PDU, dissect_ActivateDivRes_PDU },
2204 /* 16 */ { 13873, FNA( 16), FNR( 16), dissect_DeactivateDivArg_PDU, dissect_DeactivateDivRes_PDU },
2205 /* 17 */ { 13873, FNA( 17), FNR( 17), dissect_InterrDivArg_PDU, dissect_IntResultList_PDU },
2206 /* 18 */ { 13873, FNA( 18), FNR( 18), dissect_ChkResArg_PDU, dissect_ChkResRes_PDU },
2207 /* 19 */ { 13873, FNA( 19), FNR( 19), dissect_CallRrArg_PDU, dissect_CallRrArg_PDU },
2208 /* 20 */ { 13873, FNA( 20), FNR( 20), dissect_DivLegInf1Arg_PDU, NULL },
2209 /* 21 */ { 13873, FNA( 21), FNR( 21), dissect_DivLegInf2Arg_PDU, NULL },
2210 /* 22 */ { 13873, FNA( 22), FNR( 22), dissect_DivLegInf3Arg_PDU, NULL },
2211 /* 23 */ { 13873, FNA( 23), FNR( 23), dissect_DivLegFailArg_PDU, NULL },
2212 /* 24 */ { NO_SRV, NULL, NULL, NULL, NULL },
2213 /* 25 */ { NO_SRV, NULL, NULL, NULL, NULL },
2214 /* 26 */ { NO_SRV, NULL, NULL, NULL, NULL },
2215 /* 27 */ { 13870, FNA( 27), FNR( 27), NULL, NULL },
2216 /* 28 */ { 13870, FNA( 28), FNR( 28), NULL, NULL },
2217 /* 29 */ { 13870, FNA( 29), FNR( 29), NULL, NULL },
2218 /* 30 */ { 13870, FNA( 30), FNR( 30), NULL, NULL },
2219 /* 31 */ { 13870, FNA( 31), FNR( 31), NULL, NULL },
2220 /* 32 */ { 13870, FNA( 32), FNR( 32), NULL, NULL },
2221 /* 33 */ { 13870, FNA( 33), FNR( 33), NULL, NULL },
2222 /* 34 */ { 14843, FNA( 34), FNR( 34), NULL, NULL },
2223 /* 35 */ { 14844, FNA( 35), FNR( 35), NULL, NULL },
2224 /* 36 */ { 14844, FNA( 36), FNR( 36), NULL, NULL },
2225 /* 37 */ { 14844, FNA( 37), FNR( 37), NULL, NULL },
2226 /* 38 */ { 14844, FNA( 38), FNR( 38), NULL, NULL },
2227 /* 39 */ { 14844, FNA( 39), FNR( 39), NULL, NULL },
2228 /* 40 */ { 13870, FNA( 40), FNR( 40), NULL, NULL },
2229 /* 41 */ { 90001, FNA( 41), FNR( 41), NULL, NULL },
2230 /* 42 */ { 90001, FNA( 42), FNR( 42), NULL, NULL },
2231 /* 43 */ { 14846, FNA( 43), FNR( 43), NULL, NULL },
2232 /* 44 */ { 14846, FNA( 44), FNR( 44), NULL, NULL },
2233 /* 45 */ { 14846, FNA( 45), FNR( 45), NULL, NULL },
2234 /* 46 */ { 14846, FNA( 46), FNR( 46), NULL, NULL },
2235 /* 47 */ { 14846, FNA( 47), FNR( 47), NULL, NULL },
2236 /* 48 */ { 14846, FNA( 48), FNR( 48), NULL, NULL },
2237 /* 49 */ { 90001, FNA( 49), FNR( 49), NULL, NULL },
2238 /* 50 */ { 15429, FNA( 50), FNR( 50), NULL, NULL },
2239 /* 51 */ { 15429, FNA( 51), FNR( 51), NULL, NULL },
2240 /* 52 */ { 15429, FNA( 52), FNR( 52), NULL, NULL },
2241 /* 53 */ { 15429, FNA( 53), FNR( 53), NULL, NULL },
2242 /* 54 */ { 15431, FNA( 54), FNR( 54), NULL, NULL },
2243 /* 55 */ { 15431, FNA( 55), FNR( 55), NULL, NULL },
2244 /* 56 */ { 15431, FNA( 56), FNR( 56), NULL, NULL },
2245 /* 57 */ { 15052, FNA( 57), FNR( 57), NULL, NULL },
2246 /* 58 */ { 15052, FNA( 58), FNR( 58), NULL, NULL },
2247 /* 59 */ { 15050, FNA( 59), FNR( 59), NULL, NULL },
2248 /* 60 */ { 15050, FNA( 60), FNR( 60), NULL, NULL },
2249 /* 61 */ { 15050, FNA( 61), FNR( 61), NULL, NULL },
2250 /* 62 */ { 15050, FNA( 62), FNR( 62), NULL, NULL },
2251 /* 63 */ { 15050, FNA( 63), FNR( 63), NULL, NULL },
2252 /* 64 */ { 15050, FNA( 64), FNR( 64), NULL, NULL },
2253 /* 65 */ { 15050, FNA( 65), FNR( 65), NULL, NULL },
2254 /* 66 */ { 15054, FNA( 66), FNR( 66), NULL, NULL },
2255 /* 67 */ { 15054, FNA( 67), FNR( 67), NULL, NULL },
2256 /* 68 */ { 15054, FNA( 68), FNR( 68), NULL, NULL },
2257 /* 69 */ { 15054, FNA( 69), FNR( 69), NULL, NULL },
2258 /* 70 */ { 15054, FNA( 70), FNR( 70), NULL, NULL },
2259 /* 71 */ { 15431, FNA( 71), FNR( 71), NULL, NULL },
2260 /* 72 */ { 15433, FNA( 72), FNR( 72), NULL, NULL },
2261 /* 73 */ { 15433, FNA( 73), FNR( 73), NULL, NULL },
2262 /* 74 */ { 15433, FNA( 74), FNR( 74), NULL, NULL },
2263 /* 75 */ { 15433, FNA( 75), FNR( 75), NULL, NULL },
2264 /* 76 */ { 15433, FNA( 76), FNR( 76), NULL, NULL },
2265 /* 77 */ { 15433, FNA( 77), FNR( 77), NULL, NULL },
2266 /* 78 */ { 15507, FNA( 78), FNR( 78), NULL, NULL },
2267 /* 79 */ { 15507, FNA( 79), FNR( 79), NULL, NULL },
2268 /* 80 */ { 90002, FNA( 80), FNR( 80), NULL, NULL },
2269 /* 81 */ { 90002, FNA( 81), FNR( 81), NULL, NULL },
2270 /* 82 */ { 90002, FNA( 82), FNR( 82), NULL, NULL },
2271 /* 83 */ { NO_SRV, NULL, NULL, NULL, NULL },
2272 /* 84 */ { 15772, FNA( 84), FNR( 84), NULL, NULL },
2273 /* 85 */ { 15772, FNA( 85), FNR( 85), NULL, NULL },
2274 /* 86 */ { 13874, FNA( 86), FNR( 86), NULL, NULL },
2275 /* 87 */ { 15992, FNA( 87), FNR( 87), NULL, NULL },
2276 /* 88 */ { 15992, FNA( 88), FNR( 88), NULL, NULL },
2277 /* 89 */ { 17876, FNA( 89), FNR( 89), NULL, NULL },
2278 /* 90 */ { 17876, FNA( 90), FNR( 90), NULL, NULL },
2279 /* 91 */ { 17876, FNA( 91), FNR( 91), NULL, NULL },
2280 /* 92 */ { 17876, FNA( 92), FNR( 92), NULL, NULL },
2281 /* 93 */ { 17878, FNA( 93), FNR( 93), NULL, NULL },
2282 /* 94 */ { 17878, FNA( 94), FNR( 94), NULL, NULL },
2283 /* 95 */ { 17878, FNA( 95), FNR( 95), NULL, NULL },
2284 /* 96 */ { 17878, FNA( 96), FNR( 96), NULL, NULL },
2285 /* 97 */ { 15429, FNA( 97), FNR( 97), NULL, NULL },
2286 /* 98 */ { 15429, FNA( 98), FNR( 98), NULL, NULL },
2287 /* 99 */ { 19460, FNA( 99), FNR( 99), NULL, NULL },
2288 /* 100 */ { 19460, FNA(100), FNR(100), NULL, NULL },
2289 /* 101 */ { 19460, FNA(101), FNR(101), NULL, NULL },
2290 /* 102 */ { 19460, FNA(102), FNR(102), NULL, NULL },
2291 /* 103 */ { 21407, FNA(103), FNR(103), NULL, NULL },
2292 /* 104 */ { 21407, FNA(104), FNR(104), NULL, NULL },
2293 /* 105 */ { 21889, FNA(105), FNR(105), NULL, NULL },
2294 /* 106 */ { 21889, FNA(106), FNR(106), NULL, NULL },
2295 /* 107 */ { 325, FNA(107), FNR(107), NULL, NULL },
2296 /* 108 */ { 325, FNA(108), FNR(108), NULL, NULL },
2297 /* 109 */ { 325, FNA(109), FNR(109), NULL, NULL },
2298 /* 110 */ { 325, FNA(110), FNR(110), NULL, NULL },
2299 /* 111 */ { 325, FNA(111), FNR(111), NULL, NULL },
2300 /* 112 */ { 344, FNA(112), FNR(112), NULL, NULL },
2301 /* 113 */ { 344, FNA(113), FNR(113), NULL, NULL },
2302 /* 114 */ { 344, FNA(114), FNR(114), NULL, NULL },
2303 /* 115 */ { 3471, FNA(115), FNR(115), NULL, NULL },
2304 /* 116 */ { 3471, FNA(116), FNR(116), NULL, NULL },
2305 /* 117 */ { 3471, FNA(117), FNR(117), NULL, NULL },
2306 /* 118 */ { 3471, FNA(118), FNR(118), NULL, NULL },
2307 /* 119 */ { 3472, FNA(119), FNR(119), NULL, NULL },
2308 /* 120 */ { 3472, FNA(120), FNR(120), NULL, NULL },
2311 /*--- dissect_qsig_arg ------------------------------------------------------*/
2313 dissect_qsig_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 operation) {
2316 proto_item *ti, *ti_tmp;
2317 proto_tree *qsig_tree;
2320 ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, tvb_length(tvb), FALSE);
2321 qsig_tree = proto_item_add_subtree(ti, ett_qsig);
2323 proto_tree_add_uint(qsig_tree, hf_qsig_operation, tvb, 0, 0, operation);
2324 p = match_strval(operation, VALS(qsig_str_operation));
2326 proto_item_append_text(ti, ": %s", p);
2327 proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), " %s", p);
2329 if (operation >= array_length(qsig_tab)) return;
2330 if (qsig_tab[operation].service != NO_SRV) {
2331 ti_tmp = proto_tree_add_uint(qsig_tree, hf_qsig_service, tvb, 0, 0, qsig_tab[operation].service);
2332 p = match_strval(qsig_tab[operation].service, VALS(qsig_str_service_name));
2333 if (p) proto_item_append_text(ti_tmp, " - %s", p);
2335 if (qsig_tab[operation].arg_pdu)
2336 qsig_tab[operation].arg_pdu(tvb, pinfo, qsig_tree);
2338 if (tvb_length_remaining(tvb, offset) > 0)
2339 proto_tree_add_text(qsig_tree, tvb, offset, tvb_length_remaining(tvb, offset), "UNSUPPORTED ARGUMENT TYPE (QSIG)");
2342 /*--- dissect_qsig_res -------------------------------------------------------*/
2344 dissect_qsig_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 operation) {
2347 proto_item *ti, *ti_tmp;
2348 proto_tree *qsig_tree;
2351 ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, tvb_length(tvb), FALSE);
2352 qsig_tree = proto_item_add_subtree(ti, ett_qsig);
2354 proto_tree_add_uint(qsig_tree, hf_qsig_operation, tvb, 0, 0, operation);
2355 p = match_strval(operation, VALS(qsig_str_operation));
2357 proto_item_append_text(ti, ": %s", p);
2358 proto_item_append_text(proto_item_get_parent(proto_tree_get_parent(tree)), " %s", p);
2360 if (operation >= array_length(qsig_tab)) return;
2361 if (qsig_tab[operation].service != NO_SRV) {
2362 ti_tmp = proto_tree_add_uint(qsig_tree, hf_qsig_service, tvb, 0, 0, qsig_tab[operation].service);
2363 p = match_strval(qsig_tab[operation].service, VALS(qsig_str_service_name));
2364 if (p) proto_item_append_text(ti_tmp, " - %s", p);
2366 if (qsig_tab[operation].res_pdu)
2367 qsig_tab[operation].res_pdu(tvb, pinfo, qsig_tree);
2369 if (tvb_length_remaining(tvb, offset) > 0)
2370 proto_tree_add_text(qsig_tree, tvb, offset, tvb_length_remaining(tvb, offset), "UNSUPPORTED RESULT TYPE (QSIG)");
2373 /*--- dissect_qsig_transit_counter_ie ---------------------------------------*/
2375 dissect_qsig_transit_counter_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length _U_) {
2376 proto_tree_add_item(tree, hf_qsig_tc, tvb, offset, 1, FALSE);
2380 /*--- dissect_qsig_party_category_ie ----------------------------------------*/
2382 dissect_qsig_party_category_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length _U_) {
2383 proto_tree_add_item(tree, hf_qsig_pc, tvb, offset, 1, FALSE);
2388 /*--- dissect_qsig_ie -------------------------------------------------------*/
2390 dissect_qsig_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int codeset) {
2392 proto_item *ti, *ti_ie;
2393 proto_tree *ie_tree;
2394 guint8 ie_type, ie_len;
2398 ti = proto_tree_add_item_hidden(tree, proto_qsig, tvb, offset, -1, FALSE);
2400 ie_type = tvb_get_guint8(tvb, offset);
2401 ie_len = tvb_get_guint8(tvb, offset + 1);
2403 ti_ie = proto_tree_add_text(tree, tvb, offset, -1, "%s",
2404 val_to_str(ie_type, VALS(qsig_str_ie_type[codeset]), "unknown (0x%02X)"));
2405 ie_tree = proto_item_add_subtree(ti_ie, ett_qsig_ie);
2406 proto_tree_add_item(ie_tree, *hf_qsig_ie_type_arr[codeset], tvb, offset, 1, FALSE);
2407 proto_tree_add_item_hidden(ie_tree, hf_qsig_ie_type, tvb, offset, 1, FALSE);
2408 proto_tree_add_item(ie_tree, hf_qsig_ie_len, tvb, offset + 1, 1, FALSE);
2410 if (tvb_length_remaining(tvb, offset) <= 0)
2412 switch ((codeset << 8) | ie_type) {
2413 case CS4 | QSIG_IE_TRANSIT_COUNTER :
2414 dissect_qsig_transit_counter_ie(tvb, offset, pinfo, ie_tree, ie_len);
2416 case CS5 | QSIG_IE_PARTY_CATEGORY :
2417 dissect_qsig_party_category_ie(tvb, offset, pinfo, ie_tree, ie_len);
2421 if (tree) proto_tree_add_item(ie_tree, hf_qsig_ie_data, tvb, offset, ie_len, FALSE);
2425 /*--- dissect_qsig_ie_cs4 ---------------------------------------------------*/
2427 dissect_qsig_ie_cs4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2428 dissect_qsig_ie(tvb, pinfo, tree, 4);
2430 /*--- dissect_qsig_ie_cs5 ---------------------------------------------------*/
2432 dissect_qsig_ie_cs5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
2433 dissect_qsig_ie(tvb, pinfo, tree, 5);
2436 /*--- proto_register_qsig ---------------------------------------------------*/
2437 void proto_register_qsig(void) {
2439 /* List of fields */
2440 static hf_register_info hf[] = {
2441 { &hf_qsig_operation, { "Operation", "qsig.operation",
2442 FT_UINT8, BASE_DEC, VALS(qsig_str_operation), 0x0,
2443 "Operation", HFILL }},
2444 { &hf_qsig_service, { "Service", "qsig.service",
2445 FT_UINT8, BASE_DEC, VALS(qsig_str_service), 0x0,
2446 "Supplementary Service", HFILL }},
2447 { &hf_qsig_ie_type, { "Type", "qsig.ie.type",
2448 FT_UINT8, BASE_HEX, NULL, 0x0,
2449 "Information Element Type", HFILL }},
2450 { &hf_qsig_ie_type_cs4, { "Type", "qsig.ie.type.cs4",
2451 FT_UINT8, BASE_HEX, VALS(qsig_str_ie_type_cs4), 0x0,
2452 "Information Element Type (Codeset 4)", HFILL }},
2453 { &hf_qsig_ie_type_cs5, { "Type", "qsig.ie.type.cs5",
2454 FT_UINT8, BASE_HEX, VALS(qsig_str_ie_type_cs5), 0x0,
2455 "Information Element Type (Codeset 5)", HFILL }},
2456 { &hf_qsig_ie_len, { "Length", "qsig.ie.len",
2457 FT_UINT8, BASE_DEC, NULL, 0x0,
2458 "Information Element Length", HFILL }},
2459 { &hf_qsig_ie_data, { "Data", "qsig.ie.data",
2460 FT_BYTES, BASE_HEX, NULL, 0x0,
2462 { &hf_qsig_tc, { "Transit count", "qsig.tc",
2463 FT_UINT8, BASE_DEC, NULL, 0x1F,
2464 "Transit count", HFILL }},
2465 { &hf_qsig_pc, { "Party category", "qsig.pc",
2466 FT_UINT8, BASE_HEX, VALS(qsig_str_pc), 0x07,
2467 "Party category", HFILL }},
2469 /*--- Included file: packet-qsig-hfarr.c ---*/
2470 #line 1 "packet-qsig-hfarr.c"
2471 { &hf_qsig_NameArg_PDU,
2472 { "NameArg", "qsig.NameArg",
2473 FT_UINT32, BASE_DEC, VALS(qsig_NameArg_vals), 0,
2474 "qsig.NameArg", HFILL }},
2475 { &hf_qsig_ActivateDivArg_PDU,
2476 { "ActivateDivArg", "qsig.ActivateDivArg",
2477 FT_NONE, BASE_NONE, NULL, 0,
2478 "qsig.ActivateDivArg", HFILL }},
2479 { &hf_qsig_ActivateDivRes_PDU,
2480 { "ActivateDivRes", "qsig.ActivateDivRes",
2481 FT_UINT32, BASE_DEC, VALS(qsig_ActivateDivRes_vals), 0,
2482 "qsig.ActivateDivRes", HFILL }},
2483 { &hf_qsig_DeactivateDivArg_PDU,
2484 { "DeactivateDivArg", "qsig.DeactivateDivArg",
2485 FT_NONE, BASE_NONE, NULL, 0,
2486 "qsig.DeactivateDivArg", HFILL }},
2487 { &hf_qsig_DeactivateDivRes_PDU,
2488 { "DeactivateDivRes", "qsig.DeactivateDivRes",
2489 FT_UINT32, BASE_DEC, VALS(qsig_DeactivateDivRes_vals), 0,
2490 "qsig.DeactivateDivRes", HFILL }},
2491 { &hf_qsig_InterrDivArg_PDU,
2492 { "InterrDivArg", "qsig.InterrDivArg",
2493 FT_NONE, BASE_NONE, NULL, 0,
2494 "qsig.InterrDivArg", HFILL }},
2495 { &hf_qsig_ChkResArg_PDU,
2496 { "ChkResArg", "qsig.ChkResArg",
2497 FT_NONE, BASE_NONE, NULL, 0,
2498 "qsig.ChkResArg", HFILL }},
2499 { &hf_qsig_ChkResRes_PDU,
2500 { "ChkResRes", "qsig.ChkResRes",
2501 FT_UINT32, BASE_DEC, VALS(qsig_ChkResRes_vals), 0,
2502 "qsig.ChkResRes", HFILL }},
2503 { &hf_qsig_CallRrArg_PDU,
2504 { "CallRrArg", "qsig.CallRrArg",
2505 FT_NONE, BASE_NONE, NULL, 0,
2506 "qsig.CallRrArg", HFILL }},
2507 { &hf_qsig_CallRrRes_PDU,
2508 { "CallRrRes", "qsig.CallRrRes",
2509 FT_UINT32, BASE_DEC, VALS(qsig_CallRrRes_vals), 0,
2510 "qsig.CallRrRes", HFILL }},
2511 { &hf_qsig_DivLegInf1Arg_PDU,
2512 { "DivLegInf1Arg", "qsig.DivLegInf1Arg",
2513 FT_NONE, BASE_NONE, NULL, 0,
2514 "qsig.DivLegInf1Arg", HFILL }},
2515 { &hf_qsig_DivLegInf2Arg_PDU,
2516 { "DivLegInf2Arg", "qsig.DivLegInf2Arg",
2517 FT_NONE, BASE_NONE, NULL, 0,
2518 "qsig.DivLegInf2Arg", HFILL }},
2519 { &hf_qsig_DivLegInf3Arg_PDU,
2520 { "DivLegInf3Arg", "qsig.DivLegInf3Arg",
2521 FT_NONE, BASE_NONE, NULL, 0,
2522 "qsig.DivLegInf3Arg", HFILL }},
2523 { &hf_qsig_DivLegFailArg_PDU,
2524 { "DivLegFailArg", "qsig.DivLegFailArg",
2525 FT_UINT32, BASE_DEC, VALS(qsig_DivLegFailArg_vals), 0,
2526 "qsig.DivLegFailArg", HFILL }},
2527 { &hf_qsig_IntResultList_PDU,
2528 { "IntResultList", "qsig.IntResultList",
2529 FT_UINT32, BASE_DEC, NULL, 0,
2530 "qsig.IntResultList", HFILL }},
2531 { &hf_qsig_extensionId,
2532 { "extensionId", "qsig.extensionId",
2533 FT_OID, BASE_NONE, NULL, 0,
2534 "qsig.OBJECT_IDENTIFIER", HFILL }},
2535 { &hf_qsig_extensionArgument,
2536 { "extensionArgument", "qsig.extensionArgument",
2537 FT_NONE, BASE_NONE, NULL, 0,
2538 "qsig.T_extensionArgument", HFILL }},
2539 { &hf_qsig_presentationAllowedAddressS,
2540 { "presentationAllowedAddressS", "qsig.presentationAllowedAddressS",
2541 FT_NONE, BASE_NONE, NULL, 0,
2542 "qsig.AddressScreened", HFILL }},
2543 { &hf_qsig_presentationRestricted,
2544 { "presentationRestricted", "qsig.presentationRestricted",
2545 FT_NONE, BASE_NONE, NULL, 0,
2546 "qsig.NULL", HFILL }},
2547 { &hf_qsig_numberNotAvailableDueToInterworking,
2548 { "numberNotAvailableDueToInterworking", "qsig.numberNotAvailableDueToInterworking",
2549 FT_NONE, BASE_NONE, NULL, 0,
2550 "qsig.NULL", HFILL }},
2551 { &hf_qsig_presentationRestrictedAddressS,
2552 { "presentationRestrictedAddressS", "qsig.presentationRestrictedAddressS",
2553 FT_NONE, BASE_NONE, NULL, 0,
2554 "qsig.AddressScreened", HFILL }},
2555 { &hf_qsig_presentationAllowedAddressU,
2556 { "presentationAllowedAddressU", "qsig.presentationAllowedAddressU",
2557 FT_NONE, BASE_NONE, NULL, 0,
2558 "qsig.Address", HFILL }},
2559 { &hf_qsig_presentationRestrictedAddressU,
2560 { "presentationRestrictedAddressU", "qsig.presentationRestrictedAddressU",
2561 FT_NONE, BASE_NONE, NULL, 0,
2562 "qsig.Address", HFILL }},
2563 { &hf_qsig_presentationAllowedAddressNS,
2564 { "presentationAllowedAddressNS", "qsig.presentationAllowedAddressNS",
2565 FT_NONE, BASE_NONE, NULL, 0,
2566 "qsig.NumberScreened", HFILL }},
2567 { &hf_qsig_presentationRestrictedAddressNS,
2568 { "presentationRestrictedAddressNS", "qsig.presentationRestrictedAddressNS",
2569 FT_NONE, BASE_NONE, NULL, 0,
2570 "qsig.NumberScreened", HFILL }},
2571 { &hf_qsig_presentationAllowedAddressNU,
2572 { "presentationAllowedAddressNU", "qsig.presentationAllowedAddressNU",
2573 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2574 "qsig.PartyNumber", HFILL }},
2575 { &hf_qsig_presentationRestrictedAddressNU,
2576 { "presentationRestrictedAddressNU", "qsig.presentationRestrictedAddressNU",
2577 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2578 "qsig.PartyNumber", HFILL }},
2579 { &hf_qsig_partyNumber,
2580 { "partyNumber", "qsig.partyNumber",
2581 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2582 "qsig.PartyNumber", HFILL }},
2583 { &hf_qsig_screeningIndicator,
2584 { "screeningIndicator", "qsig.screeningIndicator",
2585 FT_UINT32, BASE_DEC, VALS(qsig_ScreeningIndicator_vals), 0,
2586 "qsig.ScreeningIndicator", HFILL }},
2587 { &hf_qsig_partySubaddress,
2588 { "partySubaddress", "qsig.partySubaddress",
2589 FT_UINT32, BASE_DEC, VALS(qsig_PartySubaddress_vals), 0,
2590 "qsig.PartySubaddress", HFILL }},
2591 { &hf_qsig_unknownPartyNumber,
2592 { "unknownPartyNumber", "qsig.unknownPartyNumber",
2593 FT_STRING, BASE_NONE, NULL, 0,
2594 "qsig.NumberDigits", HFILL }},
2595 { &hf_qsig_publicPartyNumber,
2596 { "publicPartyNumber", "qsig.publicPartyNumber",
2597 FT_NONE, BASE_NONE, NULL, 0,
2598 "qsig.PublicPartyNumber", HFILL }},
2599 { &hf_qsig_dataPartyNumber,
2600 { "dataPartyNumber", "qsig.dataPartyNumber",
2601 FT_STRING, BASE_NONE, NULL, 0,
2602 "qsig.NumberDigits", HFILL }},
2603 { &hf_qsig_telexPartyNumber,
2604 { "telexPartyNumber", "qsig.telexPartyNumber",
2605 FT_STRING, BASE_NONE, NULL, 0,
2606 "qsig.NumberDigits", HFILL }},
2607 { &hf_qsig_privatePartyNumber,
2608 { "privatePartyNumber", "qsig.privatePartyNumber",
2609 FT_NONE, BASE_NONE, NULL, 0,
2610 "qsig.PrivatePartyNumber", HFILL }},
2611 { &hf_qsig_nationalStandardPartyNumber,
2612 { "nationalStandardPartyNumber", "qsig.nationalStandardPartyNumber",
2613 FT_STRING, BASE_NONE, NULL, 0,
2614 "qsig.NumberDigits", HFILL }},
2615 { &hf_qsig_publicTypeOfNumber,
2616 { "publicTypeOfNumber", "qsig.publicTypeOfNumber",
2617 FT_UINT32, BASE_DEC, VALS(qsig_PublicTypeOfNumber_vals), 0,
2618 "qsig.PublicTypeOfNumber", HFILL }},
2619 { &hf_qsig_publicNumberDigits,
2620 { "publicNumberDigits", "qsig.publicNumberDigits",
2621 FT_STRING, BASE_NONE, NULL, 0,
2622 "qsig.NumberDigits", HFILL }},
2623 { &hf_qsig_privateTypeOfNumber,
2624 { "privateTypeOfNumber", "qsig.privateTypeOfNumber",
2625 FT_UINT32, BASE_DEC, VALS(qsig_PrivateTypeOfNumber_vals), 0,
2626 "qsig.PrivateTypeOfNumber", HFILL }},
2627 { &hf_qsig_privateNumberDigits,
2628 { "privateNumberDigits", "qsig.privateNumberDigits",
2629 FT_STRING, BASE_NONE, NULL, 0,
2630 "qsig.NumberDigits", HFILL }},
2631 { &hf_qsig_userSpecifiedSubaddress,
2632 { "userSpecifiedSubaddress", "qsig.userSpecifiedSubaddress",
2633 FT_NONE, BASE_NONE, NULL, 0,
2634 "qsig.UserSpecifiedSubaddress", HFILL }},
2635 { &hf_qsig_nSAPSubaddress,
2636 { "nSAPSubaddress", "qsig.nSAPSubaddress",
2637 FT_BYTES, BASE_HEX, NULL, 0,
2638 "qsig.NSAPSubaddress", HFILL }},
2639 { &hf_qsig_subaddressInformation,
2640 { "subaddressInformation", "qsig.subaddressInformation",
2641 FT_BYTES, BASE_HEX, NULL, 0,
2642 "qsig.SubaddressInformation", HFILL }},
2643 { &hf_qsig_oddCountIndicator,
2644 { "oddCountIndicator", "qsig.oddCountIndicator",
2645 FT_BOOLEAN, 8, NULL, 0,
2646 "qsig.BOOLEAN", HFILL }},
2648 { "name", "qsig.name",
2649 FT_UINT32, BASE_DEC, VALS(qsig_Name_vals), 0,
2650 "qsig.Name", HFILL }},
2651 { &hf_qsig_nameSequence,
2652 { "nameSequence", "qsig.nameSequence",
2653 FT_NONE, BASE_NONE, NULL, 0,
2654 "qsig.T_nameSequence", HFILL }},
2655 { &hf_qsig_extensionNA,
2656 { "extension", "qsig.extension",
2657 FT_UINT32, BASE_DEC, VALS(qsig_NameExtension_vals), 0,
2658 "qsig.NameExtension", HFILL }},
2660 { "single", "qsig.single",
2661 FT_NONE, BASE_NONE, NULL, 0,
2662 "qsig.Extension", HFILL }},
2663 { &hf_qsig_multiple,
2664 { "multiple", "qsig.multiple",
2665 FT_UINT32, BASE_DEC, NULL, 0,
2666 "qsig.SEQUENCE_OF_Extension", HFILL }},
2667 { &hf_qsig_multiple_item,
2668 { "Item", "qsig.multiple_item",
2669 FT_NONE, BASE_NONE, NULL, 0,
2670 "qsig.Extension", HFILL }},
2671 { &hf_qsig_namePresentationAllowed,
2672 { "namePresentationAllowed", "qsig.namePresentationAllowed",
2673 FT_UINT32, BASE_DEC, VALS(qsig_NamePresentationAllowed_vals), 0,
2674 "qsig.NamePresentationAllowed", HFILL }},
2675 { &hf_qsig_namePresentationRestricted,
2676 { "namePresentationRestricted", "qsig.namePresentationRestricted",
2677 FT_UINT32, BASE_DEC, VALS(qsig_NamePresentationRestricted_vals), 0,
2678 "qsig.NamePresentationRestricted", HFILL }},
2679 { &hf_qsig_nameNotAvailable,
2680 { "nameNotAvailable", "qsig.nameNotAvailable",
2681 FT_NONE, BASE_NONE, NULL, 0,
2682 "qsig.NameNotAvailable", HFILL }},
2683 { &hf_qsig_namePresentationAllowedSimple,
2684 { "namePresentationAllowedSimple", "qsig.namePresentationAllowedSimple",
2685 FT_STRING, BASE_NONE, NULL, 0,
2686 "qsig.NameData", HFILL }},
2687 { &hf_qsig_namePresentationAllowedExtended,
2688 { "namePresentationAllowedExtended", "qsig.namePresentationAllowedExtended",
2689 FT_NONE, BASE_NONE, NULL, 0,
2690 "qsig.NameSet", HFILL }},
2691 { &hf_qsig_namePresentationRestrictedSimple,
2692 { "namePresentationRestrictedSimple", "qsig.namePresentationRestrictedSimple",
2693 FT_STRING, BASE_NONE, NULL, 0,
2694 "qsig.NameData", HFILL }},
2695 { &hf_qsig_namePresentationRestrictedExtended,
2696 { "namePresentationRestrictedExtended", "qsig.namePresentationRestrictedExtended",
2697 FT_NONE, BASE_NONE, NULL, 0,
2698 "qsig.NameSet", HFILL }},
2699 { &hf_qsig_namePresentationRestrictedNull,
2700 { "namePresentationRestrictedNull", "qsig.namePresentationRestrictedNull",
2701 FT_NONE, BASE_NONE, NULL, 0,
2702 "qsig.NULL", HFILL }},
2703 { &hf_qsig_nameData,
2704 { "nameData", "qsig.nameData",
2705 FT_STRING, BASE_NONE, NULL, 0,
2706 "qsig.NameData", HFILL }},
2707 { &hf_qsig_characterSet,
2708 { "characterSet", "qsig.characterSet",
2709 FT_UINT32, BASE_DEC, VALS(qsig_CharacterSet_vals), 0,
2710 "qsig.CharacterSet", HFILL }},
2711 { &hf_qsig_procedure,
2712 { "procedure", "qsig.procedure",
2713 FT_UINT32, BASE_DEC, VALS(qsig_Procedure_vals), 0,
2714 "qsig.Procedure", HFILL }},
2715 { &hf_qsig_basicService,
2716 { "basicService", "qsig.basicService",
2717 FT_UINT32, BASE_DEC, VALS(qsig_BasicService_vals), 0,
2718 "qsig.BasicService", HFILL }},
2719 { &hf_qsig_divertedToAddress,
2720 { "divertedToAddress", "qsig.divertedToAddress",
2721 FT_NONE, BASE_NONE, NULL, 0,
2722 "qsig.Address", HFILL }},
2723 { &hf_qsig_servedUserNr,
2724 { "servedUserNr", "qsig.servedUserNr",
2725 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2726 "qsig.PartyNumber", HFILL }},
2727 { &hf_qsig_activatingUserNr,
2728 { "activatingUserNr", "qsig.activatingUserNr",
2729 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2730 "qsig.PartyNumber", HFILL }},
2731 { &hf_qsig_extensionAD,
2732 { "extension", "qsig.extension",
2733 FT_UINT32, BASE_DEC, VALS(qsig_ADExtension_vals), 0,
2734 "qsig.ADExtension", HFILL }},
2736 { "null", "qsig.null",
2737 FT_NONE, BASE_NONE, NULL, 0,
2738 "qsig.NULL", HFILL }},
2739 { &hf_qsig_deactivatingUserNr,
2740 { "deactivatingUserNr", "qsig.deactivatingUserNr",
2741 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2742 "qsig.PartyNumber", HFILL }},
2743 { &hf_qsig_extensionDD,
2744 { "extension", "qsig.extension",
2745 FT_UINT32, BASE_DEC, VALS(qsig_DDExtension_vals), 0,
2746 "qsig.DDExtension", HFILL }},
2747 { &hf_qsig_interrogatingUserNr,
2748 { "interrogatingUserNr", "qsig.interrogatingUserNr",
2749 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2750 "qsig.PartyNumber", HFILL }},
2751 { &hf_qsig_extensionID,
2752 { "extension", "qsig.extension",
2753 FT_UINT32, BASE_DEC, VALS(qsig_IDExtension_vals), 0,
2754 "qsig.IDExtension", HFILL }},
2755 { &hf_qsig_divertedToNr,
2756 { "divertedToNr", "qsig.divertedToNr",
2757 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2758 "qsig.PartyNumber", HFILL }},
2759 { &hf_qsig_extensionCHR,
2760 { "extension", "qsig.extension",
2761 FT_UINT32, BASE_DEC, VALS(qsig_CHRExtension_vals), 0,
2762 "qsig.CHRExtension", HFILL }},
2763 { &hf_qsig_rerouteingReason,
2764 { "rerouteingReason", "qsig.rerouteingReason",
2765 FT_UINT32, BASE_DEC, VALS(qsig_DiversionReason_vals), 0,
2766 "qsig.DiversionReason", HFILL }},
2767 { &hf_qsig_originalRerouteingReason,
2768 { "originalRerouteingReason", "qsig.originalRerouteingReason",
2769 FT_UINT32, BASE_DEC, VALS(qsig_DiversionReason_vals), 0,
2770 "qsig.DiversionReason", HFILL }},
2771 { &hf_qsig_calledAddress,
2772 { "calledAddress", "qsig.calledAddress",
2773 FT_NONE, BASE_NONE, NULL, 0,
2774 "qsig.Address", HFILL }},
2775 { &hf_qsig_diversionCounter,
2776 { "diversionCounter", "qsig.diversionCounter",
2777 FT_UINT32, BASE_DEC, NULL, 0,
2778 "qsig.INTEGER_1_15", HFILL }},
2779 { &hf_qsig_pSS1InfoElement,
2780 { "pSS1InfoElement", "qsig.pSS1InfoElement",
2781 FT_BYTES, BASE_HEX, NULL, 0,
2782 "qsig.PSS1InformationElement", HFILL }},
2783 { &hf_qsig_lastRerouteingNr,
2784 { "lastRerouteingNr", "qsig.lastRerouteingNr",
2785 FT_UINT32, BASE_DEC, VALS(qsig_PresentedNumberUnscreened_vals), 0,
2786 "qsig.PresentedNumberUnscreened", HFILL }},
2787 { &hf_qsig_subscriptionOption,
2788 { "subscriptionOption", "qsig.subscriptionOption",
2789 FT_UINT32, BASE_DEC, VALS(qsig_SubscriptionOption_vals), 0,
2790 "qsig.SubscriptionOption", HFILL }},
2791 { &hf_qsig_callingPartySubaddress,
2792 { "callingPartySubaddress", "qsig.callingPartySubaddress",
2793 FT_UINT32, BASE_DEC, VALS(qsig_PartySubaddress_vals), 0,
2794 "qsig.PartySubaddress", HFILL }},
2795 { &hf_qsig_callingNumber,
2796 { "callingNumber", "qsig.callingNumber",
2797 FT_UINT32, BASE_DEC, VALS(qsig_PresentedNumberScreened_vals), 0,
2798 "qsig.PresentedNumberScreened", HFILL }},
2799 { &hf_qsig_callingName,
2800 { "callingName", "qsig.callingName",
2801 FT_UINT32, BASE_DEC, VALS(qsig_Name_vals), 0,
2802 "qsig.Name", HFILL }},
2803 { &hf_qsig_originalCalledNr,
2804 { "originalCalledNr", "qsig.originalCalledNr",
2805 FT_UINT32, BASE_DEC, VALS(qsig_PresentedNumberUnscreened_vals), 0,
2806 "qsig.PresentedNumberUnscreened", HFILL }},
2807 { &hf_qsig_redirectingName,
2808 { "redirectingName", "qsig.redirectingName",
2809 FT_UINT32, BASE_DEC, VALS(qsig_Name_vals), 0,
2810 "qsig.Name", HFILL }},
2811 { &hf_qsig_originalCalledName,
2812 { "originalCalledName", "qsig.originalCalledName",
2813 FT_UINT32, BASE_DEC, VALS(qsig_Name_vals), 0,
2814 "qsig.Name", HFILL }},
2815 { &hf_qsig_extensionCRR,
2816 { "extension", "qsig.extension",
2817 FT_UINT32, BASE_DEC, VALS(qsig_CRRExtension_vals), 0,
2818 "qsig.CRRExtension", HFILL }},
2819 { &hf_qsig_diversionReason,
2820 { "diversionReason", "qsig.diversionReason",
2821 FT_UINT32, BASE_DEC, VALS(qsig_DiversionReason_vals), 0,
2822 "qsig.DiversionReason", HFILL }},
2823 { &hf_qsig_nominatedNr,
2824 { "nominatedNr", "qsig.nominatedNr",
2825 FT_UINT32, BASE_DEC, VALS(qsig_PartyNumber_vals), 0,
2826 "qsig.PartyNumber", HFILL }},
2827 { &hf_qsig_extensionDLI1,
2828 { "extension", "qsig.extension",
2829 FT_UINT32, BASE_DEC, VALS(qsig_DLI1Extension_vals), 0,
2830 "qsig.DLI1Extension", HFILL }},
2831 { &hf_qsig_originalDiversionReason,
2832 { "originalDiversionReason", "qsig.originalDiversionReason",
2833 FT_UINT32, BASE_DEC, VALS(qsig_DiversionReason_vals), 0,
2834 "qsig.DiversionReason", HFILL }},
2835 { &hf_qsig_divertingNr,
2836 { "divertingNr", "qsig.divertingNr",
2837 FT_UINT32, BASE_DEC, VALS(qsig_PresentedNumberUnscreened_vals), 0,
2838 "qsig.PresentedNumberUnscreened", HFILL }},
2839 { &hf_qsig_extensionDLI2,
2840 { "extension", "qsig.extension",
2841 FT_UINT32, BASE_DEC, VALS(qsig_DLI2Extension_vals), 0,
2842 "qsig.DLI2Extension", HFILL }},
2843 { &hf_qsig_presentationAllowedIndicator,
2844 { "presentationAllowedIndicator", "qsig.presentationAllowedIndicator",
2845 FT_BOOLEAN, 8, NULL, 0,
2846 "qsig.PresentationAllowedIndicator", HFILL }},
2847 { &hf_qsig_redirectionName,
2848 { "redirectionName", "qsig.redirectionName",
2849 FT_UINT32, BASE_DEC, VALS(qsig_Name_vals), 0,
2850 "qsig.Name", HFILL }},
2851 { &hf_qsig_extensionDLI3,
2852 { "extension", "qsig.extension",
2853 FT_UINT32, BASE_DEC, VALS(qsig_DLI3Extension_vals), 0,
2854 "qsig.DLI3Extension", HFILL }},
2855 { &hf_qsig_IntResultList_item,
2856 { "Item", "qsig.IntResultList_item",
2857 FT_NONE, BASE_NONE, NULL, 0,
2858 "qsig.IntResult", HFILL }},
2859 { &hf_qsig_remoteEnabled,
2860 { "remoteEnabled", "qsig.remoteEnabled",
2861 FT_BOOLEAN, 8, NULL, 0,
2862 "qsig.BOOLEAN", HFILL }},
2863 { &hf_qsig_extensionIR,
2864 { "extension", "qsig.extension",
2865 FT_UINT32, BASE_DEC, VALS(qsig_IRExtension_vals), 0,
2866 "qsig.IRExtension", HFILL }},
2868 /*--- End of included file: packet-qsig-hfarr.c ---*/
2869 #line 767 "packet-qsig-template.c"
2872 /* List of subtrees */
2873 static gint *ett[] = {
2877 /*--- Included file: packet-qsig-ettarr.c ---*/
2878 #line 1 "packet-qsig-ettarr.c"
2879 &ett_qsig_Extension,
2880 &ett_qsig_PresentedAddressScreened,
2881 &ett_qsig_PresentedAddressUnscreened,
2882 &ett_qsig_PresentedNumberScreened,
2883 &ett_qsig_PresentedNumberUnscreened,
2884 &ett_qsig_AddressScreened,
2885 &ett_qsig_NumberScreened,
2887 &ett_qsig_PartyNumber,
2888 &ett_qsig_PublicPartyNumber,
2889 &ett_qsig_PrivatePartyNumber,
2890 &ett_qsig_PartySubaddress,
2891 &ett_qsig_UserSpecifiedSubaddress,
2893 &ett_qsig_T_nameSequence,
2894 &ett_qsig_NameExtension,
2895 &ett_qsig_SEQUENCE_OF_Extension,
2897 &ett_qsig_NamePresentationAllowed,
2898 &ett_qsig_NamePresentationRestricted,
2900 &ett_qsig_ActivateDivArg,
2901 &ett_qsig_ADExtension,
2902 &ett_qsig_ActivateDivRes,
2903 &ett_qsig_DeactivateDivArg,
2904 &ett_qsig_DDExtension,
2905 &ett_qsig_DeactivateDivRes,
2906 &ett_qsig_InterrDivArg,
2907 &ett_qsig_IDExtension,
2908 &ett_qsig_ChkResArg,
2909 &ett_qsig_CHRExtension,
2910 &ett_qsig_ChkResRes,
2911 &ett_qsig_CallRrArg,
2912 &ett_qsig_CRRExtension,
2913 &ett_qsig_CallRrRes,
2914 &ett_qsig_DivLegInf1Arg,
2915 &ett_qsig_DLI1Extension,
2916 &ett_qsig_DivLegInf2Arg,
2917 &ett_qsig_DLI2Extension,
2918 &ett_qsig_DivLegInf3Arg,
2919 &ett_qsig_DLI3Extension,
2920 &ett_qsig_DivLegFailArg,
2921 &ett_qsig_IntResultList,
2922 &ett_qsig_IntResult,
2923 &ett_qsig_IRExtension,
2925 /*--- End of included file: packet-qsig-ettarr.c ---*/
2926 #line 774 "packet-qsig-template.c"
2929 /* Register protocol and dissector */
2930 proto_qsig = proto_register_protocol(PNAME, PSNAME, PFNAME);
2932 /* Register fields and subtrees */
2933 proto_register_field_array(proto_qsig, hf, array_length(hf));
2934 proto_register_subtree_array(ett, array_length(ett));
2939 /*--- proto_reg_handoff_qsig ------------------------------------------------*/
2940 void proto_reg_handoff_qsig(void) {
2942 dissector_handle_t qsig_op_handle;
2943 dissector_handle_t qsig_ie_handle;
2945 data_handle = find_dissector("data");
2947 if (find_dissector_table("q932.ros.local.arg")) {
2948 for (op=0; op<array_length(qsig_tab); op++) {
2949 if (qsig_tab[op].arg_dissector) {
2950 qsig_op_handle = create_dissector_handle(qsig_tab[op].arg_dissector, proto_qsig);
2951 dissector_add("q932.ros.local.arg", op, qsig_op_handle);
2953 if (qsig_tab[op].res_dissector) {
2954 qsig_op_handle = create_dissector_handle(qsig_tab[op].res_dissector, proto_qsig);
2955 dissector_add("q932.ros.local.res", op, qsig_op_handle);
2960 qsig_ie_handle = create_dissector_handle(dissect_qsig_ie_cs4, proto_qsig);
2961 /* QSIG-TC - Transit counter */
2962 dissector_add("q931.ie", CS4 | QSIG_IE_TRANSIT_COUNTER, qsig_ie_handle);
2964 qsig_ie_handle = create_dissector_handle(dissect_qsig_ie_cs5, proto_qsig);
2965 /* SSIG-BC - Party category */
2966 dissector_add("q931.ie", CS5 | QSIG_IE_PARTY_CATEGORY, qsig_ie_handle);
2970 /*---------------------------------------------------------------------------*/