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