1 /*
2 * libpri: An implementation of Primary Rate ISDN
3 *
4 * Copyright (C) 2009 Digium, Inc.
5 *
6 * Richard Mudgett <rmudgett@digium.com>
7 *
8 * See http://www.asterisk.org for more information about
9 * the Asterisk project. Please do not directly contact
10 * any of the maintainers of this project for assistance;
11 * the project provides a web site, mailing lists and IRC
12 * channels for your use.
13 *
14 * This program is free software, distributed under the terms of
15 * the GNU General Public License Version 2 as published by the
16 * Free Software Foundation. See the LICENSE file included with
17 * this program for more details.
18 *
19 * In addition, when this program is distributed with Asterisk in
20 * any form that would qualify as a 'combined work' or as a
21 * 'derivative work' (but not mere aggregation), you can redistribute
22 * and/or modify the combination under the terms of the license
23 * provided with that copy of Asterisk, instead of the license
24 * terms granted here.
25 */
26
27 /*!
28 * \file
29 * \brief ROSE encode/decode test program
30 *
31 * \author Richard Mudgett <rmudgett@digium.com>
32 */
33
34
35 #include "compat.h"
36 #include "libpri.h"
37 #include "pri_internal.h"
38 #include "rose.h"
39
40 #include <stdio.h>
41 #include <stdlib.h>
42
43
44 /* ------------------------------------------------------------------- */
45
46
47 static const struct fac_extension_header fac_headers[] = {
48 /* *INDENT-OFF* */
49 {
50 .nfe_present = 0,
51 },
52 {
53 .nfe_present = 1,
54 .nfe.source_entity = 1,
55 .nfe.destination_entity = 1,
56 },
57 {
58 .nfe_present = 1,
59 .nfe.source_entity = 1,
60 .nfe.source_number.plan = 4,
61 .nfe.source_number.length = 4,
62 .nfe.source_number.str = "9834",
63 .nfe.destination_entity = 1,
64 .nfe.destination_number.plan = 4,
65 .nfe.destination_number.length = 4,
66 .nfe.destination_number.str = "9834",
67 },
68 {
69 .nfe_present = 1,
70 .nfe.source_entity = 1,
71 .nfe.destination_entity = 1,
72 .npp_present = 1,
73 .npp = 19,
74 .interpretation_present = 1,
75 .interpretation = 2,
76 },
77 /* *INDENT-ON* */
78 };
79
80
81 static const struct rose_message rose_etsi_msgs[] = {
82 /* *INDENT-OFF* */
83 /* Error messages */
84 {
85 .type = ROSE_COMP_TYPE_ERROR,
86 .component.error.invoke_id = 82,
87 .component.error.code = ROSE_ERROR_Div_SpecialServiceNr,
88 },
89 {
90 .type = ROSE_COMP_TYPE_ERROR,
91 .component.error.invoke_id = 8,
92 .component.error.code = ROSE_ERROR_ECT_LinkIdNotAssignedByNetwork,
93 },
94
95 /* Reject messages */
96 {
97 .type = ROSE_COMP_TYPE_REJECT,
98 .component.reject.code = ROSE_REJECT_Gen_BadlyStructuredComponent,
99 },
100 {
101 .type = ROSE_COMP_TYPE_REJECT,
102 .component.reject.invoke_id_present = 1,
103 .component.reject.invoke_id = 10,
104 .component.reject.code = ROSE_REJECT_Inv_InitiatorReleasing,
105 },
106 {
107 .type = ROSE_COMP_TYPE_REJECT,
108 .component.reject.invoke_id_present = 1,
109 .component.reject.invoke_id = 11,
110 .component.reject.code = ROSE_REJECT_Res_MistypedResult,
111 },
112 {
113 .type = ROSE_COMP_TYPE_REJECT,
114 .component.reject.invoke_id_present = 1,
115 .component.reject.invoke_id = 12,
116 .component.reject.code = ROSE_REJECT_Err_ErrorResponseUnexpected,
117 },
118
119 /* Anonymous result or result without any arguments. */
120 {
121 .type = ROSE_COMP_TYPE_RESULT,
122 .component.result.operation = ROSE_None,
123 .component.result.invoke_id = 9,
124 },
125
126 /* Advice Of Charge (AOC) */
127 {
128 .type = ROSE_COMP_TYPE_INVOKE,
129 .component.invoke.operation = ROSE_ETSI_ChargingRequest,
130 .component.invoke.invoke_id = 98,
131 .component.invoke.args.etsi.ChargingRequest.charging_case = 2,
132 },
133 {
134 .type = ROSE_COMP_TYPE_RESULT,
135 .component.result.operation = ROSE_ETSI_ChargingRequest,
136 .component.result.invoke_id = 99,
137 .component.result.args.etsi.ChargingRequest.type = 0,
138 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
139 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
140 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 0,
141 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.special_charging_code = 3,
142 },
143 {
144 .type = ROSE_COMP_TYPE_RESULT,
145 .component.result.operation = ROSE_ETSI_ChargingRequest,
146 .component.result.invoke_id = 100,
147 .component.result.args.etsi.ChargingRequest.type = 0,
148 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
149 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
150 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 1,
151 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.currency = "Dollars",
152 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.amount.currency = 7,
153 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.amount.multiplier = 1,
154 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.charging_type = 1,
155 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.time.length = 8,
156 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.time.scale = 4,
157 },
158 {
159 .type = ROSE_COMP_TYPE_RESULT,
160 .component.result.operation = ROSE_ETSI_ChargingRequest,
161 .component.result.invoke_id = 101,
162 .component.result.args.etsi.ChargingRequest.type = 0,
163 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
164 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
165 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 1,
166 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.currency = "Dollars",
167 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.amount.currency = 7,
168 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.amount.multiplier = 1,
169 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.charging_type = 1,
170 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.time.length = 8,
171 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.time.scale = 4,
172 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.granularity_present = 1,
173 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.granularity.length = 20,
174 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.duration.granularity.scale = 3,
175 },
176 {
177 .type = ROSE_COMP_TYPE_RESULT,
178 .component.result.operation = ROSE_ETSI_ChargingRequest,
179 .component.result.invoke_id = 102,
180 .component.result.args.etsi.ChargingRequest.type = 0,
181 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
182 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
183 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 2,
184 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.currency = "Euros",
185 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.amount.currency = 4,
186 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
187 },
188 {
189 .type = ROSE_COMP_TYPE_RESULT,
190 .component.result.operation = ROSE_ETSI_ChargingRequest,
191 .component.result.invoke_id = 103,
192 .component.result.args.etsi.ChargingRequest.type = 0,
193 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
194 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
195 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 3,
196 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.volume_rate.currency = "Yen",
197 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.volume_rate.amount.currency = 300,
198 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.volume_rate.amount.multiplier = 5,
199 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.volume_rate.unit = 2,
200 },
201 {
202 .type = ROSE_COMP_TYPE_RESULT,
203 .component.result.operation = ROSE_ETSI_ChargingRequest,
204 .component.result.invoke_id = 104,
205 .component.result.args.etsi.ChargingRequest.type = 0,
206 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 2,
207 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
208 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 2,
209 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.currency = "Euros",
210 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.amount.currency = 4,
211 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
212 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].charged_item = 4,
213 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].currency_type = 3,
214 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].u.volume_rate.currency = "Yen",
215 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].u.volume_rate.amount.currency = 300,
216 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].u.volume_rate.amount.multiplier = 5,
217 .component.result.args.etsi.ChargingRequest.u.currency_info.list[1].u.volume_rate.unit = 2,
218 },
219 {
220 .type = ROSE_COMP_TYPE_RESULT,
221 .component.result.operation = ROSE_ETSI_ChargingRequest,
222 .component.result.invoke_id = 105,
223 .component.result.args.etsi.ChargingRequest.type = 0,
224 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
225 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
226 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 4,
227 },
228 {
229 .type = ROSE_COMP_TYPE_RESULT,
230 .component.result.operation = ROSE_ETSI_ChargingRequest,
231 .component.result.invoke_id = 106,
232 .component.result.args.etsi.ChargingRequest.type = 0,
233 .component.result.args.etsi.ChargingRequest.u.currency_info.num_records = 1,
234 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].charged_item = 4,
235 .component.result.args.etsi.ChargingRequest.u.currency_info.list[0].currency_type = 5,
236 },
237
238 {
239 .type = ROSE_COMP_TYPE_INVOKE,
240 .component.invoke.operation = ROSE_ETSI_AOCSCurrency,
241 .component.invoke.invoke_id = 107,
242 .component.invoke.args.etsi.AOCSCurrency.type = 0,
243 },
244 {
245 .type = ROSE_COMP_TYPE_INVOKE,
246 .component.invoke.operation = ROSE_ETSI_AOCSCurrency,
247 .component.invoke.invoke_id = 108,
248 .component.invoke.args.etsi.AOCSCurrency.type = 1,
249 .component.invoke.args.etsi.AOCSCurrency.currency_info.num_records = 1,
250 .component.invoke.args.etsi.AOCSCurrency.currency_info.list[0].charged_item = 3,
251 .component.invoke.args.etsi.AOCSCurrency.currency_info.list[0].currency_type = 4,
252 },
253
254 {
255 .type = ROSE_COMP_TYPE_INVOKE,
256 .component.invoke.operation = ROSE_ETSI_AOCSSpecialArr,
257 .component.invoke.invoke_id = 109,
258 .component.invoke.args.etsi.AOCSSpecialArr.type = 0,
259 },
260 {
261 .type = ROSE_COMP_TYPE_INVOKE,
262 .component.invoke.operation = ROSE_ETSI_AOCSSpecialArr,
263 .component.invoke.invoke_id = 110,
264 .component.invoke.args.etsi.AOCSSpecialArr.type = 1,
265 .component.invoke.args.etsi.AOCSSpecialArr.special_arrangement = 9,
266 },
267
268 {
269 .type = ROSE_COMP_TYPE_INVOKE,
270 .component.invoke.operation = ROSE_ETSI_AOCDCurrency,
271 .component.invoke.invoke_id = 111,
272 .component.invoke.args.etsi.AOCDCurrency.type = 0,
273 },
274 {
275 .type = ROSE_COMP_TYPE_INVOKE,
276 .component.invoke.operation = ROSE_ETSI_AOCDCurrency,
277 .component.invoke.invoke_id = 112,
278 .component.invoke.args.etsi.AOCDCurrency.type = 1,
279 },
280 {
281 .type = ROSE_COMP_TYPE_INVOKE,
282 .component.invoke.operation = ROSE_ETSI_AOCDCurrency,
283 .component.invoke.invoke_id = 113,
284 .component.invoke.args.etsi.AOCDCurrency.type = 2,
285 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.currency = "Francs",
286 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.amount.currency = 674,
287 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.amount.multiplier = 3,
288 .component.invoke.args.etsi.AOCDCurrency.specific.type_of_charging_info = 1,
289 },
290 {
291 .type = ROSE_COMP_TYPE_INVOKE,
292 .component.invoke.operation = ROSE_ETSI_AOCDCurrency,
293 .component.invoke.invoke_id = 114,
294 .component.invoke.args.etsi.AOCDCurrency.type = 2,
295 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.currency = "Francs",
296 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.amount.currency = 674,
297 .component.invoke.args.etsi.AOCDCurrency.specific.recorded.amount.multiplier = 3,
298 .component.invoke.args.etsi.AOCDCurrency.specific.type_of_charging_info = 1,
299 .component.invoke.args.etsi.AOCDCurrency.specific.billing_id_present = 1,
300 .component.invoke.args.etsi.AOCDCurrency.specific.billing_id = 2,
301 },
302
303 {
304 .type = ROSE_COMP_TYPE_INVOKE,
305 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
306 .component.invoke.invoke_id = 115,
307 .component.invoke.args.etsi.AOCDChargingUnit.type = 0,
308 },
309 {
310 .type = ROSE_COMP_TYPE_INVOKE,
311 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
312 .component.invoke.invoke_id = 116,
313 .component.invoke.args.etsi.AOCDChargingUnit.type = 1,
314 },
315 {
316 .type = ROSE_COMP_TYPE_INVOKE,
317 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
318 .component.invoke.invoke_id = 117,
319 .component.invoke.args.etsi.AOCDChargingUnit.type = 2,
320 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.num_records = 1,
321 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].not_available = 1,
322 .component.invoke.args.etsi.AOCDChargingUnit.specific.type_of_charging_info = 1,
323 },
324 {
325 .type = ROSE_COMP_TYPE_INVOKE,
326 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
327 .component.invoke.invoke_id = 118,
328 .component.invoke.args.etsi.AOCDChargingUnit.type = 2,
329 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.num_records = 1,
330 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].not_available = 0,
331 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].number_of_units = 8523,
332 .component.invoke.args.etsi.AOCDChargingUnit.specific.type_of_charging_info = 1,
333 .component.invoke.args.etsi.AOCDChargingUnit.specific.billing_id_present = 1,
334 .component.invoke.args.etsi.AOCDChargingUnit.specific.billing_id = 2,
335 },
336 {
337 .type = ROSE_COMP_TYPE_INVOKE,
338 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
339 .component.invoke.invoke_id = 119,
340 .component.invoke.args.etsi.AOCDChargingUnit.type = 2,
341 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.num_records = 1,
342 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].not_available = 1,
343 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].type_of_unit_present = 1,
344 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].type_of_unit = 13,
345 .component.invoke.args.etsi.AOCDChargingUnit.specific.type_of_charging_info = 1,
346 },
347 {
348 .type = ROSE_COMP_TYPE_INVOKE,
349 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
350 .component.invoke.invoke_id = 120,
351 .component.invoke.args.etsi.AOCDChargingUnit.type = 2,
352 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.num_records = 1,
353 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].not_available = 0,
354 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].number_of_units = 8523,
355 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].type_of_unit_present = 1,
356 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].type_of_unit = 13,
357 .component.invoke.args.etsi.AOCDChargingUnit.specific.type_of_charging_info = 1,
358 },
359 {
360 .type = ROSE_COMP_TYPE_INVOKE,
361 .component.invoke.operation = ROSE_ETSI_AOCDChargingUnit,
362 .component.invoke.invoke_id = 121,
363 .component.invoke.args.etsi.AOCDChargingUnit.type = 2,
364 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.num_records = 2,
365 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[0].not_available = 1,
366 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[1].not_available = 0,
367 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[1].number_of_units = 8523,
368 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[1].type_of_unit_present = 1,
369 .component.invoke.args.etsi.AOCDChargingUnit.specific.recorded.list[1].type_of_unit = 13,
370 .component.invoke.args.etsi.AOCDChargingUnit.specific.type_of_charging_info = 1,
371 },
372
373 {
374 .type = ROSE_COMP_TYPE_INVOKE,
375 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
376 .component.invoke.invoke_id = 122,
377 .component.invoke.args.etsi.AOCECurrency.type = 0,
378 },
379 {
380 .type = ROSE_COMP_TYPE_INVOKE,
381 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
382 .component.invoke.invoke_id = 123,
383 .component.invoke.args.etsi.AOCECurrency.type = 1,
384 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 1,
385 },
386 {
387 .type = ROSE_COMP_TYPE_INVOKE,
388 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
389 .component.invoke.invoke_id = 124,
390 .component.invoke.args.etsi.AOCECurrency.type = 1,
391 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 1,
392 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association_present = 1,
393 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.type = 0,
394 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.id = -37,
395 },
396 {
397 .type = ROSE_COMP_TYPE_INVOKE,
398 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
399 .component.invoke.invoke_id = 125,
400 .component.invoke.args.etsi.AOCECurrency.type = 1,
401 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 1,
402 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association_present = 1,
403 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.type = 1,
404 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.number.plan = 0,
405 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.number.length = 7,
406 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.number.str = "5551212",
407 },
408 {
409 .type = ROSE_COMP_TYPE_INVOKE,
410 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
411 .component.invoke.invoke_id = 126,
412 .component.invoke.args.etsi.AOCECurrency.type = 1,
413 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 0,
414 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.currency = "Francs",
415 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.currency = 674,
416 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.multiplier = 3,
417 },
418 {
419 .type = ROSE_COMP_TYPE_INVOKE,
420 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
421 .component.invoke.invoke_id = 127,
422 .component.invoke.args.etsi.AOCECurrency.type = 1,
423 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 0,
424 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.currency = "Francs",
425 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.currency = 674,
426 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.multiplier = 3,
427 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association_present = 1,
428 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.type = 0,
429 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.id = -37,
430 },
431 {
432 .type = ROSE_COMP_TYPE_INVOKE,
433 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
434 .component.invoke.invoke_id = 128,
435 .component.invoke.args.etsi.AOCECurrency.type = 1,
436 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 0,
437 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.currency = "Francs",
438 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.currency = 674,
439 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.multiplier = 3,
440 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.billing_id_present = 1,
441 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.billing_id = 2,
442 },
443 {
444 .type = ROSE_COMP_TYPE_INVOKE,
445 .component.invoke.operation = ROSE_ETSI_AOCECurrency,
446 .component.invoke.invoke_id = 129,
447 .component.invoke.args.etsi.AOCECurrency.type = 1,
448 .component.invoke.args.etsi.AOCECurrency.currency_info.free_of_charge = 0,
449 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.currency = "Francs",
450 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.currency = 674,
451 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.recorded.amount.multiplier = 3,
452 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.billing_id_present = 1,
453 .component.invoke.args.etsi.AOCECurrency.currency_info.specific.billing_id = 2,
454 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association_present = 1,
455 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.type = 0,
456 .component.invoke.args.etsi.AOCECurrency.currency_info.charging_association.id = -37,
457 },
458
459 {
460 .type = ROSE_COMP_TYPE_INVOKE,
461 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
462 .component.invoke.invoke_id = 130,
463 .component.invoke.args.etsi.AOCEChargingUnit.type = 0,
464 },
465 {
466 .type = ROSE_COMP_TYPE_INVOKE,
467 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
468 .component.invoke.invoke_id = 131,
469 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
470 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 1,
471 },
472 {
473 .type = ROSE_COMP_TYPE_INVOKE,
474 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
475 .component.invoke.invoke_id = 132,
476 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
477 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 1,
478 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association_present = 1,
479 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.type = 0,
480 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.id = -37,
481 },
482 {
483 .type = ROSE_COMP_TYPE_INVOKE,
484 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
485 .component.invoke.invoke_id = 133,
486 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
487 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 0,
488 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.num_records = 1,
489 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.list[0].not_available = 1,
490 },
491 {
492 .type = ROSE_COMP_TYPE_INVOKE,
493 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
494 .component.invoke.invoke_id = 134,
495 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
496 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 0,
497 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.num_records = 1,
498 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.list[0].not_available = 1,
499 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association_present = 1,
500 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.type = 0,
501 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.id = -37,
502 },
503 {
504 .type = ROSE_COMP_TYPE_INVOKE,
505 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
506 .component.invoke.invoke_id = 135,
507 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
508 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 0,
509 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.num_records = 1,
510 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.list[0].not_available = 1,
511 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.billing_id_present = 1,
512 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.billing_id = 2,
513 },
514 {
515 .type = ROSE_COMP_TYPE_INVOKE,
516 .component.invoke.operation = ROSE_ETSI_AOCEChargingUnit,
517 .component.invoke.invoke_id = 136,
518 .component.invoke.args.etsi.AOCEChargingUnit.type = 1,
519 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.free_of_charge = 0,
520 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.num_records = 1,
521 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.recorded.list[0].not_available = 1,
522 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.billing_id_present = 1,
523 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.specific.billing_id = 2,
524 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association_present = 1,
525 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.type = 0,
526 .component.invoke.args.etsi.AOCEChargingUnit.charging_unit.charging_association.id = -37,
527 },
528
529 /* Call diversion */
530 {
531 .type = ROSE_COMP_TYPE_INVOKE,
532 .component.invoke.operation = ROSE_ETSI_ActivationDiversion,
533 .component.invoke.invoke_id = 67,
534 .component.invoke.linked_id_present = 1,
535 .component.invoke.linked_id = 27,
536 .component.invoke.args.etsi.ActivationDiversion.procedure = 2,
537 .component.invoke.args.etsi.ActivationDiversion.basic_service = 3,
538 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.plan = 4,
539 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.length = 4,
540 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.str = "1803",
541 .component.invoke.args.etsi.ActivationDiversion.served_user_number.plan = 4,
542 .component.invoke.args.etsi.ActivationDiversion.served_user_number.length = 4,
543 .component.invoke.args.etsi.ActivationDiversion.served_user_number.str = "5398",
544 },
545 {
546 .type = ROSE_COMP_TYPE_INVOKE,
547 .component.invoke.operation = ROSE_ETSI_ActivationDiversion,
548 .component.invoke.invoke_id = 68,
549 .component.invoke.args.etsi.ActivationDiversion.procedure = 1,
550 .component.invoke.args.etsi.ActivationDiversion.basic_service = 5,
551 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.plan = 4,
552 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.length = 4,
553 .component.invoke.args.etsi.ActivationDiversion.forwarded_to.number.str = "1803",
554 },
555 {
556 .type = ROSE_COMP_TYPE_RESULT,
557 .component.result.operation = ROSE_ETSI_ActivationDiversion,
558 .component.result.invoke_id = 69,
559 },
560
561 {
562 .type = ROSE_COMP_TYPE_INVOKE,
563 .component.invoke.operation = ROSE_ETSI_DeactivationDiversion,
564 .component.invoke.invoke_id = 70,
565 .component.invoke.args.etsi.DeactivationDiversion.procedure = 1,
566 .component.invoke.args.etsi.DeactivationDiversion.basic_service = 5,
567 },
568 {
569 .type = ROSE_COMP_TYPE_RESULT,
570 .component.result.operation = ROSE_ETSI_DeactivationDiversion,
571 .component.result.invoke_id = 71,
572 },
573
574 {
575 .type = ROSE_COMP_TYPE_INVOKE,
576 .component.invoke.operation = ROSE_ETSI_ActivationStatusNotificationDiv,
577 .component.invoke.invoke_id = 72,
578 .component.invoke.args.etsi.ActivationStatusNotificationDiv.procedure = 1,
579 .component.invoke.args.etsi.ActivationStatusNotificationDiv.basic_service = 5,
580 .component.invoke.args.etsi.ActivationStatusNotificationDiv.forwarded_to.number.plan = 4,
581 .component.invoke.args.etsi.ActivationStatusNotificationDiv.forwarded_to.number.length = 4,
582 .component.invoke.args.etsi.ActivationStatusNotificationDiv.forwarded_to.number.str = "1803",
583 },
584 {
585 .type = ROSE_COMP_TYPE_INVOKE,
586 .component.invoke.operation = ROSE_ETSI_DeactivationStatusNotificationDiv,
587 .component.invoke.invoke_id = 73,
588 .component.invoke.args.etsi.DeactivationStatusNotificationDiv.procedure = 1,
589 .component.invoke.args.etsi.DeactivationStatusNotificationDiv.basic_service = 5,
590 },
591
592 {
593 .type = ROSE_COMP_TYPE_INVOKE,
594 .component.invoke.operation = ROSE_ETSI_InterrogationDiversion,
595 .component.invoke.invoke_id = 74,
596 .component.invoke.args.etsi.InterrogationDiversion.procedure = 1,
597 .component.invoke.args.etsi.InterrogationDiversion.basic_service = 5,
598 },
599 {
600 .type = ROSE_COMP_TYPE_INVOKE,
601 .component.invoke.operation = ROSE_ETSI_InterrogationDiversion,
602 .component.invoke.invoke_id = 75,
603 .component.invoke.args.etsi.InterrogationDiversion.procedure = 1,
604 },
605 {
606 .type = ROSE_COMP_TYPE_RESULT,
607 .component.result.operation = ROSE_ETSI_InterrogationDiversion,
608 .component.result.invoke_id = 76,
609 .component.result.args.etsi.InterrogationDiversion.num_records = 2,
610 .component.result.args.etsi.InterrogationDiversion.list[0].procedure = 2,
611 .component.result.args.etsi.InterrogationDiversion.list[0].basic_service = 5,
612 .component.result.args.etsi.InterrogationDiversion.list[0].forwarded_to.number.plan = 4,
613 .component.result.args.etsi.InterrogationDiversion.list[0].forwarded_to.number.length = 4,
614 .component.result.args.etsi.InterrogationDiversion.list[0].forwarded_to.number.str = "1803",
615 .component.result.args.etsi.InterrogationDiversion.list[1].procedure = 1,
616 .component.result.args.etsi.InterrogationDiversion.list[1].basic_service = 3,
617 .component.result.args.etsi.InterrogationDiversion.list[1].forwarded_to.number.plan = 4,
618 .component.result.args.etsi.InterrogationDiversion.list[1].forwarded_to.number.length = 4,
619 .component.result.args.etsi.InterrogationDiversion.list[1].forwarded_to.number.str = "1903",
620 .component.result.args.etsi.InterrogationDiversion.list[1].served_user_number.plan = 4,
621 .component.result.args.etsi.InterrogationDiversion.list[1].served_user_number.length = 4,
622 .component.result.args.etsi.InterrogationDiversion.list[1].served_user_number.str = "5398",
623 },
624
625 {
626 .type = ROSE_COMP_TYPE_INVOKE,
627 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
628 .component.invoke.invoke_id = 77,
629 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 3,
630 .component.invoke.args.etsi.DiversionInformation.basic_service = 5,
631 .component.invoke.args.etsi.DiversionInformation.served_user_subaddress.type = 1,
632 .component.invoke.args.etsi.DiversionInformation.served_user_subaddress.length = 4,
633 .component.invoke.args.etsi.DiversionInformation.served_user_subaddress.u.nsap = "6492",
634 .component.invoke.args.etsi.DiversionInformation.calling_present = 1,
635 .component.invoke.args.etsi.DiversionInformation.calling.presentation = 0,
636 .component.invoke.args.etsi.DiversionInformation.calling.screened.screening_indicator = 3,
637 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.plan = 4,
638 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.length = 4,
639 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.str = "1803",
640 .component.invoke.args.etsi.DiversionInformation.original_called_present = 1,
641 .component.invoke.args.etsi.DiversionInformation.original_called.presentation = 1,
642 .component.invoke.args.etsi.DiversionInformation.last_diverting_present = 1,
643 .component.invoke.args.etsi.DiversionInformation.last_diverting.presentation = 2,
644 .component.invoke.args.etsi.DiversionInformation.last_diverting_reason_present = 1,
645 .component.invoke.args.etsi.DiversionInformation.last_diverting_reason = 3,
646 .component.invoke.args.etsi.DiversionInformation.q931ie.length = 5,
647 .component.invoke.args.etsi.DiversionInformation.q931ie_contents = "79828",
648 },
649 {
650 .type = ROSE_COMP_TYPE_INVOKE,
651 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
652 .component.invoke.invoke_id = 78,
653 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 3,
654 .component.invoke.args.etsi.DiversionInformation.basic_service = 5,
655 .component.invoke.args.etsi.DiversionInformation.calling_present = 1,
656 .component.invoke.args.etsi.DiversionInformation.calling.presentation = 1,
657 .component.invoke.args.etsi.DiversionInformation.original_called_present = 1,
658 .component.invoke.args.etsi.DiversionInformation.original_called.presentation = 2,
659 .component.invoke.args.etsi.DiversionInformation.last_diverting_present = 1,
660 .component.invoke.args.etsi.DiversionInformation.last_diverting.presentation = 1,
661 },
662 {
663 .type = ROSE_COMP_TYPE_INVOKE,
664 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
665 .component.invoke.invoke_id = 79,
666 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 2,
667 .component.invoke.args.etsi.DiversionInformation.basic_service = 3,
668 .component.invoke.args.etsi.DiversionInformation.calling_present = 1,
669 .component.invoke.args.etsi.DiversionInformation.calling.presentation = 2,
670 },
671 {
672 .type = ROSE_COMP_TYPE_INVOKE,
673 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
674 .component.invoke.invoke_id = 80,
675 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 3,
676 .component.invoke.args.etsi.DiversionInformation.basic_service = 5,
677 .component.invoke.args.etsi.DiversionInformation.calling_present = 1,
678 .component.invoke.args.etsi.DiversionInformation.calling.presentation = 3,
679 .component.invoke.args.etsi.DiversionInformation.calling.screened.screening_indicator = 2,
680 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.plan = 4,
681 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.length = 4,
682 .component.invoke.args.etsi.DiversionInformation.calling.screened.number.str = "1803",
683 },
684 {
685 .type = ROSE_COMP_TYPE_INVOKE,
686 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
687 .component.invoke.invoke_id = 81,
688 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 2,
689 .component.invoke.args.etsi.DiversionInformation.basic_service = 4,
690 .component.invoke.args.etsi.DiversionInformation.q931ie.length = 5,
691 .component.invoke.args.etsi.DiversionInformation.q931ie_contents = "79828",
692 },
693 {
694 .type = ROSE_COMP_TYPE_INVOKE,
695 .component.invoke.operation = ROSE_ETSI_DiversionInformation,
696 .component.invoke.invoke_id = 82,
697 .component.invoke.args.etsi.DiversionInformation.diversion_reason = 2,
698 .component.invoke.args.etsi.DiversionInformation.basic_service = 4,
699 },
700
701 {
702 .type = ROSE_COMP_TYPE_INVOKE,
703 .component.invoke.operation = ROSE_ETSI_CallDeflection,
704 .component.invoke.invoke_id = 83,
705 .component.invoke.args.etsi.CallDeflection.deflection.number.plan = 4,
706 .component.invoke.args.etsi.CallDeflection.deflection.number.length = 4,
707 .component.invoke.args.etsi.CallDeflection.deflection.number.str = "1803",
708 .component.invoke.args.etsi.CallDeflection.presentation_allowed_to_diverted_to_user_present = 1,
709 .component.invoke.args.etsi.CallDeflection.presentation_allowed_to_diverted_to_user = 1,
710 },
711 {
712 .type = ROSE_COMP_TYPE_INVOKE,
713 .component.invoke.operation = ROSE_ETSI_CallDeflection,
714 .component.invoke.invoke_id = 84,
715 .component.invoke.args.etsi.CallDeflection.deflection.number.plan = 4,
716 .component.invoke.args.etsi.CallDeflection.deflection.number.length = 4,
717 .component.invoke.args.etsi.CallDeflection.deflection.number.str = "1803",
718 .component.invoke.args.etsi.CallDeflection.presentation_allowed_to_diverted_to_user_present = 1,
719 .component.invoke.args.etsi.CallDeflection.presentation_allowed_to_diverted_to_user = 0,
720 },
721 {
722 .type = ROSE_COMP_TYPE_INVOKE,
723 .component.invoke.operation = ROSE_ETSI_CallDeflection,
724 .component.invoke.invoke_id = 85,
725 .component.invoke.args.etsi.CallDeflection.deflection.number.plan = 4,
726 .component.invoke.args.etsi.CallDeflection.deflection.number.length = 4,
727 .component.invoke.args.etsi.CallDeflection.deflection.number.str = "1803",
728 },
729 {
730 .type = ROSE_COMP_TYPE_RESULT,
731 .component.result.operation = ROSE_ETSI_CallDeflection,
732 .component.result.invoke_id = 86,
733 },
734
735 {
736 .type = ROSE_COMP_TYPE_INVOKE,
737 .component.invoke.operation = ROSE_ETSI_CallRerouting,
738 .component.invoke.invoke_id = 87,
739 .component.invoke.args.etsi.CallRerouting.rerouting_reason = 3,
740 .component.invoke.args.etsi.CallRerouting.rerouting_counter = 2,
741 .component.invoke.args.etsi.CallRerouting.called_address.number.plan = 4,
742 .component.invoke.args.etsi.CallRerouting.called_address.number.length = 4,
743 .component.invoke.args.etsi.CallRerouting.called_address.number.str = "1803",
744 .component.invoke.args.etsi.CallRerouting.q931ie.length = 129,
745 .component.invoke.args.etsi.CallRerouting.q931ie_contents =
746 "YEHAW."
747 " The quick brown fox jumped over the lazy dog test."
748 " Now is the time for all good men to come to the aid of their country.",
749 .component.invoke.args.etsi.CallRerouting.last_rerouting.presentation = 1,
750 .component.invoke.args.etsi.CallRerouting.subscription_option = 2,
751 .component.invoke.args.etsi.CallRerouting.calling_subaddress.type = 1,
752 .component.invoke.args.etsi.CallRerouting.calling_subaddress.length = 4,
753 .component.invoke.args.etsi.CallRerouting.calling_subaddress.u.nsap = "6492",
754 },
755 {
756 .type = ROSE_COMP_TYPE_INVOKE,
757 .component.invoke.operation = ROSE_ETSI_CallRerouting,
758 .component.invoke.invoke_id = 88,
759 .component.invoke.args.etsi.CallRerouting.rerouting_reason = 3,
760 .component.invoke.args.etsi.CallRerouting.rerouting_counter = 2,
761 .component.invoke.args.etsi.CallRerouting.called_address.number.plan = 4,
762 .component.invoke.args.etsi.CallRerouting.called_address.number.length = 4,
763 .component.invoke.args.etsi.CallRerouting.called_address.number.str = "1803",
764 .component.invoke.args.etsi.CallRerouting.q931ie.length = 2,
765 .component.invoke.args.etsi.CallRerouting.q931ie_contents = "RT",
766 .component.invoke.args.etsi.CallRerouting.last_rerouting.presentation = 1,
767 .component.invoke.args.etsi.CallRerouting.subscription_option = 2,
768 },
769 {
770 .type = ROSE_COMP_TYPE_INVOKE,
771 .component.invoke.operation = ROSE_ETSI_CallRerouting,
772 .component.invoke.invoke_id = 89,
773 .component.invoke.args.etsi.CallRerouting.rerouting_reason = 3,
774 .component.invoke.args.etsi.CallRerouting.rerouting_counter = 2,
775 .component.invoke.args.etsi.CallRerouting.called_address.number.plan = 4,
776 .component.invoke.args.etsi.CallRerouting.called_address.number.length = 4,
777 .component.invoke.args.etsi.CallRerouting.called_address.number.str = "1803",
778 .component.invoke.args.etsi.CallRerouting.q931ie.length = 2,
779 .component.invoke.args.etsi.CallRerouting.q931ie_contents = "RT",
780 .component.invoke.args.etsi.CallRerouting.last_rerouting.presentation = 2,
781 },
782 {
783 .type = ROSE_COMP_TYPE_RESULT,
784 .component.result.operation = ROSE_ETSI_CallRerouting,
785 .component.result.invoke_id = 90,
786 },
787
788 {
789 .type = ROSE_COMP_TYPE_INVOKE,
790 .component.invoke.operation = ROSE_ETSI_InterrogateServedUserNumbers,
791 .component.invoke.invoke_id = 91,
792 },
793 {
794 .type = ROSE_COMP_TYPE_RESULT,
795 .component.result.operation = ROSE_ETSI_InterrogateServedUserNumbers,
796 .component.result.invoke_id = 92,
797 .component.result.args.etsi.InterrogateServedUserNumbers.num_records = 2,
798 .component.result.args.etsi.InterrogateServedUserNumbers.number[0].plan = 4,
799 .component.result.args.etsi.InterrogateServedUserNumbers.number[0].length = 4,
800 .component.result.args.etsi.InterrogateServedUserNumbers.number[0].str = "1803",
801 .component.result.args.etsi.InterrogateServedUserNumbers.number[1].plan = 4,
802 .component.result.args.etsi.InterrogateServedUserNumbers.number[1].length = 4,
803 .component.result.args.etsi.InterrogateServedUserNumbers.number[1].str = "5786",
804 },
805
806 {
807 .type = ROSE_COMP_TYPE_INVOKE,
808 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation1,
809 .component.invoke.invoke_id = 93,
810 .component.invoke.args.etsi.DivertingLegInformation1.diversion_reason = 4,
811 .component.invoke.args.etsi.DivertingLegInformation1.subscription_option = 1,
812 .component.invoke.args.etsi.DivertingLegInformation1.diverted_to_present = 1,
813 .component.invoke.args.etsi.DivertingLegInformation1.diverted_to.presentation = 2,
814 },
815 {
816 .type = ROSE_COMP_TYPE_INVOKE,
817 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation1,
818 .component.invoke.invoke_id = 94,
819 .component.invoke.args.etsi.DivertingLegInformation1.diversion_reason = 4,
820 .component.invoke.args.etsi.DivertingLegInformation1.subscription_option = 1,
821 },
822
823 {
824 .type = ROSE_COMP_TYPE_INVOKE,
825 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation2,
826 .component.invoke.invoke_id = 95,
827 .component.invoke.args.etsi.DivertingLegInformation2.diversion_counter = 3,
828 .component.invoke.args.etsi.DivertingLegInformation2.diversion_reason = 2,
829 .component.invoke.args.etsi.DivertingLegInformation2.diverting_present = 1,
830 .component.invoke.args.etsi.DivertingLegInformation2.diverting.presentation = 2,
831 .component.invoke.args.etsi.DivertingLegInformation2.original_called_present = 1,
832 .component.invoke.args.etsi.DivertingLegInformation2.original_called.presentation = 1,
833 },
834 {
835 .type = ROSE_COMP_TYPE_INVOKE,
836 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation2,
837 .component.invoke.invoke_id = 96,
838 .component.invoke.args.etsi.DivertingLegInformation2.diversion_counter = 3,
839 .component.invoke.args.etsi.DivertingLegInformation2.diversion_reason = 2,
840 .component.invoke.args.etsi.DivertingLegInformation2.original_called_present = 1,
841 .component.invoke.args.etsi.DivertingLegInformation2.original_called.presentation = 1,
842 },
843 {
844 .type = ROSE_COMP_TYPE_INVOKE,
845 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation2,
846 .component.invoke.invoke_id = 97,
847 .component.invoke.args.etsi.DivertingLegInformation2.diversion_counter = 1,
848 .component.invoke.args.etsi.DivertingLegInformation2.diversion_reason = 2,
849 },
850
851 {
852 .type = ROSE_COMP_TYPE_INVOKE,
853 .component.invoke.operation = ROSE_ETSI_DivertingLegInformation3,
854 .component.invoke.invoke_id = 98,
855 .component.invoke.args.etsi.DivertingLegInformation3.presentation_allowed_indicator = 1,
856 },
857
858 /* Explicit Call Transfer (ECT) */
859 {
860 .type = ROSE_COMP_TYPE_INVOKE,
861 .component.invoke.operation = ROSE_ETSI_EctExecute,
862 .component.invoke.invoke_id = 54,
863 },
864 {
865 .type = ROSE_COMP_TYPE_INVOKE,
866 .component.invoke.operation = ROSE_ETSI_ExplicitEctExecute,
867 .component.invoke.invoke_id = 55,
868 .component.invoke.args.etsi.ExplicitEctExecute.link_id = 23,
869 },
870 {
871 .type = ROSE_COMP_TYPE_INVOKE,
872 .component.invoke.operation = ROSE_ETSI_RequestSubaddress,
873 .component.invoke.invoke_id = 56,
874 },
875 {
876 .type = ROSE_COMP_TYPE_INVOKE,
877 .component.invoke.operation = ROSE_ETSI_SubaddressTransfer,
878 .component.invoke.invoke_id = 57,
879 .component.invoke.args.etsi.SubaddressTransfer.subaddress.type = 1,
880 .component.invoke.args.etsi.SubaddressTransfer.subaddress.length = 4,
881 .component.invoke.args.etsi.SubaddressTransfer.subaddress.u.nsap = "6492",
882 },
883
884 {
885 .type = ROSE_COMP_TYPE_INVOKE,
886 .component.invoke.operation = ROSE_ETSI_EctLinkIdRequest,
887 .component.invoke.invoke_id = 58,
888 },
889 {
890 .type = ROSE_COMP_TYPE_RESULT,
891 .component.result.operation = ROSE_ETSI_EctLinkIdRequest,
892 .component.result.invoke_id = 59,
893 .component.result.args.etsi.EctLinkIdRequest.link_id = 76,
894 },
895
896 {
897 .type = ROSE_COMP_TYPE_INVOKE,
898 .component.invoke.operation = ROSE_ETSI_EctInform,
899 .component.invoke.invoke_id = 60,
900 .component.invoke.args.etsi.EctInform.status = 1,
901 .component.invoke.args.etsi.EctInform.redirection_present = 1,
902 .component.invoke.args.etsi.EctInform.redirection.presentation = 0,
903 .component.invoke.args.etsi.EctInform.redirection.number.plan = 8,
904 .component.invoke.args.etsi.EctInform.redirection.number.length = 4,
905 .component.invoke.args.etsi.EctInform.redirection.number.str = "6229",
906 },
907 {
908 .type = ROSE_COMP_TYPE_INVOKE,
909 .component.invoke.operation = ROSE_ETSI_EctInform,
910 .component.invoke.invoke_id = 61,
911 .component.invoke.args.etsi.EctInform.status = 1,
912 .component.invoke.args.etsi.EctInform.redirection_present = 1,
913 .component.invoke.args.etsi.EctInform.redirection.presentation = 1,
914 },
915 {
916 .type = ROSE_COMP_TYPE_INVOKE,
917 .component.invoke.operation = ROSE_ETSI_EctInform,
918 .component.invoke.invoke_id = 62,
919 .component.invoke.args.etsi.EctInform.status = 1,
920 .component.invoke.args.etsi.EctInform.redirection_present = 1,
921 .component.invoke.args.etsi.EctInform.redirection.presentation = 2,
922 },
923 {
924 .type = ROSE_COMP_TYPE_INVOKE,
925 .component.invoke.operation = ROSE_ETSI_EctInform,
926 .component.invoke.invoke_id = 63,
927 .component.invoke.args.etsi.EctInform.status = 1,
928 .component.invoke.args.etsi.EctInform.redirection_present = 1,
929 .component.invoke.args.etsi.EctInform.redirection.presentation = 3,
930 .component.invoke.args.etsi.EctInform.redirection.number.plan = 8,
931 .component.invoke.args.etsi.EctInform.redirection.number.length = 4,
932 .component.invoke.args.etsi.EctInform.redirection.number.str = "3340",
933 },
934 {
935 .type = ROSE_COMP_TYPE_INVOKE,
936 .component.invoke.operation = ROSE_ETSI_EctInform,
937 .component.invoke.invoke_id = 64,
938 .component.invoke.args.etsi.EctInform.status = 1,
939 .component.invoke.args.etsi.EctInform.redirection_present = 0,
940 },
941
942 {
943 .type = ROSE_COMP_TYPE_INVOKE,
944 .component.invoke.operation = ROSE_ETSI_EctLoopTest,
945 .component.invoke.invoke_id = 65,
946 .component.invoke.args.etsi.EctLoopTest.call_transfer_id = 7,
947 },
948 {
949 .type = ROSE_COMP_TYPE_RESULT,
950 .component.result.operation = ROSE_ETSI_EctLoopTest,
951 .component.result.invoke_id = 66,
952 .component.result.args.etsi.EctLoopTest.loop_result = 2,
953 },
954
955 /* Status Request */
956 {
957 .type = ROSE_COMP_TYPE_INVOKE,
958 .component.invoke.operation = ROSE_ETSI_StatusRequest,
959 .component.invoke.invoke_id = 13,
960 .component.invoke.args.etsi.StatusRequest.q931ie.length = 5,
961 .component.invoke.args.etsi.StatusRequest.q931ie_contents = "CDEZY",
962 .component.invoke.args.etsi.StatusRequest.compatibility_mode = 1,
963 },
964 {
965 .type = ROSE_COMP_TYPE_RESULT,
966 .component.result.operation = ROSE_ETSI_StatusRequest,
967 .component.result.invoke_id = 14,
968 .component.result.args.etsi.StatusRequest.status = 2,
969 },
970
971 /* CCBS support */
972 {
973 .type = ROSE_COMP_TYPE_INVOKE,
974 .component.invoke.operation = ROSE_ETSI_CallInfoRetain,
975 .component.invoke.invoke_id = 15,
976 .component.invoke.args.etsi.CallInfoRetain.call_linkage_id = 115,
977 },
978 {
979 .type = ROSE_COMP_TYPE_INVOKE,
980 .component.invoke.operation = ROSE_ETSI_EraseCallLinkageID,
981 .component.invoke.invoke_id = 16,
982 .component.invoke.args.etsi.EraseCallLinkageID.call_linkage_id = 105,
983 },
984
985 {
986 .type = ROSE_COMP_TYPE_INVOKE,
987 .component.invoke.operation = ROSE_ETSI_CCBSDeactivate,
988 .component.invoke.invoke_id = 17,
989 .component.invoke.args.etsi.CCBSDeactivate.ccbs_reference = 2,
990 },
991 {
992 .type = ROSE_COMP_TYPE_RESULT,
993 .component.result.operation = ROSE_ETSI_CCBSDeactivate,
994 .component.result.invoke_id = 18,
995 },
996
997 {
998 .type = ROSE_COMP_TYPE_INVOKE,
999 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1000 .component.invoke.invoke_id = 19,
1001 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1002 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1003 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 0,
1004 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 5,
1005 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "33403",
1006 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.type = 0,
1007 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.length = 4,
1008 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.u.user_specified.information = "3748",
1009 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1010 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1011 .component.invoke.args.etsi.CCBSErase.reason = 3,
1012 },
1013 {
1014 .type = ROSE_COMP_TYPE_INVOKE,
1015 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1016 .component.invoke.invoke_id = 20,
1017 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1018 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1019 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 1,
1020 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 11,
1021 .component.invoke.args.etsi.CCBSErase.address_of_b.number.ton = 1,
1022 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "18003020102",
1023 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.type = 0,
1024 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.length = 4,
1025 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.u.user_specified.odd_count_present = 1,
1026 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.u.user_specified.odd_count = 1,
1027 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.u.user_specified.information = "3748",
1028 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1029 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1030 .component.invoke.args.etsi.CCBSErase.reason = 3,
1031 },
1032 {
1033 .type = ROSE_COMP_TYPE_INVOKE,
1034 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1035 .component.invoke.invoke_id = 21,
1036 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1037 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1038 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 2,
1039 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 4,
1040 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "1803",
1041 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.type = 1,
1042 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.length = 4,
1043 .component.invoke.args.etsi.CCBSErase.address_of_b.subaddress.u.nsap = "6492",
1044 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1045 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1046 .component.invoke.args.etsi.CCBSErase.reason = 3,
1047 },
1048 {
1049 .type = ROSE_COMP_TYPE_INVOKE,
1050 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1051 .component.invoke.invoke_id = 22,
1052 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1053 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1054 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 3,
1055 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 4,
1056 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "1803",
1057 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1058 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1059 .component.invoke.args.etsi.CCBSErase.reason = 3,
1060 },
1061 {
1062 .type = ROSE_COMP_TYPE_INVOKE,
1063 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1064 .component.invoke.invoke_id = 23,
1065 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1066 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1067 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 4,
1068 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 4,
1069 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "1803",
1070 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1071 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1072 .component.invoke.args.etsi.CCBSErase.reason = 3,
1073 },
1074 {
1075 .type = ROSE_COMP_TYPE_INVOKE,
1076 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1077 .component.invoke.invoke_id = 24,
1078 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1079 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1080 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 5,
1081 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 11,
1082 .component.invoke.args.etsi.CCBSErase.address_of_b.number.ton = 4,
1083 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "18003020102",
1084 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1085 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1086 .component.invoke.args.etsi.CCBSErase.reason = 3,
1087 },
1088 {
1089 .type = ROSE_COMP_TYPE_INVOKE,
1090 .component.invoke.operation = ROSE_ETSI_CCBSErase,
1091 .component.invoke.invoke_id = 25,
1092 .component.invoke.args.etsi.CCBSErase.q931ie.length = 2,
1093 .component.invoke.args.etsi.CCBSErase.q931ie_contents = "JK",
1094 .component.invoke.args.etsi.CCBSErase.address_of_b.number.plan = 8,
1095 .component.invoke.args.etsi.CCBSErase.address_of_b.number.length = 4,
1096 .component.invoke.args.etsi.CCBSErase.address_of_b.number.str = "1803",
1097 .component.invoke.args.etsi.CCBSErase.recall_mode = 1,
1098 .component.invoke.args.etsi.CCBSErase.ccbs_reference = 102,
1099 .component.invoke.args.etsi.CCBSErase.reason = 3,
1100 },
1101
1102 {
1103 .type = ROSE_COMP_TYPE_INVOKE,
1104 .component.invoke.operation = ROSE_ETSI_CCBSRemoteUserFree,
1105 .component.invoke.invoke_id = 26,
1106 .component.invoke.args.etsi.CCBSRemoteUserFree.q931ie.length = 2,
1107 .component.invoke.args.etsi.CCBSRemoteUserFree.q931ie_contents = "JK",
1108 .component.invoke.args.etsi.CCBSRemoteUserFree.address_of_b.number.plan = 8,
1109 .component.invoke.args.etsi.CCBSRemoteUserFree.address_of_b.number.length = 4,
1110 .component.invoke.args.etsi.CCBSRemoteUserFree.address_of_b.number.str = "1803",
1111 .component.invoke.args.etsi.CCBSRemoteUserFree.recall_mode = 1,
1112 .component.invoke.args.etsi.CCBSRemoteUserFree.ccbs_reference = 102,
1113 },
1114 {
1115 .type = ROSE_COMP_TYPE_INVOKE,
1116 .component.invoke.operation = ROSE_ETSI_CCBSCall,
1117 .component.invoke.invoke_id = 27,
1118 .component.invoke.args.etsi.CCBSCall.ccbs_reference = 115,
1119 },
1120
1121 {
1122 .type = ROSE_COMP_TYPE_INVOKE,
1123 .component.invoke.operation = ROSE_ETSI_CCBSStatusRequest,
1124 .component.invoke.invoke_id = 28,
1125 .component.invoke.args.etsi.CCBSStatusRequest.q931ie.length = 2,
1126 .component.invoke.args.etsi.CCBSStatusRequest.q931ie_contents = "JK",
1127 .component.invoke.args.etsi.CCBSStatusRequest.recall_mode = 1,
1128 .component.invoke.args.etsi.CCBSStatusRequest.ccbs_reference = 102,
1129 },
1130 {
1131 .type = ROSE_COMP_TYPE_RESULT,
1132 .component.result.operation = ROSE_ETSI_CCBSStatusRequest,
1133 .component.result.invoke_id = 29,
1134 .component.result.args.etsi.CCBSStatusRequest.free = 1,
1135 },
1136
1137 {
1138 .type = ROSE_COMP_TYPE_INVOKE,
1139 .component.invoke.operation = ROSE_ETSI_CCBSBFree,
1140 .component.invoke.invoke_id = 30,
1141 .component.invoke.args.etsi.CCBSBFree.q931ie.length = 2,
1142 .component.invoke.args.etsi.CCBSBFree.q931ie_contents = "JK",
1143 .component.invoke.args.etsi.CCBSBFree.address_of_b.number.plan = 8,
1144 .component.invoke.args.etsi.CCBSBFree.address_of_b.number.length = 4,
1145 .component.invoke.args.etsi.CCBSBFree.address_of_b.number.str = "1803",
1146 .component.invoke.args.etsi.CCBSBFree.recall_mode = 1,
1147 .component.invoke.args.etsi.CCBSBFree.ccbs_reference = 14,
1148 },
1149 {
1150 .type = ROSE_COMP_TYPE_INVOKE,
1151 .component.invoke.operation = ROSE_ETSI_CCBSStopAlerting,
1152 .component.invoke.invoke_id = 31,
1153 .component.invoke.args.etsi.CCBSStopAlerting.ccbs_reference = 37,
1154 },
1155
1156 {
1157 .type = ROSE_COMP_TYPE_INVOKE,
1158 .component.invoke.operation = ROSE_ETSI_CCBSRequest,
1159 .component.invoke.invoke_id = 32,
1160 .component.invoke.args.etsi.CCBSRequest.call_linkage_id = 57,
1161 },
1162 {
1163 .type = ROSE_COMP_TYPE_RESULT,
1164 .component.result.operation = ROSE_ETSI_CCBSRequest,
1165 .component.result.invoke_id = 33,
1166 .component.result.args.etsi.CCBSRequest.recall_mode = 1,
1167 .component.result.args.etsi.CCBSRequest.ccbs_reference = 102,
1168 },
1169
1170 {
1171 .type = ROSE_COMP_TYPE_INVOKE,
1172 .component.invoke.operation = ROSE_ETSI_CCBSInterrogate,
1173 .component.invoke.invoke_id = 34,
1174 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.plan = 8,
1175 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.length = 4,
1176 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.str = "1803",
1177 .component.invoke.args.etsi.CCBSInterrogate.ccbs_reference_present = 1,
1178 .component.invoke.args.etsi.CCBSInterrogate.ccbs_reference = 76,
1179 },
1180 {
1181 .type = ROSE_COMP_TYPE_INVOKE,
1182 .component.invoke.operation = ROSE_ETSI_CCBSInterrogate,
1183 .component.invoke.invoke_id = 35,
1184 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.plan = 8,
1185 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.length = 4,
1186 .component.invoke.args.etsi.CCBSInterrogate.a_party_number.str = "1803",
1187 },
1188 {
1189 .type = ROSE_COMP_TYPE_INVOKE,
1190 .component.invoke.operation = ROSE_ETSI_CCBSInterrogate,
1191 .component.invoke.invoke_id = 36,
1192 .component.invoke.args.etsi.CCBSInterrogate.ccbs_reference_present = 1,
1193 .component.invoke.args.etsi.CCBSInterrogate.ccbs_reference = 76,
1194 },
1195 {
1196 .type = ROSE_COMP_TYPE_INVOKE,
1197 .component.invoke.operation = ROSE_ETSI_CCBSInterrogate,
1198 .component.invoke.invoke_id = 37,
1199 },
1200 {
1201 .type = ROSE_COMP_TYPE_RESULT,
1202 .component.result.operation = ROSE_ETSI_CCBSInterrogate,
1203 .component.result.invoke_id = 38,
1204 .component.result.args.etsi.CCBSInterrogate.recall_mode = 1,
1205 },
1206 {
1207 .type = ROSE_COMP_TYPE_RESULT,
1208 .component.result.operation = ROSE_ETSI_CCBSInterrogate,
1209 .component.result.invoke_id = 39,
1210 .component.result.args.etsi.CCBSInterrogate.recall_mode = 1,
1211 .component.result.args.etsi.CCBSInterrogate.call_details.num_records = 1,
1212 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].ccbs_reference = 12,
1213 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].q931ie.length = 2,
1214 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].q931ie_contents = "JK",
1215 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.plan = 8,
1216 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.length = 4,
1217 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.str = "1803",
1218 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].subaddress_of_a.type = 1,
1219 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].subaddress_of_a.length = 4,
1220 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].subaddress_of_a.u.nsap = "6492",
1221 },
1222 {
1223 .type = ROSE_COMP_TYPE_RESULT,
1224 .component.result.operation = ROSE_ETSI_CCBSInterrogate,
1225 .component.result.invoke_id = 40,
1226 .component.result.args.etsi.CCBSInterrogate.recall_mode = 1,
1227 .component.result.args.etsi.CCBSInterrogate.call_details.num_records = 2,
1228 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].ccbs_reference = 12,
1229 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].q931ie.length = 2,
1230 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].q931ie_contents = "JK",
1231 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.plan = 8,
1232 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.length = 4,
1233 .component.result.args.etsi.CCBSInterrogate.call_details.list[0].address_of_b.number.str = "1803",
1234 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].ccbs_reference = 102,
1235 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].q931ie.length = 2,
1236 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].q931ie_contents = "LM",
1237 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.number.plan = 8,
1238 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.number.length = 4,
1239 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.number.str = "6229",
1240 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.subaddress.type = 1,
1241 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.subaddress.length = 4,
1242 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].address_of_b.subaddress.u.nsap = "8592",
1243 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].subaddress_of_a.type = 1,
1244 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].subaddress_of_a.length = 4,
1245 .component.result.args.etsi.CCBSInterrogate.call_details.list[1].subaddress_of_a.u.nsap = "6492",
1246 },
1247
1248 /* CCNR support */
1249 {
1250 .type = ROSE_COMP_TYPE_INVOKE,
1251 .component.invoke.operation = ROSE_ETSI_CCNRRequest,
1252 .component.invoke.invoke_id = 512,
1253 .component.invoke.args.etsi.CCNRRequest.call_linkage_id = 57,
1254 },
1255 {
1256 .type = ROSE_COMP_TYPE_RESULT,
1257 .component.result.operation = ROSE_ETSI_CCNRRequest,
1258 .component.result.invoke_id = 150,
1259 .component.result.args.etsi.CCNRRequest.recall_mode = 1,
1260 .component.result.args.etsi.CCNRRequest.ccbs_reference = 102,
1261 },
1262
1263 {
1264 .type = ROSE_COMP_TYPE_INVOKE,
1265 .component.invoke.operation = ROSE_ETSI_CCNRInterrogate,
1266 .component.invoke.invoke_id = -129,
1267 },
1268 {
1269 .type = ROSE_COMP_TYPE_RESULT,
1270 .component.result.operation = ROSE_ETSI_CCNRInterrogate,
1271 .component.result.invoke_id = -3,
1272 .component.result.args.etsi.CCNRInterrogate.recall_mode = 1,
1273 },
1274
1275 /* CCBS-T */
1276 {
1277 .type = ROSE_COMP_TYPE_INVOKE,
1278 .component.invoke.operation = ROSE_ETSI_CCBS_T_Call,
1279 .component.invoke.invoke_id = 41,
1280 },
1281 {
1282 .type = ROSE_COMP_TYPE_INVOKE,
1283 .component.invoke.operation = ROSE_ETSI_CCBS_T_Suspend,
1284 .component.invoke.invoke_id = 42,
1285 },
1286 {
1287 .type = ROSE_COMP_TYPE_INVOKE,
1288 .component.invoke.operation = ROSE_ETSI_CCBS_T_Resume,
1289 .component.invoke.invoke_id = 43,
1290 },
1291 {
1292 .type = ROSE_COMP_TYPE_INVOKE,
1293 .component.invoke.operation = ROSE_ETSI_CCBS_T_RemoteUserFree,
1294 .component.invoke.invoke_id = 44,
1295 },
1296 {
1297 .type = ROSE_COMP_TYPE_INVOKE,
1298 .component.invoke.operation = ROSE_ETSI_CCBS_T_Available,
1299 .component.invoke.invoke_id = 45,
1300 },
1301
1302 {
1303 .type = ROSE_COMP_TYPE_INVOKE,
1304 .component.invoke.operation = ROSE_ETSI_CCBS_T_Request,
1305 .component.invoke.invoke_id = 46,
1306 .component.invoke.args.etsi.CCBS_T_Request.destination.number.plan = 8,
1307 .component.invoke.args.etsi.CCBS_T_Request.destination.number.length = 4,
1308 .component.invoke.args.etsi.CCBS_T_Request.destination.number.str = "6229",
1309 .component.invoke.args.etsi.CCBS_T_Request.q931ie.length = 2,
1310 .component.invoke.args.etsi.CCBS_T_Request.q931ie_contents = "LM",
1311 .component.invoke.args.etsi.CCBS_T_Request.retention_supported = 1,
1312 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator_present = 1,
1313 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator = 1,
1314 .component.invoke.args.etsi.CCBS_T_Request.originating.number.plan = 8,
1315 .component.invoke.args.etsi.CCBS_T_Request.originating.number.length = 4,
1316 .component.invoke.args.etsi.CCBS_T_Request.originating.number.str = "9864",
1317 },
1318 {
1319 .type = ROSE_COMP_TYPE_INVOKE,
1320 .component.invoke.operation = ROSE_ETSI_CCBS_T_Request,
1321 .component.invoke.invoke_id = 47,
1322 .component.invoke.args.etsi.CCBS_T_Request.destination.number.plan = 8,
1323 .component.invoke.args.etsi.CCBS_T_Request.destination.number.length = 4,
1324 .component.invoke.args.etsi.CCBS_T_Request.destination.number.str = "6229",
1325 .component.invoke.args.etsi.CCBS_T_Request.q931ie.length = 2,
1326 .component.invoke.args.etsi.CCBS_T_Request.q931ie_contents = "LM",
1327 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator_present = 1,
1328 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator = 1,
1329 .component.invoke.args.etsi.CCBS_T_Request.originating.number.plan = 8,
1330 .component.invoke.args.etsi.CCBS_T_Request.originating.number.length = 4,
1331 .component.invoke.args.etsi.CCBS_T_Request.originating.number.str = "9864",
1332 },
1333 {
1334 .type = ROSE_COMP_TYPE_INVOKE,
1335 .component.invoke.operation = ROSE_ETSI_CCBS_T_Request,
1336 .component.invoke.invoke_id = 48,
1337 .component.invoke.args.etsi.CCBS_T_Request.destination.number.plan = 8,
1338 .component.invoke.args.etsi.CCBS_T_Request.destination.number.length = 4,
1339 .component.invoke.args.etsi.CCBS_T_Request.destination.number.str = "6229",
1340 .component.invoke.args.etsi.CCBS_T_Request.q931ie.length = 2,
1341 .component.invoke.args.etsi.CCBS_T_Request.q931ie_contents = "LM",
1342 .component.invoke.args.etsi.CCBS_T_Request.originating.number.plan = 8,
1343 .component.invoke.args.etsi.CCBS_T_Request.originating.number.length = 4,
1344 .component.invoke.args.etsi.CCBS_T_Request.originating.number.str = "9864",
1345 },
1346 {
1347 .type = ROSE_COMP_TYPE_INVOKE,
1348 .component.invoke.operation = ROSE_ETSI_CCBS_T_Request,
1349 .component.invoke.invoke_id = 49,
1350 .component.invoke.args.etsi.CCBS_T_Request.destination.number.plan = 8,
1351 .component.invoke.args.etsi.CCBS_T_Request.destination.number.length = 4,
1352 .component.invoke.args.etsi.CCBS_T_Request.destination.number.str = "6229",
1353 .component.invoke.args.etsi.CCBS_T_Request.q931ie.length = 2,
1354 .component.invoke.args.etsi.CCBS_T_Request.q931ie_contents = "LM",
1355 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator_present = 1,
1356 .component.invoke.args.etsi.CCBS_T_Request.presentation_allowed_indicator = 1,
1357 },
1358 {
1359 .type = ROSE_COMP_TYPE_INVOKE,
1360 .component.invoke.operation = ROSE_ETSI_CCBS_T_Request,
1361 .component.invoke.invoke_id = 50,
1362 .component.invoke.args.etsi.CCBS_T_Request.destination.number.plan = 8,
1363 .component.invoke.args.etsi.CCBS_T_Request.destination.number.length = 4,
1364 .component.invoke.args.etsi.CCBS_T_Request.destination.number.str = "6229",
1365 .component.invoke.args.etsi.CCBS_T_Request.q931ie.length = 2,
1366 .component.invoke.args.etsi.CCBS_T_Request.q931ie_contents = "LM",
1367 },
1368 {
1369 .type = ROSE_COMP_TYPE_RESULT,
1370 .component.result.operation = ROSE_ETSI_CCBS_T_Request,
1371 .component.result.invoke_id = 51,
1372 .component.result.args.etsi.CCBS_T_Request.retention_supported = 1,
1373 },
1374
1375 /* CCNR-T */
1376 {
1377 .type = ROSE_COMP_TYPE_INVOKE,
1378 .component.invoke.operation = ROSE_ETSI_CCNR_T_Request,
1379 .component.invoke.invoke_id = 52,
1380 .component.invoke.args.etsi.CCNR_T_Request.destination.number.plan = 8,
1381 .component.invoke.args.etsi.CCNR_T_Request.destination.number.length = 4,
1382 .component.invoke.args.etsi.CCNR_T_Request.destination.number.str = "6229",
1383 .component.invoke.args.etsi.CCNR_T_Request.q931ie.length = 2,
1384 .component.invoke.args.etsi.CCNR_T_Request.q931ie_contents = "LM",
1385 },
1386 {
1387 .type = ROSE_COMP_TYPE_RESULT,
1388 .component.result.operation = ROSE_ETSI_CCNR_T_Request,
1389 .component.result.invoke_id = 53,
1390 .component.result.args.etsi.CCNR_T_Request.retention_supported = 1,
1391 },
1392
1393 /* MCID */
1394 {
1395 .type = ROSE_COMP_TYPE_INVOKE,
1396 .component.invoke.operation = ROSE_ETSI_MCIDRequest,
1397 .component.invoke.invoke_id = 54,
1398 },
1399
1400 /* MWI */
1401 {
1402 .type = ROSE_COMP_TYPE_INVOKE,
1403 .component.invoke.operation = ROSE_ETSI_MWIActivate,
1404 .component.invoke.invoke_id = 55,
1405 .component.invoke.args.etsi.MWIActivate.receiving_user_number.plan = 8,
1406 .component.invoke.args.etsi.MWIActivate.receiving_user_number.length = 4,
1407 .component.invoke.args.etsi.MWIActivate.receiving_user_number.str = "6229",
1408 .component.invoke.args.etsi.MWIActivate.basic_service = 3,
1409 },
1410 {
1411 .type = ROSE_COMP_TYPE_INVOKE,
1412 .component.invoke.operation = ROSE_ETSI_MWIActivate,
1413 .component.invoke.invoke_id = 56,
1414 .component.invoke.args.etsi.MWIActivate.receiving_user_number.plan = 8,
1415 .component.invoke.args.etsi.MWIActivate.receiving_user_number.length = 4,
1416 .component.invoke.args.etsi.MWIActivate.receiving_user_number.str = "6229",
1417 .component.invoke.args.etsi.MWIActivate.basic_service = 3,
1418 .component.invoke.args.etsi.MWIActivate.controlling_user_number.plan = 8,
1419 .component.invoke.args.etsi.MWIActivate.controlling_user_number.length = 4,
1420 .component.invoke.args.etsi.MWIActivate.controlling_user_number.str = "6229",
1421 .component.invoke.args.etsi.MWIActivate.number_of_messages_present = 1,
1422 .component.invoke.args.etsi.MWIActivate.number_of_messages = 7,
1423 .component.invoke.args.etsi.MWIActivate.controlling_user_provided_number.plan = 8,
1424 .component.invoke.args.etsi.MWIActivate.controlling_user_provided_number.length = 4,
1425 .component.invoke.args.etsi.MWIActivate.controlling_user_provided_number.str = "6229",
1426 .component.invoke.args.etsi.MWIActivate.time_present = 1,
1427 .component.invoke.args.etsi.MWIActivate.time.str = "19970621194530",
1428 .component.invoke.args.etsi.MWIActivate.message_id_present = 1,
1429 .component.invoke.args.etsi.MWIActivate.message_id.reference_number = 98,
1430 .component.invoke.args.etsi.MWIActivate.message_id.status = 1,
1431 .component.invoke.args.etsi.MWIActivate.mode_present = 1,
1432 .component.invoke.args.etsi.MWIActivate.mode = 2,
1433 },
1434
1435 {
1436 .type = ROSE_COMP_TYPE_INVOKE,
1437 .component.invoke.operation = ROSE_ETSI_MWIDeactivate,
1438 .component.invoke.invoke_id = 57,
1439 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.plan = 8,
1440 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.length = 4,
1441 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.str = "6229",
1442 .component.invoke.args.etsi.MWIDeactivate.basic_service = 3,
1443 },
1444 {
1445 .type = ROSE_COMP_TYPE_INVOKE,
1446 .component.invoke.operation = ROSE_ETSI_MWIDeactivate,
1447 .component.invoke.invoke_id = 58,
1448 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.plan = 8,
1449 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.length = 4,
1450 .component.invoke.args.etsi.MWIDeactivate.receiving_user_number.str = "6229",
1451 .component.invoke.args.etsi.MWIDeactivate.basic_service = 3,
1452 .component.invoke.args.etsi.MWIDeactivate.controlling_user_number.plan = 8,
1453 .component.invoke.args.etsi.MWIDeactivate.controlling_user_number.length = 4,
1454 .component.invoke.args.etsi.MWIDeactivate.controlling_user_number.str = "6229",
1455 .component.invoke.args.etsi.MWIDeactivate.mode_present = 1,
1456 .component.invoke.args.etsi.MWIDeactivate.mode = 2,
1457 },
1458
1459 {
1460 .type = ROSE_COMP_TYPE_INVOKE,
1461 .component.invoke.operation = ROSE_ETSI_MWIIndicate,
1462 .component.invoke.invoke_id = 59,
1463 },
1464 {
1465 .type = ROSE_COMP_TYPE_INVOKE,
1466 .component.invoke.operation = ROSE_ETSI_MWIIndicate,
1467 .component.invoke.invoke_id = 60,
1468 .component.invoke.args.etsi.MWIIndicate.controlling_user_number.plan = 8,
1469 .component.invoke.args.etsi.MWIIndicate.controlling_user_number.length = 4,
1470 .component.invoke.args.etsi.MWIIndicate.controlling_user_number.str = "6229",
1471 .component.invoke.args.etsi.MWIIndicate.basic_service_present = 1,
1472 .component.invoke.args.etsi.MWIIndicate.basic_service = 3,
1473 .component.invoke.args.etsi.MWIIndicate.number_of_messages_present = 1,
1474 .component.invoke.args.etsi.MWIIndicate.number_of_messages = 7,
1475 .component.invoke.args.etsi.MWIIndicate.controlling_user_provided_number.plan = 8,
1476 .component.invoke.args.etsi.MWIIndicate.controlling_user_provided_number.length = 4,
1477 .component.invoke.args.etsi.MWIIndicate.controlling_user_provided_number.str = "6229",
1478 .component.invoke.args.etsi.MWIIndicate.time_present = 1,
1479 .component.invoke.args.etsi.MWIIndicate.time.str = "19970621194530",
1480 .component.invoke.args.etsi.MWIIndicate.message_id_present = 1,
1481 .component.invoke.args.etsi.MWIIndicate.message_id.reference_number = 98,
1482 .component.invoke.args.etsi.MWIIndicate.message_id.status = 1,
1483 },
1484 /* *INDENT-ON* */
1485 };
1486
1487 static unsigned char rose_etsi_indefinite_len[] = {
1488 /* *INDENT-OFF* */
1489 /*
1490 * Context Specific/C [1 0x01] <A1> Len:24 <80>
1491 * Integer(2 0x02) <02> Len:1 <01>
1492 * <44>
1493 * Integer(2 0x02) <02> Len:1 <01>
1494 * <07>
1495 * Sequence/C(48 0x30) <30> Len:16 <80>
1496 * Enumerated(10 0x0A) <0A> Len:1 <01>
1497 * <01>
1498 * Enumerated(10 0x0A) <0A> Len:1 <01>
1499 * <05>
1500 * Sequence/C(48 0x30) <30> Len:6 <80>
1501 * Context Specific [4 0x04] <84> Len:4 <80>
1502 * <31 38 30 33>
1503 * 0x00, 0x00,
1504 * 0x00, 0x00,
1505 * NULL(5 0x05) <05> Len:0 <00>
1506 * 0x00, 0x00,
1507 * 0x00, 0x00
1508 */
1509 0x91,
1510 0xA1, 0x80,
1511 0x02, 0x01,
1512 0x44,
1513 0x02, 0x01,
1514 0x07,
1515 0x30, 0x80,
1516 0x0A, 0x01,
1517 0x01,
1518 0x0A, 0x01,
1519 0x05,
1520 0x30, 0x80,
1521 0x84, 0x80,
1522 0x31, 0x38, 0x30, 0x33,
1523 0x00, 0x00,
1524 0x00, 0x00,
1525 0x05, 0x00,
1526 0x00, 0x00,
1527 0x00, 0x00
1528 /* *INDENT-ON* */
1529 };
1530
1531 static unsigned char rose_etsi_unused_indefinite_len[] = {
1532 /* *INDENT-OFF* */
1533 /*
1534 * Context Specific/C [1 0x01] <A1> Len:24 <80>
1535 * Integer(2 0x02) <02> Len:1 <01>
1536 * <44>
1537 * Integer(2 0x02) <02> Len:1 <01>
1538 * <06> -- EctExecute
1539 * Sequence/C(48 0x30) <30> Len:16 <80>
1540 * Enumerated(10 0x0A) <0A> Len:1 <01>
1541 * <01>
1542 * Enumerated(10 0x0A) <0A> Len:1 <01>
1543 * <05>
1544 * Sequence/C(48 0x30) <30> Len:6 <80>
1545 * Context Specific [4 0x04] <84> Len:4 <80>
1546 * <31 38 30 33>
1547 * 0x00, 0x00,
1548 * 0x00, 0x00,
1549 * NULL(5 0x05) <05> Len:0 <00>
1550 * 0x00, 0x00,
1551 * 0x00, 0x00
1552 */
1553 0x91,
1554 0xA1, 0x80,
1555 0x02, 0x01,
1556 0x44,
1557 0x02, 0x01,
1558 0x06,
1559 0x30, 0x80,
1560 0x0A, 0x01,
1561 0x01,
1562 0x0A, 0x01,
1563 0x05,
1564 0x30, 0x80,
1565 0x84, 0x80,
1566 0x31, 0x38, 0x30, 0x33,
1567 0x00, 0x00,
1568 0x00, 0x00,
1569 0x05, 0x00,
1570 0x00, 0x00,
1571 0x00, 0x00
1572 /* *INDENT-ON* */
1573 };
1574
1575 static unsigned char rose_etsi_unused[] = {
1576 /* *INDENT-OFF* */
1577 /*
1578 * Context Specific/C [1 0x01] <A1> Len:24 <18>
1579 * Integer(2 0x02) <02> Len:1 <01>
1580 * <44>
1581 * Integer(2 0x02) <02> Len:1 <01>
1582 * <06> -- EctExecute
1583 * Sequence/C(48 0x30) <30> Len:16 <10>
1584 * Enumerated(10 0x0A) <0A> Len:1 <01>
1585 * <01>
1586 * Enumerated(10 0x0A) <0A> Len:1 <01>
1587 * <05>
1588 * Sequence/C(48 0x30) <30> Len:6 <06>
1589 * Context Specific [4 0x04] <84> Len:4 <04>
1590 * <31 38 30 33>
1591 * NULL(5 0x05) <05> Len:0 <00>
1592 */
1593 0x91,
1594 0xA1, 0x18,
1595 0x02, 0x01,
1596 0x44,
1597 0x02, 0x01,
1598 0x06,
1599 0x30, 0x10,
1600 0x0A, 0x01,
1601 0x01,
1602 0x0A, 0x01,
1603 0x05,
1604 0x30, 0x06,
1605 0x84, 0x04,
1606 0x31, 0x38, 0x30, 0x33,
1607 0x05, 0x00
1608 /* *INDENT-ON* */
1609 };
1610
1611
1612 static const struct rose_message rose_qsig_msgs[] = {
1613 /* *INDENT-OFF* */
1614 /* Q.SIG Name-Operations */
1615 {
1616 .type = ROSE_COMP_TYPE_INVOKE,
1617 .component.invoke.operation = ROSE_QSIG_CallingName,
1618 .component.invoke.invoke_id = 2,
1619 .component.invoke.args.qsig.CallingName.name.presentation = 1,
1620 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1621 .component.invoke.args.qsig.CallingName.name.length = 7,
1622 .component.invoke.args.qsig.CallingName.name.data = "Alphred",
1623 },
1624 {
1625 .type = ROSE_COMP_TYPE_INVOKE,
1626 .component.invoke.operation = ROSE_QSIG_CallingName,
1627 .component.invoke.invoke_id = 3,
1628 .component.invoke.args.qsig.CallingName.name.presentation = 1,
1629 .component.invoke.args.qsig.CallingName.name.char_set = 3,
1630 .component.invoke.args.qsig.CallingName.name.length = 7,
1631 .component.invoke.args.qsig.CallingName.name.data = "Alphred",
1632 },
1633 {
1634 .type = ROSE_COMP_TYPE_INVOKE,
1635 .component.invoke.operation = ROSE_QSIG_CallingName,
1636 .component.invoke.invoke_id = 4,
1637 .component.invoke.args.qsig.CallingName.name.presentation = 2,
1638 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1639 .component.invoke.args.qsig.CallingName.name.length = 7,
1640 .component.invoke.args.qsig.CallingName.name.data = "Alphred",
1641 },
1642 {
1643 .type = ROSE_COMP_TYPE_INVOKE,
1644 .component.invoke.operation = ROSE_QSIG_CallingName,
1645 .component.invoke.invoke_id = 5,
1646 .component.invoke.args.qsig.CallingName.name.presentation = 2,
1647 .component.invoke.args.qsig.CallingName.name.char_set = 3,
1648 .component.invoke.args.qsig.CallingName.name.length = 7,
1649 .component.invoke.args.qsig.CallingName.name.data = "Alphred",
1650 },
1651 {
1652 .type = ROSE_COMP_TYPE_INVOKE,
1653 .component.invoke.operation = ROSE_QSIG_CallingName,
1654 .component.invoke.invoke_id = 6,
1655 .component.invoke.args.qsig.CallingName.name.presentation = 3,
1656 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1657 },
1658 {
1659 .type = ROSE_COMP_TYPE_INVOKE,
1660 .component.invoke.operation = ROSE_QSIG_CallingName,
1661 .component.invoke.invoke_id = 7,
1662 .component.invoke.args.qsig.CallingName.name.presentation = 4,
1663 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1664 },
1665
1666 {
1667 .type = ROSE_COMP_TYPE_INVOKE,
1668 .component.invoke.operation = ROSE_QSIG_CalledName,
1669 .component.invoke.invoke_id = 8,
1670 .component.invoke.args.qsig.CallingName.name.presentation = 4,
1671 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1672 },
1673 {
1674 .type = ROSE_COMP_TYPE_INVOKE,
1675 .component.invoke.operation = ROSE_QSIG_ConnectedName,
1676 .component.invoke.invoke_id = 9,
1677 .component.invoke.args.qsig.CallingName.name.presentation = 4,
1678 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1679 },
1680 {
1681 .type = ROSE_COMP_TYPE_INVOKE,
1682 .component.invoke.operation = ROSE_QSIG_BusyName,
1683 .component.invoke.invoke_id = 10,
1684 .component.invoke.args.qsig.CallingName.name.presentation = 4,
1685 .component.invoke.args.qsig.CallingName.name.char_set = 1,
1686 },
1687
1688 /* Q.SIG SS-AOC-Operations */
1689 {
1690 .type = ROSE_COMP_TYPE_INVOKE,
1691 .component.invoke.operation = ROSE_QSIG_ChargeRequest,
1692 .component.invoke.invoke_id = 11,
1693 .component.invoke.args.qsig.ChargeRequest.num_records = 0,
1694 },
1695 {
1696 .type = ROSE_COMP_TYPE_INVOKE,
1697 .component.invoke.operation = ROSE_QSIG_ChargeRequest,
1698 .component.invoke.invoke_id = 12,
1699 .component.invoke.args.qsig.ChargeRequest.num_records = 1,
1700 .component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[0] = 3,
1701 },
1702 {
1703 .type = ROSE_COMP_TYPE_INVOKE,
1704 .component.invoke.operation = ROSE_QSIG_ChargeRequest,
1705 .component.invoke.invoke_id = 13,
1706 .component.invoke.args.qsig.ChargeRequest.num_records = 2,
1707 .component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[0] = 4,
1708 .component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[1] = 3,
1709 },
1710 {
1711 .type = ROSE_COMP_TYPE_RESULT,
1712 .component.result.operation = ROSE_QSIG_ChargeRequest,
1713 .component.result.invoke_id = 14,
1714 .component.result.args.qsig.ChargeRequest.advice_mode_combination = 3,
1715 },
1716
1717 {
1718 .type = ROSE_COMP_TYPE_INVOKE,
1719 .component.invoke.operation = ROSE_QSIG_GetFinalCharge,
1720 .component.invoke.invoke_id = 15,
1721 },
1722
1723 {
1724 .type = ROSE_COMP_TYPE_INVOKE,
1725 .component.invoke.operation = ROSE_QSIG_AocFinal,
1726 .component.invoke.invoke_id = 16,
1727 .component.invoke.args.qsig.AocFinal.type = 0,
1728 },
1729 {
1730 .type = ROSE_COMP_TYPE_INVOKE,
1731 .component.invoke.operation = ROSE_QSIG_AocFinal,
1732 .component.invoke.invoke_id = 17,
1733 .component.invoke.args.qsig.AocFinal.type = 1,
1734 },
1735 {
1736 .type = ROSE_COMP_TYPE_INVOKE,
1737 .component.invoke.operation = ROSE_QSIG_AocFinal,
1738 .component.invoke.invoke_id = 18,
1739 .component.invoke.args.qsig.AocFinal.type = 2,
1740 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
1741 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
1742 .component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
1743 },
1744 {
1745 .type = ROSE_COMP_TYPE_INVOKE,
1746 .component.invoke.operation = ROSE_QSIG_AocFinal,
1747 .component.invoke.invoke_id = 19,
1748 .component.invoke.args.qsig.AocFinal.type = 2,
1749 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
1750 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
1751 .component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
1752 .component.invoke.args.qsig.AocFinal.specific.billing_id_present = 1,
1753 .component.invoke.args.qsig.AocFinal.specific.billing_id = 2,
1754 },
1755 {
1756 .type = ROSE_COMP_TYPE_INVOKE,
1757 .component.invoke.operation = ROSE_QSIG_AocFinal,
1758 .component.invoke.invoke_id = 20,
1759 .component.invoke.args.qsig.AocFinal.type = 2,
1760 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
1761 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
1762 .component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
1763 .component.invoke.args.qsig.AocFinal.charging_association_present = 1,
1764 .component.invoke.args.qsig.AocFinal.charging_association.type = 0,
1765 .component.invoke.args.qsig.AocFinal.charging_association.id = 200,
1766 },
1767 {
1768 .type = ROSE_COMP_TYPE_INVOKE,
1769 .component.invoke.operation = ROSE_QSIG_AocFinal,
1770 .component.invoke.invoke_id = 21,
1771 .component.invoke.args.qsig.AocFinal.type = 2,
1772 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
1773 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
1774 .component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
1775 .component.invoke.args.qsig.AocFinal.specific.billing_id_present = 1,
1776 .component.invoke.args.qsig.AocFinal.specific.billing_id = 2,
1777 .component.invoke.args.qsig.AocFinal.charging_association_present = 1,
1778 .component.invoke.args.qsig.AocFinal.charging_association.type = 0,
1779 .component.invoke.args.qsig.AocFinal.charging_association.id = 200,
1780 },
1781 {
1782 .type = ROSE_COMP_TYPE_INVOKE,
1783 .component.invoke.operation = ROSE_QSIG_AocFinal,
1784 .component.invoke.invoke_id = 22,
1785 .component.invoke.args.qsig.AocFinal.type = 2,
1786 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
1787 .component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
1788 .component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
1789 .component.invoke.args.qsig.AocFinal.charging_association_present = 1,
1790 .component.invoke.args.qsig.AocFinal.charging_association.type = 1,
1791 .component.invoke.args.qsig.AocFinal.charging_association.number.plan = 4,
1792 .component.invoke.args.qsig.AocFinal.charging_association.number.length = 4,
1793 .component.invoke.args.qsig.AocFinal.charging_association.number.str = "1802",
1794 },
1795
1796 {
1797 .type = ROSE_COMP_TYPE_INVOKE,
1798 .component.invoke.operation = ROSE_QSIG_AocInterim,
1799 .component.invoke.invoke_id = 23,
1800 .component.invoke.args.qsig.AocInterim.type = 0,
1801 },
1802 {
1803 .type = ROSE_COMP_TYPE_INVOKE,
1804 .component.invoke.operation = ROSE_QSIG_AocInterim,
1805 .component.invoke.invoke_id = 24,
1806 .component.invoke.args.qsig.AocInterim.type = 1,
1807 },
1808 {
1809 .type = ROSE_COMP_TYPE_INVOKE,
1810 .component.invoke.operation = ROSE_QSIG_AocInterim,
1811 .component.invoke.invoke_id = 25,
1812 .component.invoke.args.qsig.AocInterim.type = 2,
1813 .component.invoke.args.qsig.AocInterim.specific.recorded.amount.currency = 800,
1814 .component.invoke.args.qsig.AocInterim.specific.recorded.amount.multiplier = 2,
1815 .component.invoke.args.qsig.AocInterim.specific.recorded.currency = "Rupies",
1816 },
1817 {
1818 .type = ROSE_COMP_TYPE_INVOKE,
1819 .component.invoke.operation = ROSE_QSIG_AocInterim,
1820 .component.invoke.invoke_id = 26,
1821 .component.invoke.args.qsig.AocInterim.type = 2,
1822 .component.invoke.args.qsig.AocInterim.specific.recorded.amount.currency = 800,
1823 .component.invoke.args.qsig.AocInterim.specific.recorded.amount.multiplier = 2,
1824 .component.invoke.args.qsig.AocInterim.specific.recorded.currency = "Rupies",
1825 .component.invoke.args.qsig.AocInterim.specific.billing_id_present = 1,
1826 .component.invoke.args.qsig.AocInterim.specific.billing_id = 2,
1827 },
1828
1829 {
1830 .type = ROSE_COMP_TYPE_INVOKE,
1831 .component.invoke.operation = ROSE_QSIG_AocRate,
1832 .component.invoke.invoke_id = 27,
1833 .component.invoke.args.qsig.AocRate.type = 0,
1834 },
1835 {
1836 .type = ROSE_COMP_TYPE_INVOKE,
1837 .component.invoke.operation = ROSE_QSIG_AocRate,
1838 .component.invoke.invoke_id = 28,
1839 .component.invoke.args.qsig.AocRate.type = 1,
1840 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1841 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1842 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 0,
1843 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.special_charging_code = 3,
1844 },
1845 {
1846 .type = ROSE_COMP_TYPE_INVOKE,
1847 .component.invoke.operation = ROSE_QSIG_AocRate,
1848 .component.invoke.invoke_id = 29,
1849 .component.invoke.args.qsig.AocRate.type = 1,
1850 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1851 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1852 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 1,
1853 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.currency = "Dollars",
1854 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.currency = 7,
1855 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.multiplier = 1,
1856 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.charging_type = 1,
1857 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.length = 8,
1858 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.scale = 4,
1859 },
1860 {
1861 .type = ROSE_COMP_TYPE_INVOKE,
1862 .component.invoke.operation = ROSE_QSIG_AocRate,
1863 .component.invoke.invoke_id = 30,
1864 .component.invoke.args.qsig.AocRate.type = 1,
1865 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1866 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1867 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 1,
1868 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.currency = "Dollars",
1869 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.currency = 7,
1870 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.multiplier = 1,
1871 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.charging_type = 1,
1872 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.length = 8,
1873 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.scale = 4,
1874 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity_present = 1,
1875 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity.length = 20,
1876 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity.scale = 3,
1877 },
1878 {
1879 .type = ROSE_COMP_TYPE_INVOKE,
1880 .component.invoke.operation = ROSE_QSIG_AocRate,
1881 .component.invoke.invoke_id = 31,
1882 .component.invoke.args.qsig.AocRate.type = 1,
1883 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1884 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1885 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 2,
1886 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.currency = "Euros",
1887 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.currency = 4,
1888 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
1889 },
1890 {
1891 .type = ROSE_COMP_TYPE_INVOKE,
1892 .component.invoke.operation = ROSE_QSIG_AocRate,
1893 .component.invoke.invoke_id = 32,
1894 .component.invoke.args.qsig.AocRate.type = 1,
1895 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1896 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1897 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 3,
1898 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.currency = "Yen",
1899 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.amount.currency = 300,
1900 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.amount.multiplier = 5,
1901 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.unit = 2,
1902 },
1903 {
1904 .type = ROSE_COMP_TYPE_INVOKE,
1905 .component.invoke.operation = ROSE_QSIG_AocRate,
1906 .component.invoke.invoke_id = 33,
1907 .component.invoke.args.qsig.AocRate.type = 1,
1908 .component.invoke.args.qsig.AocRate.currency_info.num_records = 2,
1909 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1910 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 2,
1911 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.currency = "Euros",
1912 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.currency = 4,
1913 .component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
1914 .component.invoke.args.qsig.AocRate.currency_info.list[1].charged_item = 4,
1915 .component.invoke.args.qsig.AocRate.currency_info.list[1].currency_type = 3,
1916 .component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.currency = "Yen",
1917 .component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.amount.currency = 300,
1918 .component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.amount.multiplier = 5,
1919 .component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.unit = 2,
1920 },
1921 {
1922 .type = ROSE_COMP_TYPE_INVOKE,
1923 .component.invoke.operation = ROSE_QSIG_AocRate,
1924 .component.invoke.invoke_id = 34,
1925 .component.invoke.args.qsig.AocRate.type = 1,
1926 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1927 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1928 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 4,
1929 },
1930 {
1931 .type = ROSE_COMP_TYPE_INVOKE,
1932 .component.invoke.operation = ROSE_QSIG_AocRate,
1933 .component.invoke.invoke_id = 35,
1934 .component.invoke.args.qsig.AocRate.type = 1,
1935 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1936 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1937 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 5,
1938 },
1939 {
1940 .type = ROSE_COMP_TYPE_INVOKE,
1941 .component.invoke.operation = ROSE_QSIG_AocRate,
1942 .component.invoke.invoke_id = 36,
1943 .component.invoke.args.qsig.AocRate.type = 1,
1944 .component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
1945 .component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
1946 .component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 6,
1947 },
1948
1949 {
1950 .type = ROSE_COMP_TYPE_INVOKE,
1951 .component.invoke.operation = ROSE_QSIG_AocComplete,
1952 .component.invoke.invoke_id = 37,
1953 .component.invoke.args.qsig.AocComplete.charged_user_number.plan = 4,
1954 .component.invoke.args.qsig.AocComplete.charged_user_number.length = 4,
1955 .component.invoke.args.qsig.AocComplete.charged_user_number.str = "8340",
1956 },
1957 {
1958 .type = ROSE_COMP_TYPE_INVOKE,
1959 .component.invoke.operation = ROSE_QSIG_AocComplete,
1960 .component.invoke.invoke_id = 38,
1961 .component.invoke.args.qsig.AocComplete.charged_user_number.plan = 4,
1962 .component.invoke.args.qsig.AocComplete.charged_user_number.length = 4,
1963 .component.invoke.args.qsig.AocComplete.charged_user_number.str = "8340",
1964 .component.invoke.args.qsig.AocComplete.charging_association_present = 1,
1965 .component.invoke.args.qsig.AocComplete.charging_association.type = 0,
1966 .component.invoke.args.qsig.AocComplete.charging_association.id = 8298,
1967 },
1968
1969 {
1970 .type = ROSE_COMP_TYPE_RESULT,
1971 .component.result.operation = ROSE_QSIG_AocComplete,
1972 .component.result.invoke_id = 39,
1973 .component.result.args.qsig.AocComplete.charging_option = 2,
1974 },
1975
1976 {
1977 .type = ROSE_COMP_TYPE_INVOKE,
1978 .component.invoke.operation = ROSE_QSIG_AocDivChargeReq,
1979 .component.invoke.invoke_id = 40,
1980 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.plan = 4,
1981 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.length = 4,
1982 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.str = "8340",
1983 .component.invoke.args.qsig.AocDivChargeReq.diversion_type = 3,
1984 },
1985 {
1986 .type = ROSE_COMP_TYPE_INVOKE,
1987 .component.invoke.operation = ROSE_QSIG_AocDivChargeReq,
1988 .component.invoke.invoke_id = 41,
1989 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.plan = 4,
1990 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.length = 4,
1991 .component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.str = "8340",
1992 .component.invoke.args.qsig.AocDivChargeReq.charging_association_present = 1,
1993 .component.invoke.args.qsig.AocDivChargeReq.charging_association.type = 0,
1994 .component.invoke.args.qsig.AocDivChargeReq.charging_association.id = 8298,
1995 .component.invoke.args.qsig.AocDivChargeReq.diversion_type = 3,
1996 },
1997
1998 /* Q.SIG Call-Transfer-Operations (CT) */
1999 {
2000 .type = ROSE_COMP_TYPE_INVOKE,
2001 .component.invoke.operation = ROSE_QSIG_CallTransferIdentify,
2002 .component.invoke.invoke_id = 42,
2003 },
2004 {
2005 .type = ROSE_COMP_TYPE_RESULT,
2006 .component.result.operation = ROSE_QSIG_CallTransferIdentify,
2007 .component.result.invoke_id = 43,
2008 .component.result.args.qsig.CallTransferIdentify.call_id = "2345",
2009 .component.result.args.qsig.CallTransferIdentify.rerouting_number.plan = 4,
2010 .component.result.args.qsig.CallTransferIdentify.rerouting_number.length = 4,
2011 .component.result.args.qsig.CallTransferIdentify.rerouting_number.str = "8340",
2012 },
2013
2014 {
2015 .type = ROSE_COMP_TYPE_INVOKE,
2016 .component.invoke.operation = ROSE_QSIG_CallTransferAbandon,
2017 .component.invoke.invoke_id = 44,
2018 },
2019
2020 {
2021 .type = ROSE_COMP_TYPE_INVOKE,
2022 .component.invoke.operation = ROSE_QSIG_CallTransferInitiate,
2023 .component.invoke.invoke_id = 45,
2024 .component.invoke.args.qsig.CallTransferInitiate.call_id = "2345",
2025 .component.invoke.args.qsig.CallTransferInitiate.rerouting_number.plan = 4,
2026 .component.invoke.args.qsig.CallTransferInitiate.rerouting_number.length = 4,
2027 .component.invoke.args.qsig.CallTransferInitiate.rerouting_number.str = "8340",
2028 },
2029 {
2030 .type = ROSE_COMP_TYPE_RESULT,
2031 .component.result.operation = ROSE_QSIG_CallTransferInitiate,
2032 .component.result.invoke_id = 46,
2033 },
2034
2035 {
2036 .type = ROSE_COMP_TYPE_INVOKE,
2037 .component.invoke.operation = ROSE_QSIG_CallTransferSetup,
2038 .component.invoke.invoke_id = 47,
2039 .component.invoke.args.qsig.CallTransferSetup.call_id = "23",
2040 },
2041 {
2042 .type = ROSE_COMP_TYPE_RESULT,
2043 .component.result.operation = ROSE_QSIG_CallTransferSetup,
2044 .component.result.invoke_id = 48,
2045 },
2046
2047 {
2048 .type = ROSE_COMP_TYPE_INVOKE,
2049 .component.invoke.operation = ROSE_QSIG_CallTransferActive,
2050 .component.invoke.invoke_id = 49,
2051 .component.invoke.args.qsig.CallTransferActive.connected.presentation = 1,
2052 },
2053 {
2054 .type = ROSE_COMP_TYPE_INVOKE,
2055 .component.invoke.operation = ROSE_QSIG_CallTransferActive,
2056 .component.invoke.invoke_id = 50,
2057 .component.invoke.args.qsig.CallTransferActive.connected.presentation = 1,
2058 .component.invoke.args.qsig.CallTransferActive.q931ie.length = 2,
2059 .component.invoke.args.qsig.CallTransferActive.q931ie_contents = "RT",
2060 },
2061 {
2062 .type = ROSE_COMP_TYPE_INVOKE,
2063 .component.invoke.operation = ROSE_QSIG_CallTransferActive,
2064 .component.invoke.invoke_id = 51,
2065 .component.invoke.args.qsig.CallTransferActive.connected.presentation = 1,
2066 .component.invoke.args.qsig.CallTransferActive.connected_name_present = 1,
2067 .component.invoke.args.qsig.CallTransferActive.connected_name.presentation = 1,
2068 .component.invoke.args.qsig.CallTransferActive.connected_name.char_set = 1,
2069 .component.invoke.args.qsig.CallTransferActive.connected_name.length = 7,
2070 .component.invoke.args.qsig.CallTransferActive.connected_name.data = "Alphred",
2071 },
2072 {
2073 .type = ROSE_COMP_TYPE_INVOKE,
2074 .component.invoke.operation = ROSE_QSIG_CallTransferActive,
2075 .component.invoke.invoke_id = 52,
2076 .component.invoke.args.qsig.CallTransferActive.connected.presentation = 1,
2077 .component.invoke.args.qsig.CallTransferActive.q931ie.length = 2,
2078 .component.invoke.args.qsig.CallTransferActive.q931ie_contents = "RT",
2079 .component.invoke.args.qsig.CallTransferActive.connected_name_present = 1,
2080 .component.invoke.args.qsig.CallTransferActive.connected_name.presentation = 1,
2081 .component.invoke.args.qsig.CallTransferActive.connected_name.char_set = 1,
2082 .component.invoke.args.qsig.CallTransferActive.connected_name.length = 7,
2083 .component.invoke.args.qsig.CallTransferActive.connected_name.data = "Alphred",
2084 },
2085
2086 {
2087 .type = ROSE_COMP_TYPE_INVOKE,
2088 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2089 .component.invoke.invoke_id = 53,
2090 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2091 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 0,
2092 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.screening_indicator = 3,
2093 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.plan = 4,
2094 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.length = 4,
2095 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.str = "8340",
2096 },
2097 {
2098 .type = ROSE_COMP_TYPE_INVOKE,
2099 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2100 .component.invoke.invoke_id = 54,
2101 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2102 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 1,
2103 },
2104 {
2105 .type = ROSE_COMP_TYPE_INVOKE,
2106 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2107 .component.invoke.invoke_id = 55,
2108 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2109 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 2,
2110 },
2111 {
2112 .type = ROSE_COMP_TYPE_INVOKE,
2113 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2114 .component.invoke.invoke_id = 56,
2115 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2116 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 3,
2117 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.screening_indicator = 3,
2118 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.plan = 4,
2119 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.length = 4,
2120 .component.invoke.args.qsig.CallTransferComplete.redirection.screened.number.str = "8340",
2121 },
2122 {
2123 .type = ROSE_COMP_TYPE_INVOKE,
2124 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2125 .component.invoke.invoke_id = 57,
2126 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2127 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 2,
2128 .component.invoke.args.qsig.CallTransferComplete.q931ie.length = 2,
2129 .component.invoke.args.qsig.CallTransferComplete.q931ie_contents = "RT",
2130 },
2131 {
2132 .type = ROSE_COMP_TYPE_INVOKE,
2133 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2134 .component.invoke.invoke_id = 58,
2135 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2136 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 2,
2137 .component.invoke.args.qsig.CallTransferComplete.redirection_name_present = 1,
2138 .component.invoke.args.qsig.CallTransferComplete.redirection_name.presentation = 1,
2139 .component.invoke.args.qsig.CallTransferComplete.redirection_name.char_set = 1,
2140 .component.invoke.args.qsig.CallTransferComplete.redirection_name.length = 7,
2141 .component.invoke.args.qsig.CallTransferComplete.redirection_name.data = "Alphred",
2142 },
2143 {
2144 .type = ROSE_COMP_TYPE_INVOKE,
2145 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2146 .component.invoke.invoke_id = 59,
2147 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2148 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 2,
2149 .component.invoke.args.qsig.CallTransferComplete.call_status = 1,
2150 },
2151 {
2152 .type = ROSE_COMP_TYPE_INVOKE,
2153 .component.invoke.operation = ROSE_QSIG_CallTransferComplete,
2154 .component.invoke.invoke_id = 60,
2155 .component.invoke.args.qsig.CallTransferComplete.end_designation = 1,
2156 .component.invoke.args.qsig.CallTransferComplete.redirection.presentation = 2,
2157 .component.invoke.args.qsig.CallTransferComplete.q931ie.length = 2,
2158 .component.invoke.args.qsig.CallTransferComplete.q931ie_contents = "RT",
2159 .component.invoke.args.qsig.CallTransferComplete.call_status = 1,
2160 },
2161
2162 {
2163 .type = ROSE_COMP_TYPE_INVOKE,
2164 .component.invoke.operation = ROSE_QSIG_CallTransferUpdate,
2165 .component.invoke.invoke_id = 61,
2166 .component.invoke.args.qsig.CallTransferUpdate.redirection.presentation = 2,
2167 },
2168 {
2169 .type = ROSE_COMP_TYPE_INVOKE,
2170 .component.invoke.operation = ROSE_QSIG_CallTransferUpdate,
2171 .component.invoke.invoke_id = 62,
2172 .component.invoke.args.qsig.CallTransferUpdate.redirection.presentation = 2,
2173 .component.invoke.args.qsig.CallTransferUpdate.redirection_name_present = 1,
2174 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.presentation = 1,
2175 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.char_set = 1,
2176 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.length = 7,
2177 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.data = "Alphred",
2178 },
2179 {
2180 .type = ROSE_COMP_TYPE_INVOKE,
2181 .component.invoke.operation = ROSE_QSIG_CallTransferUpdate,
2182 .component.invoke.invoke_id = 63,
2183 .component.invoke.args.qsig.CallTransferUpdate.redirection.presentation = 2,
2184 .component.invoke.args.qsig.CallTransferUpdate.q931ie.length = 2,
2185 .component.invoke.args.qsig.CallTransferUpdate.q931ie_contents = "RT",
2186 },
2187 {
2188 .type = ROSE_COMP_TYPE_INVOKE,
2189 .component.invoke.operation = ROSE_QSIG_CallTransferUpdate,
2190 .component.invoke.invoke_id = 64,
2191 .component.invoke.args.qsig.CallTransferUpdate.redirection.presentation = 2,
2192 .component.invoke.args.qsig.CallTransferUpdate.redirection_name_present = 1,
2193 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.presentation = 1,
2194 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.char_set = 1,
2195 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.length = 7,
2196 .component.invoke.args.qsig.CallTransferUpdate.redirection_name.data = "Alphred",
2197 .component.invoke.args.qsig.CallTransferUpdate.q931ie.length = 2,
2198 .component.invoke.args.qsig.CallTransferUpdate.q931ie_contents = "RT",
2199 },
2200
2201 {
2202 .type = ROSE_COMP_TYPE_INVOKE,
2203 .component.invoke.operation = ROSE_QSIG_SubaddressTransfer,
2204 .component.invoke.invoke_id = 65,
2205 .component.invoke.args.qsig.SubaddressTransfer.redirection_subaddress.type = 1,
2206 .component.invoke.args.qsig.SubaddressTransfer.redirection_subaddress.length = 4,
2207 .component.invoke.args.qsig.SubaddressTransfer.redirection_subaddress.u.nsap = "4356",
2208 },
2209
2210 /* Q.SIG Call-Diversion-Operations */
2211 {
2212 .type = ROSE_COMP_TYPE_INVOKE,
2213 .component.invoke.operation = ROSE_QSIG_ActivateDiversionQ,
2214 .component.invoke.invoke_id = 66,
2215 .component.invoke.args.qsig.ActivateDiversionQ.procedure = 1,
2216 .component.invoke.args.qsig.ActivateDiversionQ.basic_service = 3,
2217 .component.invoke.args.qsig.ActivateDiversionQ.diverted_to.number.plan = 4,
2218 .component.invoke.args.qsig.ActivateDiversionQ.diverted_to.number.length = 4,
2219 .component.invoke.args.qsig.ActivateDiversionQ.diverted_to.number.str = "8340",
2220 .component.invoke.args.qsig.ActivateDiversionQ.served_user_number.plan = 4,
2221 .component.invoke.args.qsig.ActivateDiversionQ.served_user_number.length = 4,
2222 .component.invoke.args.qsig.ActivateDiversionQ.served_user_number.str = "8340",
2223 .component.invoke.args.qsig.ActivateDiversionQ.activating_user_number.plan = 4,
2224 .component.invoke.args.qsig.ActivateDiversionQ.activating_user_number.length = 4,
2225 .component.invoke.args.qsig.ActivateDiversionQ.activating_user_number.str = "8340",
2226 },
2227 {
2228 .type = ROSE_COMP_TYPE_RESULT,
2229 .component.result.operation = ROSE_QSIG_ActivateDiversionQ,
2230 .component.result.invoke_id = 67,
2231 },
2232
2233 {
2234 .type = ROSE_COMP_TYPE_INVOKE,
2235 .component.invoke.operation = ROSE_QSIG_DeactivateDiversionQ,
2236 .component.invoke.invoke_id = 68,
2237 .component.invoke.args.qsig.DeactivateDiversionQ.procedure = 1,
2238 .component.invoke.args.qsig.DeactivateDiversionQ.basic_service = 3,
2239 .component.invoke.args.qsig.DeactivateDiversionQ.served_user_number.plan = 4,
2240 .component.invoke.args.qsig.DeactivateDiversionQ.served_user_number.length = 4,
2241 .component.invoke.args.qsig.DeactivateDiversionQ.served_user_number.str = "8340",
2242 .component.invoke.args.qsig.DeactivateDiversionQ.deactivating_user_number.plan = 4,
2243 .component.invoke.args.qsig.DeactivateDiversionQ.deactivating_user_number.length = 4,
2244 .component.invoke.args.qsig.DeactivateDiversionQ.deactivating_user_number.str = "8340",
2245 },
2246 {
2247 .type = ROSE_COMP_TYPE_RESULT,
2248 .component.result.operation = ROSE_QSIG_DeactivateDiversionQ,
2249 .component.result.invoke_id = 69,
2250 },
2251
2252 {
2253 .type = ROSE_COMP_TYPE_INVOKE,
2254 .component.invoke.operation = ROSE_QSIG_InterrogateDiversionQ,
2255 .component.invoke.invoke_id = 70,
2256 .component.invoke.args.qsig.InterrogateDiversionQ.procedure = 1,
2257 .component.invoke.args.qsig.InterrogateDiversionQ.basic_service = 3,
2258 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.plan = 4,
2259 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.length = 4,
2260 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.str = "8340",
2261 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.plan = 4,
2262 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.length = 4,
2263 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.str = "8340",
2264 },
2265 {
2266 .type = ROSE_COMP_TYPE_INVOKE,
2267 .component.invoke.operation = ROSE_QSIG_InterrogateDiversionQ,
2268 .component.invoke.invoke_id = 71,
2269 .component.invoke.args.qsig.InterrogateDiversionQ.procedure = 1,
2270 .component.invoke.args.qsig.InterrogateDiversionQ.basic_service = 0,/* default */
2271 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.plan = 4,
2272 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.length = 4,
2273 .component.invoke.args.qsig.InterrogateDiversionQ.served_user_number.str = "8340",
2274 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.plan = 4,
2275 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.length = 4,
2276 .component.invoke.args.qsig.InterrogateDiversionQ.interrogating_user_number.str = "8340",
2277 },
2278 {
2279 .type = ROSE_COMP_TYPE_RESULT,
2280 .component.result.operation = ROSE_QSIG_InterrogateDiversionQ,
2281 .component.result.invoke_id = 72,
2282 .component.result.args.qsig.InterrogateDiversionQ.num_records = 0,
2283 },
2284 {
2285 .type = ROSE_COMP_TYPE_RESULT,
2286 .component.result.operation = ROSE_QSIG_InterrogateDiversionQ,
2287 .component.result.invoke_id = 73,
2288 .component.result.args.qsig.InterrogateDiversionQ.num_records = 1,
2289 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.plan = 4,
2290 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.length = 4,
2291 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.str = "8340",
2292 .component.result.args.qsig.InterrogateDiversionQ.list[0].basic_service = 3,
2293 .component.result.args.qsig.InterrogateDiversionQ.list[0].procedure = 2,
2294 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.plan = 4,
2295 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.length = 4,
2296 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.str = "8340",
2297 .component.result.args.qsig.InterrogateDiversionQ.list[0].remote_enabled = 0,
2298 },
2299 {
2300 .type = ROSE_COMP_TYPE_RESULT,
2301 .component.result.operation = ROSE_QSIG_InterrogateDiversionQ,
2302 .component.result.invoke_id = 74,
2303 .component.result.args.qsig.InterrogateDiversionQ.num_records = 1,
2304 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.plan = 4,
2305 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.length = 4,
2306 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.str = "8340",
2307 .component.result.args.qsig.InterrogateDiversionQ.list[0].basic_service = 3,
2308 .component.result.args.qsig.InterrogateDiversionQ.list[0].procedure = 2,
2309 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.plan = 4,
2310 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.length = 4,
2311 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.str = "8340",
2312 .component.result.args.qsig.InterrogateDiversionQ.list[0].remote_enabled = 1,
2313 },
2314 {
2315 .type = ROSE_COMP_TYPE_RESULT,
2316 .component.result.operation = ROSE_QSIG_InterrogateDiversionQ,
2317 .component.result.invoke_id = 75,
2318 .component.result.args.qsig.InterrogateDiversionQ.num_records = 2,
2319 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.plan = 4,
2320 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.length = 4,
2321 .component.result.args.qsig.InterrogateDiversionQ.list[0].served_user_number.str = "8340",
2322 .component.result.args.qsig.InterrogateDiversionQ.list[0].basic_service = 3,
2323 .component.result.args.qsig.InterrogateDiversionQ.list[0].procedure = 2,
2324 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.plan = 4,
2325 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.length = 4,
2326 .component.result.args.qsig.InterrogateDiversionQ.list[0].diverted_to.number.str = "8340",
2327 .component.result.args.qsig.InterrogateDiversionQ.list[1].served_user_number.plan = 4,
2328 .component.result.args.qsig.InterrogateDiversionQ.list[1].served_user_number.length = 4,
2329 .component.result.args.qsig.InterrogateDiversionQ.list[1].served_user_number.str = "8340",
2330 .component.result.args.qsig.InterrogateDiversionQ.list[1].basic_service = 3,
2331 .component.result.args.qsig.InterrogateDiversionQ.list[1].procedure = 2,
2332 .component.result.args.qsig.InterrogateDiversionQ.list[1].diverted_to.number.plan = 4,
2333 .component.result.args.qsig.InterrogateDiversionQ.list[1].diverted_to.number.length = 4,
2334 .component.result.args.qsig.InterrogateDiversionQ.list[1].diverted_to.number.str = "8340",
2335 .component.result.args.qsig.InterrogateDiversionQ.list[1].remote_enabled = 1,
2336 },
2337
2338 {
2339 .type = ROSE_COMP_TYPE_INVOKE,
2340 .component.invoke.operation = ROSE_QSIG_CheckRestriction,
2341 .component.invoke.invoke_id = 76,
2342 .component.invoke.args.qsig.CheckRestriction.served_user_number.plan = 4,
2343 .component.invoke.args.qsig.CheckRestriction.served_user_number.length = 4,
2344 .component.invoke.args.qsig.CheckRestriction.served_user_number.str = "8340",
2345 .component.invoke.args.qsig.CheckRestriction.basic_service = 3,
2346 .component.invoke.args.qsig.CheckRestriction.diverted_to_number.plan = 4,
2347 .component.invoke.args.qsig.CheckRestriction.diverted_to_number.length = 4,
2348 .component.invoke.args.qsig.CheckRestriction.diverted_to_number.str = "8340",
2349 },
2350 {
2351 .type = ROSE_COMP_TYPE_RESULT,
2352 .component.result.operation = ROSE_QSIG_CheckRestriction,
2353 .component.result.invoke_id = 77,
2354 },
2355
2356 {
2357 .type = ROSE_COMP_TYPE_INVOKE,
2358 .component.invoke.operation = ROSE_QSIG_CallRerouting,
2359 .component.invoke.invoke_id = 78,
2360 .component.invoke.args.qsig.CallRerouting.rerouting_reason = 3,
2361 .component.invoke.args.qsig.CallRerouting.called.number.plan = 4,
2362 .component.invoke.args.qsig.CallRerouting.called.number.length = 4,
2363 .component.invoke.args.qsig.CallRerouting.called.number.str = "8340",
2364 .component.invoke.args.qsig.CallRerouting.diversion_counter = 5,
2365 .component.invoke.args.qsig.CallRerouting.q931ie.length = 2,
2366 .component.invoke.args.qsig.CallRerouting.q931ie_contents = "RT",
2367 .component.invoke.args.qsig.CallRerouting.last_rerouting.presentation = 1,
2368 .component.invoke.args.qsig.CallRerouting.subscription_option = 2,
2369 .component.invoke.args.qsig.CallRerouting.calling.presentation = 1,
2370 },
2371 {
2372 .type = ROSE_COMP_TYPE_INVOKE,
2373 .component.invoke.operation = ROSE_QSIG_CallRerouting,
2374 .component.invoke.invoke_id = 79,
2375 .component.invoke.args.qsig.CallRerouting.rerouting_reason = 3,
2376 .component.invoke.args.qsig.CallRerouting.original_rerouting_reason_present = 1,
2377 .component.invoke.args.qsig.CallRerouting.original_rerouting_reason = 2,
2378 .component.invoke.args.qsig.CallRerouting.called.number.plan = 4,
2379 .component.invoke.args.qsig.CallRerouting.called.number.length = 4,
2380 .component.invoke.args.qsig.CallRerouting.called.number.str = "8340",
2381 .component.invoke.args.qsig.CallRerouting.diversion_counter = 5,
2382 .component.invoke.args.qsig.CallRerouting.q931ie.length = 2,
2383 .component.invoke.args.qsig.CallRerouting.q931ie_contents = "RT",
2384 .component.invoke.args.qsig.CallRerouting.last_rerouting.presentation = 1,
2385 .component.invoke.args.qsig.CallRerouting.subscription_option = 2,
2386 .component.invoke.args.qsig.CallRerouting.calling_subaddress.type = 1,
2387 .component.invoke.args.qsig.CallRerouting.calling_subaddress.length = 4,
2388 .component.invoke.args.qsig.CallRerouting.calling_subaddress.u.nsap = "3253",
2389 .component.invoke.args.qsig.CallRerouting.calling.presentation = 1,
2390 .component.invoke.args.qsig.CallRerouting.calling_name_present = 1,
2391 .component.invoke.args.qsig.CallRerouting.calling_name.presentation = 4,
2392 .component.invoke.args.qsig.CallRerouting.calling_name.char_set = 1,
2393 .component.invoke.args.qsig.CallRerouting.original_called_present = 1,
2394 .component.invoke.args.qsig.CallRerouting.original_called.presentation = 2,
2395 .component.invoke.args.qsig.CallRerouting.redirecting_name_present = 1,
2396 .component.invoke.args.qsig.CallRerouting.redirecting_name.presentation = 4,
2397 .component.invoke.args.qsig.CallRerouting.redirecting_name.char_set = 1,
2398 .component.invoke.args.qsig.CallRerouting.original_called_name_present = 1,
2399 .component.invoke.args.qsig.CallRerouting.original_called_name.presentation = 4,
2400 .component.invoke.args.qsig.CallRerouting.original_called_name.char_set = 1,
2401 },
2402 {
2403 .type = ROSE_COMP_TYPE_RESULT,
2404 .component.result.operation = ROSE_QSIG_CallRerouting,
2405 .component.result.invoke_id = 80,
2406 },
2407
2408 {
2409 .type = ROSE_COMP_TYPE_INVOKE,
2410 .component.invoke.operation = ROSE_QSIG_DivertingLegInformation1,
2411 .component.invoke.invoke_id = 81,
2412 .component.invoke.args.qsig.DivertingLegInformation1.diversion_reason = 3,
2413 .component.invoke.args.qsig.DivertingLegInformation1.subscription_option = 1,
2414 .component.invoke.args.qsig.DivertingLegInformation1.nominated_number.plan = 4,
2415 .component.invoke.args.qsig.DivertingLegInformation1.nominated_number.length = 4,
2416 .component.invoke.args.qsig.DivertingLegInformation1.nominated_number.str = "8340",
2417 },
2418
2419 {
2420 .type = ROSE_COMP_TYPE_INVOKE,
2421 .component.invoke.operation = ROSE_QSIG_DivertingLegInformation2,
2422 .component.invoke.invoke_id = 82,
2423 .component.invoke.args.qsig.DivertingLegInformation2.diversion_counter = 6,
2424 .component.invoke.args.qsig.DivertingLegInformation2.diversion_reason = 3,
2425 },
2426 {
2427 .type = ROSE_COMP_TYPE_INVOKE,
2428 .component.invoke.operation = ROSE_QSIG_DivertingLegInformation2,
2429 .component.invoke.invoke_id = 83,
2430 .component.invoke.args.qsig.DivertingLegInformation2.diversion_counter = 6,
2431 .component.invoke.args.qsig.DivertingLegInformation2.diversion_reason = 3,
2432 .component.invoke.args.qsig.DivertingLegInformation2.original_diversion_reason_present = 1,
2433 .component.invoke.args.qsig.DivertingLegInformation2.original_diversion_reason = 2,
2434 .component.invoke.args.qsig.DivertingLegInformation2.diverting_present = 1,
2435 .component.invoke.args.qsig.DivertingLegInformation2.diverting.presentation = 2,
2436 .component.invoke.args.qsig.DivertingLegInformation2.original_called_present = 1,
2437 .component.invoke.args.qsig.DivertingLegInformation2.original_called.presentation = 2,
2438 .component.invoke.args.qsig.DivertingLegInformation2.redirecting_name_present = 1,
2439 .component.invoke.args.qsig.DivertingLegInformation2.redirecting_name.presentation = 4,
2440 .component.invoke.args.qsig.DivertingLegInformation2.redirecting_name.char_set = 1,
2441 .component.invoke.args.qsig.DivertingLegInformation2.original_called_name_present = 1,
2442 .component.invoke.args.qsig.DivertingLegInformation2.original_called_name.presentation = 4,
2443 .component.invoke.args.qsig.DivertingLegInformation2.original_called_name.char_set = 1,
2444 },
2445
2446 {
2447 .type = ROSE_COMP_TYPE_INVOKE,
2448 .component.invoke.operation = ROSE_QSIG_DivertingLegInformation3,
2449 .component.invoke.invoke_id = 84,
2450 .component.invoke.args.qsig.DivertingLegInformation3.presentation_allowed_indicator = 1,
2451 },
2452 {
2453 .type = ROSE_COMP_TYPE_INVOKE,
2454 .component.invoke.operation = ROSE_QSIG_DivertingLegInformation3,
2455 .component.invoke.invoke_id = 85,
2456 .component.invoke.args.qsig.DivertingLegInformation3.presentation_allowed_indicator = 1,
2457 .component.invoke.args.qsig.DivertingLegInformation3.redirection_name_present = 1,
2458 .component.invoke.args.qsig.DivertingLegInformation3.redirection_name.presentation = 4,
2459 .component.invoke.args.qsig.DivertingLegInformation3.redirection_name.char_set = 1,
2460 },
2461
2462 {
2463 .type = ROSE_COMP_TYPE_INVOKE,
2464 .component.invoke.operation = ROSE_QSIG_CfnrDivertedLegFailed,
2465 .component.invoke.invoke_id = 86,
2466 },
2467
2468 /* Q.SIG SS-CC-Operations */
2469 {
2470 .type = ROSE_COMP_TYPE_INVOKE,
2471 .component.invoke.operation = ROSE_QSIG_CcbsRequest,
2472 .component.invoke.invoke_id = 87,
2473 .component.invoke.args.qsig.CcbsRequest.number_a.presentation = 1,
2474 .component.invoke.args.qsig.CcbsRequest.number_b.plan = 4,
2475 .component.invoke.args.qsig.CcbsRequest.number_b.length = 4,
2476 .component.invoke.args.qsig.CcbsRequest.number_b.str = "8347",
2477 .component.invoke.args.qsig.CcbsRequest.q931ie.length = 2,
2478 .component.invoke.args.qsig.CcbsRequest.q931ie_contents = "AB",
2479 },
2480 {
2481 .type = ROSE_COMP_TYPE_INVOKE,
2482 .component.invoke.operation = ROSE_QSIG_CcbsRequest,
2483 .component.invoke.invoke_id = 88,
2484 .component.invoke.args.qsig.CcbsRequest.number_a.presentation = 1,
2485 .component.invoke.args.qsig.CcbsRequest.number_b.plan = 4,
2486 .component.invoke.args.qsig.CcbsRequest.number_b.length = 4,
2487 .component.invoke.args.qsig.CcbsRequest.number_b.str = "8347",
2488 .component.invoke.args.qsig.CcbsRequest.q931ie.length = 2,
2489 .component.invoke.args.qsig.CcbsRequest.q931ie_contents = "AB",
2490 .component.invoke.args.qsig.CcbsRequest.subaddr_a.type = 1,
2491 .component.invoke.args.qsig.CcbsRequest.subaddr_a.length = 4,
2492 .component.invoke.args.qsig.CcbsRequest.subaddr_a.u.nsap = "8765",
2493 .component.invoke.args.qsig.CcbsRequest.subaddr_b.type = 1,
2494 .component.invoke.args.qsig.CcbsRequest.subaddr_b.length = 4,
2495 .component.invoke.args.qsig.CcbsRequest.subaddr_b.u.nsap = "8765",
2496 .component.invoke.args.qsig.CcbsRequest.can_retain_service = 1,
2497 .component.invoke.args.qsig.CcbsRequest.retain_sig_connection_present = 1,
2498 .component.invoke.args.qsig.CcbsRequest.retain_sig_connection = 1,
2499 },
2500 {
2501 .type = ROSE_COMP_TYPE_RESULT,
2502 .component.result.operation = ROSE_QSIG_CcbsRequest,
2503 .component.result.invoke_id = 89,
2504 },
2505 {
2506 .type = ROSE_COMP_TYPE_RESULT,
2507 .component.result.operation = ROSE_QSIG_CcbsRequest,
2508 .component.result.invoke_id = 90,
2509 .component.result.args.qsig.CcbsRequest.no_path_reservation = 1,
2510 .component.result.args.qsig.CcbsRequest.retain_service = 1,
2511 },
2512
2513 {
2514 .type = ROSE_COMP_TYPE_INVOKE,
2515 .component.invoke.operation = ROSE_QSIG_CcnrRequest,
2516 .component.invoke.invoke_id = 91,
2517 .component.invoke.args.qsig.CcnrRequest.number_a.presentation = 1,
2518 .component.invoke.args.qsig.CcnrRequest.number_b.plan = 4,
2519 .component.invoke.args.qsig.CcnrRequest.number_b.length = 4,
2520 .component.invoke.args.qsig.CcnrRequest.number_b.str = "8347",
2521 .component.invoke.args.qsig.CcnrRequest.q931ie.length = 2,
2522 .component.invoke.args.qsig.CcnrRequest.q931ie_contents = "AB",
2523 },
2524 {
2525 .type = ROSE_COMP_TYPE_RESULT,
2526 .component.result.operation = ROSE_QSIG_CcnrRequest,
2527 .component.result.invoke_id = 92,
2528 },
2529
2530 {
2531 .type = ROSE_COMP_TYPE_INVOKE,
2532 .component.invoke.operation = ROSE_QSIG_CcCancel,
2533 .component.invoke.invoke_id = 93,
2534 .component.invoke.args.qsig.CcCancel.full_arg_present = 0,
2535 },
2536 {
2537 .type = ROSE_COMP_TYPE_INVOKE,
2538 .component.invoke.operation = ROSE_QSIG_CcCancel,
2539 .component.invoke.invoke_id = 94,
2540 .component.invoke.args.qsig.CcCancel.full_arg_present = 1,
2541 .component.invoke.args.qsig.CcCancel.number_a.plan = 4,
2542 .component.invoke.args.qsig.CcCancel.number_a.length = 4,
2543 .component.invoke.args.qsig.CcCancel.number_a.str = "8347",
2544 .component.invoke.args.qsig.CcCancel.number_b.plan = 4,
2545 .component.invoke.args.qsig.CcCancel.number_b.length = 4,
2546 .component.invoke.args.qsig.CcCancel.number_b.str = "8347",
2547 .component.invoke.args.qsig.CcCancel.q931ie.length = 2,
2548 .component.invoke.args.qsig.CcCancel.q931ie_contents = "AB",
2549 },
2550 {
2551 .type = ROSE_COMP_TYPE_INVOKE,
2552 .component.invoke.operation = ROSE_QSIG_CcCancel,
2553 .component.invoke.invoke_id = 95,
2554 .component.invoke.args.qsig.CcCancel.full_arg_present = 1,
2555 .component.invoke.args.qsig.CcCancel.number_a.plan = 4,
2556 .component.invoke.args.qsig.CcCancel.number_a.length = 4,
2557 .component.invoke.args.qsig.CcCancel.number_a.str = "8347",
2558 .component.invoke.args.qsig.CcCancel.number_b.plan = 4,
2559 .component.invoke.args.qsig.CcCancel.number_b.length = 4,
2560 .component.invoke.args.qsig.CcCancel.number_b.str = "8347",
2561 .component.invoke.args.qsig.CcCancel.q931ie.length = 2,
2562 .component.invoke.args.qsig.CcCancel.q931ie_contents = "AB",
2563 .component.invoke.args.qsig.CcCancel.subaddr_a.type = 1,
2564 .component.invoke.args.qsig.CcCancel.subaddr_a.length = 4,
2565 .component.invoke.args.qsig.CcCancel.subaddr_a.u.nsap = "8765",
2566 .component.invoke.args.qsig.CcCancel.subaddr_b.type = 1,
2567 .component.invoke.args.qsig.CcCancel.subaddr_b.length = 4,
2568 .component.invoke.args.qsig.CcCancel.subaddr_b.u.nsap = "8765",
2569 },
2570
2571 {
2572 .type = ROSE_COMP_TYPE_INVOKE,
2573 .component.invoke.operation = ROSE_QSIG_CcExecPossible,
2574 .component.invoke.invoke_id = 96,
2575 .component.invoke.args.qsig.CcExecPossible.full_arg_present = 0,
2576 },
2577
2578 {
2579 .type = ROSE_COMP_TYPE_INVOKE,
2580 .component.invoke.operation = ROSE_QSIG_CcPathReserve,
2581 .component.invoke.invoke_id = 97,
2582 },
2583 {
2584 .type = ROSE_COMP_TYPE_RESULT,
2585 .component.result.operation = ROSE_QSIG_CcPathReserve,
2586 .component.result.invoke_id = 98,
2587 },
2588
2589 {
2590 .type = ROSE_COMP_TYPE_INVOKE,
2591 .component.invoke.operation = ROSE_QSIG_CcRingout,
2592 .component.invoke.invoke_id = 99,
2593 },
2594 {
2595 .type = ROSE_COMP_TYPE_INVOKE,
2596 .component.invoke.operation = ROSE_QSIG_CcSuspend,
2597 .component.invoke.invoke_id = 100,
2598 },
2599 {
2600 .type = ROSE_COMP_TYPE_INVOKE,
2601 .component.invoke.operation = ROSE_QSIG_CcResume,
2602 .component.invoke.invoke_id = 101,
2603 },
2604
2605 /* Q.SIG SS-MWI-Operations */
2606 {
2607 .type = ROSE_COMP_TYPE_INVOKE,
2608 .component.invoke.operation = ROSE_QSIG_MWIActivate,
2609 .component.invoke.invoke_id = 102,
2610 .component.invoke.args.qsig.MWIActivate.served_user_number.plan = 4,
2611 .component.invoke.args.qsig.MWIActivate.served_user_number.length = 4,
2612 .component.invoke.args.qsig.MWIActivate.served_user_number.str = "9838",
2613 .component.invoke.args.qsig.MWIActivate.basic_service = 1,
2614 },
2615 {
2616 .type = ROSE_COMP_TYPE_INVOKE,
2617 .component.invoke.operation = ROSE_QSIG_MWIActivate,
2618 .component.invoke.invoke_id = 103,
2619 .component.invoke.args.qsig.MWIActivate.served_user_number.plan = 4,
2620 .component.invoke.args.qsig.MWIActivate.served_user_number.length = 4,
2621 .component.invoke.args.qsig.MWIActivate.served_user_number.str = "9838",
2622 .component.invoke.args.qsig.MWIActivate.basic_service = 1,
2623 .component.invoke.args.qsig.MWIActivate.msg_centre_id_present = 1,
2624 .component.invoke.args.qsig.MWIActivate.msg_centre_id.type = 0,
2625 .component.invoke.args.qsig.MWIActivate.msg_centre_id.u.integer = 532,
2626 },
2627 {
2628 .type = ROSE_COMP_TYPE_INVOKE,
2629 .component.invoke.operation = ROSE_QSIG_MWIActivate,
2630 .component.invoke.invoke_id = 104,
2631 .component.invoke.args.qsig.MWIActivate.served_user_number.plan = 4,
2632 .component.invoke.args.qsig.MWIActivate.served_user_number.length = 4,
2633 .component.invoke.args.qsig.MWIActivate.served_user_number.str = "9838",
2634 .component.invoke.args.qsig.MWIActivate.basic_service = 1,
2635 .component.invoke.args.qsig.MWIActivate.msg_centre_id_present = 1,
2636 .component.invoke.args.qsig.MWIActivate.msg_centre_id.type = 1,
2637 .component.invoke.args.qsig.MWIActivate.msg_centre_id.u.number.plan = 4,
2638 .component.invoke.args.qsig.MWIActivate.msg_centre_id.u.number.length = 4,
2639 .component.invoke.args.qsig.MWIActivate.msg_centre_id.u.number.str = "9838",
2640 },
2641 {
2642 .type = ROSE_COMP_TYPE_INVOKE,
2643 .component.invoke.operation = ROSE_QSIG_MWIActivate,
2644 .component.invoke.invoke_id = 105,
2645 .component.invoke.args.qsig.MWIActivate.served_user_number.plan = 4,
2646 .component.invoke.args.qsig.MWIActivate.served_user_number.length = 4,
2647 .component.invoke.args.qsig.MWIActivate.served_user_number.str = "9838",
2648 .component.invoke.args.qsig.MWIActivate.basic_service = 1,
2649 .component.invoke.args.qsig.MWIActivate.msg_centre_id_present = 1,
2650 .component.invoke.args.qsig.MWIActivate.msg_centre_id.type = 2,
2651 .component.invoke.args.qsig.MWIActivate.msg_centre_id.u.str = "123456",
2652 .component.invoke.args.qsig.MWIActivate.number_of_messages_present = 1,
2653 .component.invoke.args.qsig.MWIActivate.number_of_messages = 6548,
2654 .component.invoke.args.qsig.MWIActivate.originating_number.plan = 4,
2655 .component.invoke.args.qsig.MWIActivate.originating_number.length = 4,
2656 .component.invoke.args.qsig.MWIActivate.originating_number.str = "9838",
2657 .component.invoke.args.qsig.MWIActivate.timestamp_present = 1,
2658 .component.invoke.args.qsig.MWIActivate.timestamp.str = "19970621194530",
2659 .component.invoke.args.qsig.MWIActivate.priority_present = 1,
2660 .component.invoke.args.qsig.MWIActivate.priority = 7,
2661 },
2662 {
2663 .type = ROSE_COMP_TYPE_RESULT,
2664 .component.result.operation = ROSE_QSIG_MWIActivate,
2665 .component.result.invoke_id = 106,
2666 },
2667
2668 {
2669 .type = ROSE_COMP_TYPE_INVOKE,
2670 .component.invoke.operation = ROSE_QSIG_MWIDeactivate,
2671 .component.invoke.invoke_id = 107,
2672 .component.invoke.args.qsig.MWIDeactivate.served_user_number.plan = 4,
2673 .component.invoke.args.qsig.MWIDeactivate.served_user_number.length = 4,
2674 .component.invoke.args.qsig.MWIDeactivate.served_user_number.str = "9838",
2675 .component.invoke.args.qsig.MWIDeactivate.basic_service = 1,
2676 },
2677 {
2678 .type = ROSE_COMP_TYPE_INVOKE,
2679 .component.invoke.operation = ROSE_QSIG_MWIDeactivate,
2680 .component.invoke.invoke_id = 108,
2681 .component.invoke.args.qsig.MWIDeactivate.served_user_number.plan = 4,
2682 .component.invoke.args.qsig.MWIDeactivate.served_user_number.length = 4,
2683 .component.invoke.args.qsig.MWIDeactivate.served_user_number.str = "9838",
2684 .component.invoke.args.qsig.MWIDeactivate.basic_service = 1,
2685 .component.invoke.args.qsig.MWIDeactivate.msg_centre_id_present = 1,
2686 .component.invoke.args.qsig.MWIDeactivate.msg_centre_id.type = 0,
2687 .component.invoke.args.qsig.MWIDeactivate.msg_centre_id.u.integer = 532,
2688 },
2689 {
2690 .type = ROSE_COMP_TYPE_RESULT,
2691 .component.result.operation = ROSE_QSIG_MWIDeactivate,
2692 .component.result.invoke_id = 109,
2693 },
2694
2695 {
2696 .type = ROSE_COMP_TYPE_INVOKE,
2697 .component.invoke.operation = ROSE_QSIG_MWIInterrogate,
2698 .component.invoke.invoke_id = 110,
2699 .component.invoke.args.qsig.MWIInterrogate.served_user_number.plan = 4,
2700 .component.invoke.args.qsig.MWIInterrogate.served_user_number.length = 4,
2701 .component.invoke.args.qsig.MWIInterrogate.served_user_number.str = "9838",
2702 .component.invoke.args.qsig.MWIInterrogate.basic_service = 1,
2703 },
2704 {
2705 .type = ROSE_COMP_TYPE_INVOKE,
2706 .component.invoke.operation = ROSE_QSIG_MWIInterrogate,
2707 .component.invoke.invoke_id = 111,
2708 .component.invoke.args.qsig.MWIInterrogate.served_user_number.plan = 4,
2709 .component.invoke.args.qsig.MWIInterrogate.served_user_number.length = 4,
2710 .component.invoke.args.qsig.MWIInterrogate.served_user_number.str = "9838",
2711 .component.invoke.args.qsig.MWIInterrogate.basic_service = 1,
2712 .component.invoke.args.qsig.MWIInterrogate.msg_centre_id_present = 1,
2713 .component.invoke.args.qsig.MWIInterrogate.msg_centre_id.type = 0,
2714 .component.invoke.args.qsig.MWIInterrogate.msg_centre_id.u.integer = 532,
2715 },
2716 {
2717 .type = ROSE_COMP_TYPE_RESULT,
2718 .component.result.operation = ROSE_QSIG_MWIInterrogate,
2719 .component.result.invoke_id = 112,
2720 .component.result.args.qsig.MWIInterrogate.num_records = 1,
2721 .component.result.args.qsig.MWIInterrogate.list[0].basic_service = 1,
2722 },
2723 {
2724 .type = ROSE_COMP_TYPE_RESULT,
2725 .component.result.operation = ROSE_QSIG_MWIInterrogate,
2726 .component.result.invoke_id = 113,
2727 .component.result.args.qsig.MWIInterrogate.num_records = 2,
2728 .component.result.args.qsig.MWIInterrogate.list[0].basic_service = 1,
2729 .component.result.args.qsig.MWIInterrogate.list[0].msg_centre_id_present = 1,
2730 .component.result.args.qsig.MWIInterrogate.list[0].msg_centre_id.type = 0,
2731 .component.result.args.qsig.MWIInterrogate.list[0].msg_centre_id.u.integer = 987,
2732 .component.result.args.qsig.MWIInterrogate.list[0].number_of_messages_present = 1,
2733 .component.result.args.qsig.MWIInterrogate.list[0].number_of_messages = 6548,
2734 .component.result.args.qsig.MWIInterrogate.list[0].originating_number.plan = 4,
2735 .component.result.args.qsig.MWIInterrogate.list[0].originating_number.length = 4,
2736 .component.result.args.qsig.MWIInterrogate.list[0].originating_number.str = "9838",
2737 .component.result.args.qsig.MWIInterrogate.list[0].timestamp_present = 1,
2738 .component.result.args.qsig.MWIInterrogate.list[0].timestamp.str = "19970621194530",
2739 .component.result.args.qsig.MWIInterrogate.list[0].priority_present = 1,
2740 .component.result.args.qsig.MWIInterrogate.list[0].priority = 7,
2741 .component.result.args.qsig.MWIInterrogate.list[1].basic_service = 1,
2742 },
2743 /* *INDENT-ON* */
2744 };
2745
2746 static unsigned char rose_qsig_multiple_msg[] = {
2747 /* *INDENT-OFF* */
2748 /*
2749 * Context Specific/C [10 0x0A] <AA> Len:6 <06>
2750 * Context Specific [0 0x00] <80> Len:1 <01>
2751 * <00> - "~"
2752 * Context Specific [2 0x02] <82> Len:1 <01>
2753 * <00> - "~"
2754 * Context Specific [11 0x0B] <8B> Len:1 <01>
2755 * <00> - "~"
2756 * Context Specific/C [1 0x01] <A1> Len:16 <10>
2757 * Integer(2 0x02) <02> Len:1 <01>
2758 * <01> - "~"
2759 * Integer(2 0x02) <02> Len:1 <01>
2760 * <55> - "U"
2761 * Sequence/C(48 0x30) <30> Len:8 <08>
2762 * Context Specific [2 0x02] <82> Len:3 <03>
2763 * <01 30 40> - "~0@"
2764 * Context Specific [6 0x06] <86> Len:1 <01>
2765 * <01> - "~"
2766 * Context Specific/C [1 0x01] <A1> Len:19 <13>
2767 * Integer(2 0x02) <02> Len:1 <01>
2768 * <02> - "~"
2769 * Integer(2 0x02) <02> Len:1 <01>
2770 * <00> - "~"
2771 * Context Specific [0 0x00] <80> Len:11 <0B>
2772 * <4D 6F 64 65 6D 20 44 69-73 63 6F> - "Modem Disco"
2773 */
2774 0x9f,
2775 0xaa, 0x06,
2776 0x80, 0x01,
2777 0x00,
2778 0x82, 0x01,
2779 0x00,
2780 0x8b, 0x01,
2781 0x00,
2782 0xa1, 0x10,
2783 0x02, 0x01,
2784 0x01,
2785 0x02, 0x01,
2786 0x55,
2787 0x30, 0x08,
2788 0x82, 0x03,
2789 0x01, 0x30, 0x40,
2790 0x86, 0x01,
2791 0x01,
2792 0xa1, 0x13,
2793 0x02, 0x01,
2794 0x02,
2795 0x02, 0x01,
2796 0x00,
2797 0x80, 0x0b,
2798 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x44, 0x69, 0x73, 0x63, 0x6f
2799 /* *INDENT-ON* */
2800 };
2801
2802 static unsigned char rose_qsig_name_alt_encode_msg[] = {
2803 /* *INDENT-OFF* */
2804 /*
2805 * Context Specific/C [10 0x0A] <AA> Len:6 <06>
2806 * Context Specific [0 0x00] <80> Len:1 <01>
2807 * <00> - "~"
2808 * Context Specific [2 0x02] <82> Len:1 <01>
2809 * <00> - "~"
2810 * Context Specific [11 0x0B] <8B> Len:1 <01>
2811 * <00> - "~"
2812 * Context Specific/C [1 0x01] <A1> Len:21 <15>
2813 * Integer(2 0x02) <02> Len:1 <01>
2814 * <1D> - "~"
2815 * Integer(2 0x02) <02> Len:1 <01>
2816 * <00> - "~"
2817 * Sequence/C(48 0x30) <30> Len:13 <0D>
2818 * Context Specific [0 0x00] <80> Len:11 <0B>
2819 * <55 54 49 4C 49 54 59 20-54 45 4C> - "UTILITY TEL"
2820 */
2821 0x9F,
2822 0xAA, 0x06,
2823 0x80, 0x01,
2824 0x00,
2825 0x82, 0x01,
2826 0x00,
2827 0x8B, 0x01,
2828 0x00,
2829 0xA1, 0x15,
2830 0x02, 0x01,
2831 0x1D,
2832 0x02, 0x01,
2833 0x00,
2834 0x30, 0x0D,
2835 0x80, 0x0B,
2836 0x55, 0x54, 0x49, 0x4C, 0x49, 0x54, 0x59, 0x20, 0x54, 0x45, 0x4C
2837 /* *INDENT-ON* */
2838 };
2839
2840 static unsigned char rose_qsig_name_2nd_encode_msg[] = {
2841 /* *INDENT-OFF* */
2842 /*
2843 * Context Specific/C [10 0x0A] <AA> Len:6 <06>
2844 * Context Specific [0 0x00] <80> Len:1 <01>
2845 * <00> - "~"
2846 * Context Specific [2 0x02] <82> Len:1 <01>
2847 * <00> - "~"
2848 * Context Specific [11 0x0B] <8B> Len:1 <01>
2849 * <00> - "~"
2850 * Context Specific/C [1 0x01] <A1> Len:26 <1A>
2851 * Integer(2 0x02) <02> Len:1 <01>
2852 * <40> - "@"
2853 * OID(6 0x06) <06> Len:4 <04>
2854 * <2B 0C 09 00> - "+~~~"
2855 * Context Specific [0 0x00] <80> Len:15 <0F>
2856 * <4D 6F 64 65 6D 20 44 69-73 63 6F 42 61 6C 6C> - "Modem DiscoBall"
2857 */
2858 0x91,
2859 0xaa, 0x06,
2860 0x80, 0x01,
2861 0x00,
2862 0x82, 0x01,
2863 0x00,
2864 0x8b, 0x01,
2865 0x00,
2866 0xa1, 0x1a,
2867 0x02, 0x01,
2868 0x40,
2869 0x06, 0x04,
2870 0x2b, 0x0c, 0x09, 0x00,
2871 0x80, 0x0f,
2872 0x4d, 0x6f, 0x64, 0x65, 0x6d, 0x20, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x42, 0x61, 0x6c, 0x6c
2873 /* *INDENT-ON* */
2874 };
2875
2876
2877 static const struct rose_message rose_dms100_msgs[] = {
2878 /* *INDENT-OFF* */
2879 {
2880 .type = ROSE_COMP_TYPE_INVOKE,
2881 .component.invoke.operation = ROSE_DMS100_RLT_OperationInd,
2882 .component.invoke.invoke_id = ROSE_DMS100_RLT_OPERATION_IND,
2883 },
2884 {
2885 .type = ROSE_COMP_TYPE_RESULT,
2886 .component.result.operation = ROSE_DMS100_RLT_OperationInd,
2887 .component.result.invoke_id = ROSE_DMS100_RLT_OPERATION_IND,
2888 .component.result.args.dms100.RLT_OperationInd.call_id = 130363,
2889 },
2890
2891 {
2892 .type = ROSE_COMP_TYPE_INVOKE,
2893 .component.invoke.operation = ROSE_DMS100_RLT_ThirdParty,
2894 .component.invoke.invoke_id = ROSE_DMS100_RLT_THIRD_PARTY,
2895 .component.invoke.args.dms100.RLT_ThirdParty.call_id = 120047,
2896 .component.invoke.args.dms100.RLT_ThirdParty.reason = 1,
2897 },
2898 {
2899 .type = ROSE_COMP_TYPE_RESULT,
2900 .component.result.operation = ROSE_DMS100_RLT_ThirdParty,
2901 .component.result.invoke_id = ROSE_DMS100_RLT_THIRD_PARTY,
2902 },
2903 /* *INDENT-ON* */
2904 };
2905
2906
2907 static const struct rose_message rose_ni2_msgs[] = {
2908 /* *INDENT-OFF* */
2909 {
2910 .type = ROSE_COMP_TYPE_INVOKE,
2911 .component.invoke.operation = ROSE_NI2_InformationFollowing,
2912 .component.invoke.invoke_id = 1,
2913 .component.invoke.args.ni2.InformationFollowing.value = 7,
2914 },
2915
2916 {
2917 .type = ROSE_COMP_TYPE_INVOKE,
2918 .component.invoke.operation = ROSE_NI2_InitiateTransfer,
2919 .component.invoke.invoke_id = 2,
2920 .component.invoke.args.ni2.InitiateTransfer.call_reference = 5,
2921 },
2922 /* *INDENT-ON* */
2923 };
2924
2925 /* ------------------------------------------------------------------- */
2926
rose_pri_message(struct pri * ctrl,char * stuff)2927 static void rose_pri_message(struct pri *ctrl, char *stuff)
2928 {
2929 fprintf(stdout, "%s", stuff);
2930 }
2931
rose_pri_error(struct pri * ctrl,char * stuff)2932 static void rose_pri_error(struct pri *ctrl, char *stuff)
2933 {
2934 fprintf(stdout, "%s", stuff);
2935 fprintf(stderr, "%s", stuff);
2936 }
2937
2938 /*!
2939 * \internal
2940 * \brief Test ROSE encoding and decoding the given message.
2941 *
2942 * \param ctrl D channel controller for diagnostic messages or global options.
2943 * \param index Message number to report.
2944 * \param header Facility message header data to encode.
2945 * \param encode_msg Message data to encode.
2946 *
2947 * \return Nothing
2948 */
rose_test_msg(struct pri * ctrl,unsigned index,const struct fac_extension_header * header,const struct rose_message * encode_msg)2949 static void rose_test_msg(struct pri *ctrl, unsigned index,
2950 const struct fac_extension_header *header, const struct rose_message *encode_msg)
2951 {
2952 struct fac_extension_header decoded_header;
2953 struct rose_message decoded_msg;
2954 unsigned char *enc_pos;
2955 unsigned char *enc_end;
2956 const unsigned char *dec_pos;
2957 const unsigned char *dec_end;
2958
2959 static unsigned char buf[1024];
2960
2961 pri_message(ctrl, "\n\n");
2962 enc_end = buf + sizeof(buf);
2963 enc_pos = facility_encode_header(ctrl, buf, enc_end, header);
2964 if (!enc_pos) {
2965 pri_error(ctrl, "Error: Message:%u failed to encode header\n", index);
2966 } else {
2967 enc_pos = rose_encode(ctrl, enc_pos, enc_end, encode_msg);
2968 if (!enc_pos) {
2969 pri_error(ctrl, "Error: Message:%u failed to encode ROSE\n", index);
2970 } else {
2971 pri_message(ctrl, "Message %u encoded length is %u\n", index,
2972 (unsigned) (enc_pos - buf));
2973
2974 /* Clear the decoded message contents for comparison. */
2975 memset(&decoded_header, 0, sizeof(decoded_header));
2976 memset(&decoded_msg, 0, sizeof(decoded_msg));
2977
2978 dec_end = enc_pos;
2979 dec_pos = facility_decode_header(ctrl, buf, dec_end, &decoded_header);
2980 if (!dec_pos) {
2981 pri_error(ctrl, "Error: Message:%u failed to decode header\n", index);
2982 } else {
2983 while (dec_pos < dec_end) {
2984 dec_pos = rose_decode(ctrl, dec_pos, dec_end, &decoded_msg);
2985 if (!dec_pos) {
2986 pri_error(ctrl, "Error: Message:%u failed to decode ROSE\n",
2987 index);
2988 break;
2989 } else {
2990 if (header
2991 && memcmp(header, &decoded_header, sizeof(decoded_header))) {
2992 pri_error(ctrl, "Error: Message:%u Header did not match\n",
2993 index);
2994 }
2995 if (memcmp(encode_msg, &decoded_msg, sizeof(decoded_msg))) {
2996 pri_error(ctrl, "Error: Message:%u ROSE did not match\n",
2997 index);
2998 }
2999 }
3000 }
3001 }
3002 }
3003 }
3004 pri_message(ctrl, "\n\n"
3005 "************************************************************\n");
3006 }
3007
3008 /*!
3009 * \internal
3010 * \brief Test ROSE decoding messages of unusual encodings.
3011 *
3012 * \param ctrl D channel controller for diagnostic messages or global options.
3013 * \param name Test name for the encoded message.
3014 * \param msg_buf Encoded message to decode.
3015 * \param msg_len Length of encoded message buffer.
3016 *
3017 * \return Nothing
3018 */
rose_test_exception(struct pri * ctrl,const char * name,const unsigned char * msg,size_t msg_len)3019 static void rose_test_exception(struct pri *ctrl, const char *name,
3020 const unsigned char *msg, size_t msg_len)
3021 {
3022 const unsigned char *pos;
3023 const unsigned char *end;
3024 struct fac_extension_header header;
3025 struct rose_message decoded_msg;
3026
3027 pri_message(ctrl, "\n\n"
3028 "%s test: Message encoded length is %u\n", name, (unsigned) msg_len);
3029
3030 pos = msg;
3031 end = msg + msg_len;
3032 pos = facility_decode_header(ctrl, pos, end, &header);
3033 if (!pos) {
3034 pri_error(ctrl, "Error: %s test: Message failed to decode header\n", name);
3035 } else {
3036 while (pos < end) {
3037 pos = rose_decode(ctrl, pos, end, &decoded_msg);
3038 if (!pos) {
3039 pri_error(ctrl, "Error: %s test: Message failed to decode ROSE\n", name);
3040 break;
3041 }
3042 }
3043 }
3044
3045 pri_message(ctrl, "\n\n"
3046 "************************************************************\n");
3047 }
3048
3049 /*!
3050 * \brief ROSE encode/decode test program.
3051 *
3052 * \param argc Program argument count.
3053 * \param argv Program argument string array.
3054 *
3055 * \retval 0 on success.
3056 * \retval Nonzero on error.
3057 */
main(int argc,char * argv[])3058 int main(int argc, char *argv[])
3059 {
3060 unsigned index;
3061 unsigned offset;
3062 const char *str;
3063 static struct pri dummy_ctrl;
3064
3065 pri_set_message(rose_pri_message);
3066 pri_set_error(rose_pri_error);
3067
3068 memset(&dummy_ctrl, 0, sizeof(dummy_ctrl));
3069 dummy_ctrl.debug = PRI_DEBUG_APDU;
3070
3071 /* For sanity specify what version of libpri we are testing. */
3072 pri_error(&dummy_ctrl, "libpri version tested: %s\n", pri_get_version());
3073
3074 offset = 0;
3075 pri_message(&dummy_ctrl, "Encode/decode message(s)\n");
3076 if (argc <= 1) {
3077 dummy_ctrl.switchtype = PRI_SWITCH_EUROISDN_E1;
3078 for (index = 0; index < ARRAY_LEN(rose_etsi_msgs); ++index) {
3079 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3080 &rose_etsi_msgs[index]);
3081 }
3082 offset += ARRAY_LEN(rose_etsi_msgs);
3083
3084 dummy_ctrl.switchtype = PRI_SWITCH_QSIG;
3085 for (index = 0; index < ARRAY_LEN(rose_qsig_msgs); ++index) {
3086 rose_test_msg(&dummy_ctrl, index + offset,
3087 &fac_headers[index % ARRAY_LEN(fac_headers)], &rose_qsig_msgs[index]);
3088 }
3089 offset += ARRAY_LEN(rose_qsig_msgs);
3090
3091 dummy_ctrl.switchtype = PRI_SWITCH_DMS100;
3092 for (index = 0; index < ARRAY_LEN(rose_dms100_msgs); ++index) {
3093 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3094 &rose_dms100_msgs[index]);
3095 }
3096 offset += ARRAY_LEN(rose_dms100_msgs);
3097
3098 dummy_ctrl.switchtype = PRI_SWITCH_NI2;
3099 for (index = 0; index < ARRAY_LEN(rose_ni2_msgs); ++index) {
3100 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3101 &rose_ni2_msgs[index]);
3102 }
3103 //offset += ARRAY_LEN(rose_ni2_msgs);
3104 } else {
3105 index = atoi(argv[1]);
3106
3107 if (index < ARRAY_LEN(rose_etsi_msgs)) {
3108 dummy_ctrl.switchtype = PRI_SWITCH_EUROISDN_E1;
3109 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3110 &rose_etsi_msgs[index]);
3111 return 0;
3112 }
3113 offset += ARRAY_LEN(rose_etsi_msgs);
3114 index -= ARRAY_LEN(rose_etsi_msgs);
3115
3116 if (index < ARRAY_LEN(rose_qsig_msgs)) {
3117 dummy_ctrl.switchtype = PRI_SWITCH_QSIG;
3118 rose_test_msg(&dummy_ctrl, index + offset,
3119 &fac_headers[index % ARRAY_LEN(fac_headers)], &rose_qsig_msgs[index]);
3120 return 0;
3121 }
3122 offset += ARRAY_LEN(rose_qsig_msgs);
3123 index -= ARRAY_LEN(rose_qsig_msgs);
3124
3125 if (index < ARRAY_LEN(rose_dms100_msgs)) {
3126 dummy_ctrl.switchtype = PRI_SWITCH_DMS100;
3127 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3128 &rose_dms100_msgs[index]);
3129 return 0;
3130 }
3131 offset += ARRAY_LEN(rose_dms100_msgs);
3132 index -= ARRAY_LEN(rose_dms100_msgs);
3133
3134 if (index < ARRAY_LEN(rose_ni2_msgs)) {
3135 dummy_ctrl.switchtype = PRI_SWITCH_NI2;
3136 rose_test_msg(&dummy_ctrl, index + offset, &fac_headers[0],
3137 &rose_ni2_msgs[index]);
3138 return 0;
3139 }
3140 //offset += ARRAY_LEN(rose_ni2_msgs);
3141 //index -= ARRAY_LEN(rose_ni2_msgs);
3142
3143 fprintf(stderr, "Invalid option\n");
3144 return 0;
3145 }
3146
3147 /* ------------------------------------------------------------------- */
3148
3149 pri_message(&dummy_ctrl, "\n\n"
3150 "Decode unusually encoded messages\n");
3151
3152 dummy_ctrl.switchtype = PRI_SWITCH_EUROISDN_E1;
3153
3154 rose_test_exception(&dummy_ctrl, "Indefinite length", rose_etsi_indefinite_len,
3155 sizeof(rose_etsi_indefinite_len));
3156
3157 rose_test_exception(&dummy_ctrl, "Unused components (indefinite length)",
3158 rose_etsi_unused_indefinite_len, sizeof(rose_etsi_unused_indefinite_len));
3159
3160 rose_test_exception(&dummy_ctrl, "Unused components", rose_etsi_unused,
3161 sizeof(rose_etsi_unused));
3162
3163 dummy_ctrl.switchtype = PRI_SWITCH_QSIG;
3164
3165 rose_test_exception(&dummy_ctrl, "Multiple component messages",
3166 rose_qsig_multiple_msg, sizeof(rose_qsig_multiple_msg));
3167
3168 rose_test_exception(&dummy_ctrl, "Alternate name encoded messages",
3169 rose_qsig_name_alt_encode_msg, sizeof(rose_qsig_name_alt_encode_msg));
3170
3171 rose_test_exception(&dummy_ctrl, "2nd edition name encoded messages",
3172 rose_qsig_name_2nd_encode_msg, sizeof(rose_qsig_name_2nd_encode_msg));
3173
3174 /* ------------------------------------------------------------------- */
3175
3176 pri_message(&dummy_ctrl, "\n\n"
3177 "List of operation codes:\n");
3178 for (index = 0; index < ROSE_Num_Operation_Codes; ++index) {
3179 str = rose_operation2str(index);
3180 if (!strncmp(str, "Invalid code:", 13)) {
3181 pri_error(&dummy_ctrl, "%d: %s\n", index, str);
3182 } else {
3183 pri_message(&dummy_ctrl, "%d: %s\n", index, str);
3184 }
3185 }
3186 pri_message(&dummy_ctrl, "\n\n"
3187 "************************************************************\n");
3188
3189 /* ------------------------------------------------------------------- */
3190
3191 pri_message(&dummy_ctrl, "\n\n"
3192 "List of error codes:\n");
3193 for (index = 0; index < ROSE_ERROR_Num_Codes; ++index) {
3194 str = rose_error2str(index);
3195 if (!strncmp(str, "Invalid code:", 13)) {
3196 pri_error(&dummy_ctrl, "%d: %s\n", index, str);
3197 } else {
3198 pri_message(&dummy_ctrl, "%d: %s\n", index, str);
3199 }
3200 }
3201 pri_message(&dummy_ctrl, "\n\n"
3202 "************************************************************\n");
3203
3204 /* ------------------------------------------------------------------- */
3205
3206 pri_message(&dummy_ctrl, "\n\n");
3207 pri_message(&dummy_ctrl, "sizeof(struct rose_message) = %u\n",
3208 (unsigned) sizeof(struct rose_message));
3209 pri_message(&dummy_ctrl, "sizeof(struct rose_msg_invoke) = %u\n",
3210 (unsigned) sizeof(struct rose_msg_invoke));
3211 pri_message(&dummy_ctrl, "sizeof(struct rose_msg_result) = %u\n",
3212 (unsigned) sizeof(struct rose_msg_result));
3213 pri_message(&dummy_ctrl, "sizeof(struct rose_msg_error) = %u\n",
3214 (unsigned) sizeof(struct rose_msg_error));
3215 pri_message(&dummy_ctrl, "sizeof(struct rose_msg_reject) = %u\n",
3216 (unsigned) sizeof(struct rose_msg_reject));
3217 pri_message(&dummy_ctrl, "sizeof(union rose_msg_invoke_args) = %u\n",
3218 (unsigned) sizeof(union rose_msg_invoke_args));
3219 pri_message(&dummy_ctrl, "sizeof(union rose_msg_result_args) = %u\n",
3220 (unsigned) sizeof(union rose_msg_result_args));
3221
3222 pri_message(&dummy_ctrl, "\n");
3223 pri_message(&dummy_ctrl, "sizeof(struct roseQsigForwardingList) = %u\n",
3224 (unsigned) sizeof(struct roseQsigForwardingList));
3225
3226 pri_message(&dummy_ctrl, "\n");
3227 pri_message(&dummy_ctrl, "sizeof(struct roseQsigCallRerouting_ARG) = %u\n",
3228 (unsigned) sizeof(struct roseQsigCallRerouting_ARG));
3229 pri_message(&dummy_ctrl, "sizeof(struct roseQsigAocRateArg_ARG) = %u\n",
3230 (unsigned) sizeof(struct roseQsigAocRateArg_ARG));
3231 pri_message(&dummy_ctrl, "sizeof(struct roseQsigMWIInterrogateRes) = %u\n",
3232 (unsigned) sizeof(struct roseQsigMWIInterrogateRes));
3233
3234 pri_message(&dummy_ctrl, "\n");
3235 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiForwardingList) = %u\n",
3236 (unsigned) sizeof(struct roseEtsiForwardingList));
3237 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiServedUserNumberList) = %u\n",
3238 (unsigned) sizeof(struct roseEtsiServedUserNumberList));
3239 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiCallDetailsList) = %u\n",
3240 (unsigned) sizeof(struct roseEtsiCallDetailsList));
3241
3242 pri_message(&dummy_ctrl, "\n");
3243 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiCallRerouting_ARG) = %u\n",
3244 (unsigned) sizeof(struct roseEtsiCallRerouting_ARG));
3245 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiDiversionInformation_ARG) = %u\n",
3246 (unsigned) sizeof(struct roseEtsiDiversionInformation_ARG));
3247 pri_message(&dummy_ctrl, "sizeof(struct roseEtsiAOCSCurrencyInfoList) = %u\n",
3248 (unsigned) sizeof(struct roseEtsiAOCSCurrencyInfoList));
3249
3250 /* ------------------------------------------------------------------- */
3251
3252 return 0;
3253 }
3254
3255 /* ------------------------------------------------------------------- */
3256 /* end rosetest.c */
3257