File: isup.h

package info (click to toggle)
libss7 2.0.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 720 kB
  • sloc: ansic: 9,563; makefile: 163; sh: 62
file content (365 lines) | stat: -rw-r--r-- 12,903 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
/*
 * libss7: An implementation of Signalling System 7
 *
 * Written by Matthew Fredrickson <creslin@digium.com>
 *
 * scheduling routines taken from libpri by Mark Spencer <markster@digium.com>
 *
 * Copyright (C) 2006-2008, Digium, Inc
 * All Rights Reserved.
 */

/*
 * See http://www.asterisk.org for more information about
 * the Asterisk project. Please do not directly contact
 * any of the maintainers of this project for assistance;
 * the project provides a web site, mailing lists and IRC
 * channels for your use.
 *
 * This program is free software, distributed under the terms of
 * the GNU General Public License Version 2 as published by the
 * Free Software Foundation. See the LICENSE file included with
 * this program for more details.
 *
 * In addition, when this program is distributed with Asterisk in
 * any form that would qualify as a 'combined work' or as a
 * 'derivative work' (but not mere aggregation), you can redistribute
 * and/or modify the combination under the terms of the license
 * provided with that copy of Asterisk, instead of the license
 * terms granted here.
 */

#ifndef _SS7_ISUP_H
#define _SS7_ISUP_H

#include "ss7_internal.h"

/* ISUP messages */
#define ISUP_IAM	0x01	/*!< Initial address */
#define ISUP_SAM	0x02	/*!< Subsequent address */
#define ISUP_INR	0x03	/*!< Information request (national use) */
#define ISUP_INF	0x04	/*!< Information (national use) */
#define ISUP_COT	0x05	/*!< Continuity */
#define ISUP_ACM	0x06	/*!< Address complete */
#define ISUP_CON	0x07	/*!< Connect */
#define ISUP_FOT	0x08	/*!< Forward transfer */
#define ISUP_ANM	0x09	/*!< Answer */
#define ISUP_REL	0x0c	/*!< Release */
#define ISUP_SUS	0x0d	/*!< Suspend */
#define ISUP_RES	0x0e	/*!< Resume */
#define ISUP_RLC	0x10	/*!< Release complete */
#define ISUP_CCR	0x11	/*!< Continuity check request */
#define ISUP_RSC	0x12	/*!< Reset circuit */
#define ISUP_BLO	0x13	/*!< Blocking */
#define ISUP_UBL	0x14	/*!< Unblocking */
#define ISUP_BLA	0x15	/*!< Blocking acknowledgement */
#define ISUP_UBA	0x16	/*!< Unblocking acknowledgement */
#define ISUP_GRS	0x17	/*!< Circuit group reset */
#define ISUP_CGB	0x18	/*!< Circuit group blocking */
#define ISUP_CGU	0x19	/*!< Circuit group unblocking */
#define ISUP_CGBA	0x1a	/*!< Circuit group blocking acknowledgement */
#define ISUP_CGUA	0x1b	/*!< Circuit group unblocking acknowledgement */
#define ISUP_CMR	0x1c	/*!< Reserved (used in 1988 version) */
#define ISUP_CMC	0x1d	/*!< Reserved (used in 1988 version) */
#define ISUP_CMRJ	0x1e	/*!< Reserved (used in 1988 version) */
#define ISUP_FAR	0x1f	/*!< Facility request */
#define ISUP_FAA	0x20	/*!< Facility accepted */
#define ISUP_FRJ	0x21	/*!< Facility reject */
#define ISUP_FAD	0x22	/*!< Reserved (used in 1984 version) */
#define ISUP_FAI	0x23	/*!< Reserved (used in 1984 version) */
#define ISUP_LPA	0x24	/*!< Loop back acknowledgement (national use) */
#define ISUP_CSVR	0x25	/*!< Reserved (used in 1984 version) */
#define ISUP_CSVS	0x26	/*!< Reserved (used in 1984 version) */
#define ISUP_DRS	0x27	/*!< Reserved (used in 1988 version) */
#define ISUP_PAM	0x28	/*!< Pass-along (national use) */
#define ISUP_GRA	0x29	/*!< Circuit group reset acknowledgement */
#define ISUP_CQM	0x2a	/*!< Circuit group query (national use) */
#define ISUP_CQR	0x2b	/*!< Circuit group query response (national use) */
#define ISUP_CPG	0x2c	/*!< Call progress */
#define ISUP_USR	0x2d	/*!< User-to-user information */
#define ISUP_UCIC	0x2e	/*!< Unequipped CIC (national use) */
#define ISUP_CFN	0x2f	/*!< Confusion */
#define ISUP_OLM	0x30	/*!< Overload (national use) */
#define ISUP_CRG	0x31	/*!< Charge information (national use) */
#define ISUP_FAC	0x33	/*!< Facility */
#define ISUP_CRA	0xe9	/*!< ??? */
#define ISUP_CRM	0xea	/*!< ??? */
#define ISUP_CVR	0xeb	/*!< ???Used??? */
#define ISUP_CVT	0xec	/*!< ???Used??? */
#define ISUP_EXM	0xed	/*!< ??? */


/* ISUP Parameters ITU-T Q.763 */
#define ISUP_PARM_CALL_REF						0x01
#define ISUP_PARM_TRANSMISSION_MEDIUM_REQS		0x02
#define ISUP_PARM_ACCESS_TRANS					0x03
#define ISUP_PARM_CALLED_PARTY_NUM				0x04
#define ISUP_PARM_SUBSEQUENT_NUMBER				0x05
#define ISUP_PARM_NATURE_OF_CONNECTION_IND		0x06
#define ISUP_PARM_FORWARD_CALL_IND				0x07
#define ISUP_PARM_OPT_FORWARD_CALL_INDICATOR	0x08
#define ISUP_PARM_CALLING_PARTY_CAT				0x09
#define ISUP_PARM_CALLING_PARTY_NUM				0x0a
#define ISUP_PARM_REDIRECTING_NUMBER			0x0b
#define ISUP_PARM_REDIRECTION_NUMBER			0x0c
#define ISUP_PARM_CONNECTION_REQ				0x0d
#define ISUP_PARM_INR_IND						0x0e
#define ISUP_PARM_INF_IND						0x0f
#define ISUP_PARM_CONTINUITY_IND				0x10
#define ISUP_PARM_BACKWARD_CALL_IND				0x11
#define ISUP_PARM_CAUSE							0x12
#define ISUP_PARM_REDIRECTION_INFO				0x13
/* 0x14 is Reserved / Event information */
#define ISUP_PARM_CIRCUIT_GROUP_SUPERVISION_IND	0x15
#define ISUP_PARM_RANGE_AND_STATUS				0x16
#define ISUP_PARM_CALL_MODIFICATION_IND			0x17
#define ISUP_PARM_FACILITY_IND					0x18
/* 0x19 is Reserved */
#define ISUP_PARM_CUG_INTERLOCK_CODE			0x1a
/* 0x1b is Reserved */
/* 0x1c is Reserved */
#define ISUP_PARM_USER_SERVICE_INFO				0x1d
#define ISUP_PARM_SIGNALLING_PC					0x1e
/* 0x1f is Reserved */
#define ISUP_PARM_USER_TO_USER_INFO				0x20
#define ISUP_CONNECTED_NUMBER					0x21
#define ISUP_PARM_SUSPEND_RESUME_IND			0x22
#define ISUP_PARM_TRANSIT_NETWORK_SELECTION		0x23
#define ISUP_PARM_EVENT_INFO					0x24
#define ISUP_PARM_CIRCUIT_ASSIGNMENT_MAP		0x25
#define ISUP_PARM_CIRCUIT_STATE_IND				0x26
#define ISUP_PARAM_AUTOMATIC_CONGESTION_LEVEL	0x27
#define ISUP_PARM_ORIGINAL_CALLED_NUM			0x28
#define ISUP_PARM_OPT_BACKWARD_CALL_IND			0x29
#define ISUP_PARM_USER_TO_USER_IND				0x2a
#define ISUP_PARM_ORIGINATION_ISC_PC			0x2b
#define ISUP_PARM_GENERIC_NOTIFICATION_IND		0x2c
#define ISUP_PARM_CALL_HISTORY_INFO				0x2d
#define ISUP_PARM_ACCESS_DELIVERY_INFO			0x2e
#define ISUP_PARM_NETWORK_SPECIFIC_FACILITY		0x2f
#define ISUP_PARM_USER_SERVICE_INFO_PRIME		0x30
#define ISUP_PARM_PROPAGATION_DELAY				0x31
#define ISUP_PARM_REMOTE_OPERATIONS				0x32
#define ISUP_PARM_SERVICE_ACTIVATION			0x33
#define ISUP_PARM_USER_TELESERVICE_INFO			0x34
#define ISUP_PARM_TRANSMISSION_MEDIUM_USED		0x35
#define ISUP_PARM_CALL_DIVERSION_INFO			0x36
#define ISUP_PARM_ECHO_CONTROL_INFO				0x37
#define ISUP_PARM_MESSAGE_COMPAT_INFO			0x38
#define ISUP_PARM_PARAMETER_COMPAT_INFO			0x39
#define ISUP_PARM_MLPP_PRECEDENCE				0x3a
#define ISUP_PARM_MCID_REQUEST_IND				0x3b
#define ISUP_PARM_MCID_RESPONSE_IND				0x3c
#define ISUP_PARM_HOP_COUNTER					0x3d
#define ISUP_PARM_TRANSMISSION_MEDIUM_REQ_PRIME	0x3e
#define ISUP_PARM_LOCATION_NUMBER				0x3f

#define ISUP_PARM_REDIRECTION_NUM_RESTRICTION	0x40

#define ISUP_PARM_CALL_TRANSFER_REFERENCE		0x43
#define ISUP_PARM_LOOP_PREVENTION_IND			0x44
#define ISUP_PARM_CALL_TRANSFER_NUMBER			0x45

#define ISUP_PARM_CCSS							0x4b
#define ISUP_PARM_FORWARD_GVNS					0x4c
#define ISUP_PARM_BACKWARD_GVNS					0x4d
#define ISUP_PARM_REDIRECT_CAPABILITY			0x4e

#define ISUP_PARM_NETWORK_MANAGEMENT_CONTROL	0x5b

#define ISUP_PARM_CORRELATION_ID				0x65
#define ISUP_PARM_SCF_ID						0x66

#define ISUP_PARM_CALL_DIVERSION_TREATMENT_IND	0x6e
#define ISUP_PARM_CALLED_IN_NUMBER				0x6f
#define ISUP_PARM_CALL_OFFERING_TREATMENT_IND	0x70
#define ISUP_PARM_CHARGED_PARTY_IDENT			0x71
#define ISUP_PARM_CONFERENCE_TREATMENT_IND		0x72
#define ISUP_PARM_DISPLAY_INFO					0x73
#define ISUP_PARM_UID_ACTION_IND				0x74
#define ISUP_PARM_UID_CAPABILITY_IND			0x75

#define ISUP_PARM_REDIRECT_COUNTER				0x77
#define ISUP_PARM_APPLICATION_TRANSPORT			0x78
#define ISUP_PARM_COLLECT_CALL_REQUEST			0x79
#define ISUP_PARM_CCNR_POSSIBLE_IND				0x7a
#define ISUP_PARM_PIVOT_CAPABILITY				0x7b
#define ISUP_PARM_PIVOT_ROUTING_IND				0x7c
#define ISUP_PARM_CALLED_DIRECTORY_NUMBER		0x7d

#define ISUP_PARM_ORIGINAL_CALLED_IN_NUM		0x7f
/* 0x80 reserved for future extension */
#define ISUP_PARM_CALLING_GEODETIC_LOCATION		0x81
#define ISUP_PARM_HTR_INFO						0x82

#define ISUP_PARM_NETWORK_ROUTING_NUMBER		0x84
#define ISUP_PARM_QUERY_ON_RELEASE_CAPABILITY	0x85
#define ISUP_PARM_PIVOT_STATUS					0x86
#define ISUP_PARM_PIVOT_COUNTER					0x87
#define ISUP_PARM_PIVOT_ROUTING_FORWARD_IND		0x88
#define ISUP_PARM_PIVOT_ROUTING_BACKWARD_IND	0x89
#define ISUP_PARM_REDIRECT_STATUS				0x8a
#define ISUP_PARM_REDIRECT_FORWARD_INFO			0x8b
#define ISUP_PARM_REDIRECT_BACKWARD_INFO		0x8c
#define ISUP_PARM_NUM_PORTABILITY_FORWARD_INFO	0x8d

#define ISUP_PARM_GENERIC_ADDR					0xc0
#define ISUP_PARM_GENERIC_DIGITS				0xc1

#define ISUP_PARM_EGRESS_SERV					0xc3
#define ISUP_PARM_JIP							0xc4
#define ISUP_PARM_CARRIER_ID					0xc5
#define ISUP_PARM_BUSINESS_GRP					0xc6
#define ISUP_PARM_GENERIC_NAME					0xc7

#define ISUP_PARM_LOCAL_SERVICE_PROVIDER_IDENTIFICATION	0xe4

#define ISUP_PARM_ORIG_LINE_INFO				0xea
#define ISUP_PARM_CHARGE_NUMBER					0xeb

#define ISUP_PARM_SELECTION_INFO				0xee


/* ISUP TIMERS  */
#define ISUP_TIMER_T1	1
#define ISUP_TIMER_T2	2
#define ISUP_TIMER_T5	5
#define ISUP_TIMER_T6	6
#define ISUP_TIMER_T7	7
#define ISUP_TIMER_T8	8
#define ISUP_TIMER_T10	10
#define ISUP_TIMER_T12	12
#define ISUP_TIMER_T13	13
#define ISUP_TIMER_T14	14
#define ISUP_TIMER_T15	15
#define ISUP_TIMER_T16	16
#define ISUP_TIMER_T17	17
#define ISUP_TIMER_T18	18
#define ISUP_TIMER_T19	19
#define ISUP_TIMER_T20	20
#define ISUP_TIMER_T21	21
#define ISUP_TIMER_T22	22
#define ISUP_TIMER_T23	23
#define ISUP_TIMER_T27	27
#define ISUP_TIMER_T33	33
#define ISUP_TIMER_T35	35

/* ISUP Parameter Pseudo-type */
struct isup_parm_opt {
	unsigned char type;
	unsigned char len;
	unsigned char data[0];
};

struct isup_h {
	unsigned char cic[2];
	unsigned char type;
	unsigned char data[0]; /* This is the contents of the message */
};

#define CIC_SIZE 2
#define ISUP_MAX_NUM 64
/* From GR-317 for the generic name filed: 15 + 1 */
#define ISUP_MAX_NAME 16

struct mtp2;

struct isup_call {
	char called_party_num[ISUP_MAX_NUM];
	unsigned char called_nai;
	char calling_party_num[ISUP_MAX_NUM];
	unsigned char calling_party_cat;
	unsigned char calling_nai;
	unsigned char presentation_ind;
	unsigned char screening_ind;
	char charge_number[ISUP_MAX_NUM];
	unsigned char charge_nai;
	unsigned char charge_num_plan;
	unsigned char gen_add_num_plan;
	unsigned char gen_add_nai;
	char gen_add_number[ISUP_MAX_NUM];
	unsigned char gen_add_pres_ind;
	unsigned char gen_add_type;
	char gen_dig_number[ISUP_MAX_NUM];
	unsigned char gen_dig_type;
	unsigned char gen_dig_scheme;
	char jip_number[ISUP_MAX_NUM];
	unsigned char lspi_type;
	unsigned char lspi_scheme;
	unsigned char lspi_context;
	unsigned char lspi_spare;
	char lspi_ident[ISUP_MAX_NUM];
	int oli_ani2;
	unsigned int call_ref_ident;
	unsigned int call_ref_pc;
	char orig_called_num[ISUP_MAX_NUM];
	unsigned char orig_called_nai;
	unsigned char orig_called_pres_ind;
	unsigned char orig_called_screening_ind;
	char redirecting_num[ISUP_MAX_NUM];
	unsigned char redirecting_num_nai;
	unsigned char redirecting_num_presentation_ind;
	unsigned char redirecting_num_screening_ind;
	unsigned char redirect_counter;
	unsigned char redirect_info;
	unsigned char redirect_info_ind;
	unsigned char redirect_info_orig_reas;
	unsigned char redirect_info_counter;
	unsigned char redirect_info_reas;
	unsigned char generic_name_typeofname;
	unsigned char generic_name_avail;
	unsigned char generic_name_presentation;
	char connected_num[ISUP_MAX_NUM];
	unsigned char connected_nai;
	unsigned char connected_presentation_ind;
	unsigned char connected_screening_ind;
	char generic_name[ISUP_MAX_NAME];
	int range;
	unsigned char sent_cgb_status[255];
	unsigned char sent_cgu_status[255];
	unsigned char status[255];
	int transcap;
	int l1prot;
	int cause;
	int causecode;
	int causeloc;
	int cot_check_passed;
	int cot_check_required;
	int cot_performed_on_previous_cic;
	int cicgroupsupervisiontype;
	unsigned char event_info;
	unsigned short cic;
	unsigned char sls;
	unsigned long got_sent_msg;	/* flags for sent msgs */
	int sent_cgb_type;
	int sent_cgu_type;
	int sent_grs_endcic;
	int sent_cgb_endcic;
	int sent_cgu_endcic;
	struct isup_call *next;
	/* set DPC according to CIC's DPC, not linkset */
	unsigned int dpc;
	/* Backward Call Indicator variables */
	unsigned char called_party_status_ind;
	unsigned char local_echocontrol_ind;
	unsigned char echocontrol_ind;
	/* Suspend/Resume Indicator */
	int network_isdn_indicator;
	unsigned char inr_ind[2];
	unsigned char inf_ind[2];
	unsigned char cug_indicator;
	unsigned col_req;
	char cug_interlock_ni[5];
	unsigned short cug_interlock_code;
	unsigned char interworking_indicator;
	unsigned char forward_indicator_pmbits;
	int timer[ISUP_MAX_TIMERS];
};

int isup_receive(struct ss7 *ss7, struct mtp2 *sl, struct routing_label *rl, unsigned char *sif, int len);

int isup_dump(struct ss7 *ss7, struct mtp2 *sl, unsigned char *sif, int len);

void isup_free_all_calls(struct ss7 *ss7);

#endif /* _SS7_ISUP_H */