Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
4455d581
提交
4455d581
authored
10月 07, 2010
作者:
Konrad Hammel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
freetdm: ss7 - added support to control mtp2, mtp3, and isup timers via freetdm.conf.xml
上级
7d3c3c84
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
481 行增加
和
64 行删除
+481
-64
ftmod_sangoma_ss7_xml.c
...eetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c
+481
-64
没有找到文件。
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c
浏览文件 @
4455d581
...
@@ -47,6 +47,23 @@ typedef struct sng_timeslot
...
@@ -47,6 +47,23 @@ typedef struct sng_timeslot
int
hole
;
int
hole
;
}
sng_timeslot_t
;
}
sng_timeslot_t
;
typedef
struct
sng_isupCkt
{
ftdm_span_t
*
span
;
uint32_t
cicbase
;
uint32_t
typeCntrl
;
char
ch_map
[
MAX_CIC_MAP_LENGTH
];
uint32_t
isupInf
;
uint32_t
t3
;
uint32_t
t12
;
uint32_t
t13
;
uint32_t
t14
;
uint32_t
t15
;
uint32_t
t16
;
uint32_t
t17
;
uint32_t
tval
;
}
sng_isupCkt_t
;
int
cmbLinkSetId
;
int
cmbLinkSetId
;
/******************************************************************************/
/******************************************************************************/
...
@@ -77,7 +94,7 @@ static int ftmod_ss7_fill_in_isap(sng_isap_t *sng_isap);
...
@@ -77,7 +94,7 @@ static int ftmod_ss7_fill_in_isap(sng_isap_t *sng_isap);
static
int
ftmod_ss7_fill_in_self_route
(
int
spc
,
int
linkType
,
int
switchType
,
int
ssf
);
static
int
ftmod_ss7_fill_in_self_route
(
int
spc
,
int
linkType
,
int
switchType
,
int
ssf
);
static
int
ftmod_ss7_fill_in_circuits
(
char
*
ch_map
,
int
cicbase
,
int
typeCntrl
,
int
isup_id
,
ftdm_span_t
*
span
);
static
int
ftmod_ss7_fill_in_circuits
(
sng_isupCkt_t
*
isupCkt
);
static
int
ftmod_ss7_next_timeslot
(
char
*
ch_map
,
sng_timeslot_t
*
timeslot
);
static
int
ftmod_ss7_next_timeslot
(
char
*
ch_map
,
sng_timeslot_t
*
timeslot
);
/******************************************************************************/
/******************************************************************************/
...
@@ -91,9 +108,10 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
...
@@ -91,9 +108,10 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
const
char
*
val
=
NULL
;
const
char
*
val
=
NULL
;
ftdm_conf_node_t
*
ptr
=
NULL
;
ftdm_conf_node_t
*
ptr
=
NULL
;
sng_route_t
self_route
;
sng_route_t
self_route
;
char
ch_map
[
MAX_CIC_MAP_LENGTH
];
sng_isupCkt_t
isupCkt
;
int
typeCntrl
=
0
;
int
cicbase
=
0
;
/* clean out the isup ckt */
memset
(
&
isupCkt
,
0x0
,
sizeof
(
sng_isupCkt_t
));
/* clean out the self route */
/* clean out the self route */
memset
(
&
self_route
,
0x0
,
sizeof
(
sng_route_t
));
memset
(
&
self_route
,
0x0
,
sizeof
(
sng_route_t
));
...
@@ -124,24 +142,24 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
...
@@ -124,24 +142,24 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
if
(
!
strcasecmp
(
var
,
"ch_map"
))
{
if
(
!
strcasecmp
(
var
,
"ch_map"
))
{
/**********************************************************************/
/**********************************************************************/
strcpy
(
ch_map
,
val
);
strcpy
(
isupCkt
.
ch_map
,
val
);
SS7_DEBUG
(
"
\t
Found channel map
\"
%s
\"\n
"
,
ch_map
);
SS7_DEBUG
(
"
\t
Found channel map
\"
%s
\"\n
"
,
isupCkt
.
ch_map
);
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"typeCntrl"
))
{
}
else
if
(
!
strcasecmp
(
var
,
"typeCntrl"
))
{
if
(
!
strcasecmp
(
val
,
"bothway"
))
{
if
(
!
strcasecmp
(
val
,
"bothway"
))
{
typeCntrl
=
BOTHWAY
;
isupCkt
.
typeCntrl
=
BOTHWAY
;
SS7_DEBUG
(
"
\t
Found control type
\"
bothway
\"\n
"
);
SS7_DEBUG
(
"
\t
Found control type
\"
bothway
\"\n
"
);
}
else
if
(
!
strcasecmp
(
val
,
"incoming"
))
{
}
else
if
(
!
strcasecmp
(
val
,
"incoming"
))
{
typeCntrl
=
INCOMING
;
isupCkt
.
typeCntrl
=
INCOMING
;
SS7_DEBUG
(
"
\t
Found control type
\"
incoming
\"\n
"
);
SS7_DEBUG
(
"
\t
Found control type
\"
incoming
\"\n
"
);
}
else
if
(
!
strcasecmp
(
val
,
"outgoing"
))
{
}
else
if
(
!
strcasecmp
(
val
,
"outgoing"
))
{
typeCntrl
=
OUTGOING
;
isupCkt
.
typeCntrl
=
OUTGOING
;
SS7_DEBUG
(
"
\t
Found control type
\"
outgoing
\"\n
"
);
SS7_DEBUG
(
"
\t
Found control type
\"
outgoing
\"\n
"
);
}
else
if
(
!
strcasecmp
(
val
,
"controlled"
))
{
}
else
if
(
!
strcasecmp
(
val
,
"controlled"
))
{
typeCntrl
=
CONTROLLED
;
isupCkt
.
typeCntrl
=
CONTROLLED
;
SS7_DEBUG
(
"
\t
Found control type
\"
controlled
\"\n
"
);
SS7_DEBUG
(
"
\t
Found control type
\"
controlled
\"\n
"
);
}
else
if
(
!
strcasecmp
(
val
,
"controlling"
))
{
}
else
if
(
!
strcasecmp
(
val
,
"controlling"
))
{
typeCntrl
=
CONTROLLING
;
isupCkt
.
typeCntrl
=
CONTROLLING
;
SS7_DEBUG
(
"
\t
Found control type
\"
controlling
\"\n
"
);
SS7_DEBUG
(
"
\t
Found control type
\"
controlling
\"\n
"
);
}
else
{
}
else
{
SS7_ERROR
(
"Found invalid circuit control type
\"
%s
\"
!"
,
val
);
SS7_ERROR
(
"Found invalid circuit control type
\"
%s
\"
!"
,
val
);
...
@@ -149,8 +167,8 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
...
@@ -149,8 +167,8 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
}
}
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"cicbase"
))
{
}
else
if
(
!
strcasecmp
(
var
,
"cicbase"
))
{
cicbase
=
atoi
(
val
);
isupCkt
.
cicbase
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found cicbase = %d
\n
"
,
cicbase
);
SS7_DEBUG
(
"
\t
Found cicbase = %d
\n
"
,
isupCkt
.
cicbase
);
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"dialplan"
))
{
}
else
if
(
!
strcasecmp
(
var
,
"dialplan"
))
{
/* do i give a shit about this??? */
/* do i give a shit about this??? */
...
@@ -169,7 +187,41 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
...
@@ -169,7 +187,41 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
/* move on to the next one */
/* move on to the next one */
x
++
;
x
++
;
}
}
SS7_DEBUG
(
"
\t
Found isup_interface = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
x
].
name
);
isupCkt
.
isupInf
=
x
;
SS7_DEBUG
(
"
\t
Found isup_interface = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
x
].
name
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t3"
))
{
isupCkt
.
t3
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t3 =
\"
%d
\"\n
"
,
isupCkt
.
t3
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t12"
))
{
isupCkt
.
t12
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t12 =
\"
%d
\"\n
"
,
isupCkt
.
t12
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t13"
))
{
isupCkt
.
t13
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t13 =
\"
%d
\"\n
"
,
isupCkt
.
t13
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t14"
))
{
isupCkt
.
t14
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t14 =
\"
%d
\"\n
"
,
isupCkt
.
t14
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t15"
))
{
isupCkt
.
t15
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t15 =
\"
%d
\"\n
"
,
isupCkt
.
t15
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t16"
))
{
isupCkt
.
t16
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t16 =
\"
%d
\"\n
"
,
isupCkt
.
t16
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.t17"
))
{
isupCkt
.
t17
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup t17 =
\"
%d
\"\n
"
,
isupCkt
.
t17
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
var
,
"isup.tval"
))
{
isupCkt
.
tval
=
atoi
(
val
);
SS7_DEBUG
(
"
\t
Found isup tval =
\"
%d
\"\n
"
,
isupCkt
.
tval
);
/**********************************************************************/
/**********************************************************************/
}
else
{
}
else
{
SS7_ERROR
(
"Unknown parameter found =
\"
%s
\"
...ignoring it!
\n
"
,
var
);
SS7_ERROR
(
"Unknown parameter found =
\"
%s
\"
...ignoring it!
\n
"
,
var
);
...
@@ -192,10 +244,11 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
...
@@ -192,10 +244,11 @@ int ftmod_ss7_parse_xml(ftdm_conf_parameter_t *ftdm_parameters, ftdm_span_t *spa
}
}
/* fill the pointer to span into isupCkt */
isupCkt
.
span
=
span
;
/* setup the circuits structure */
/* setup the circuits structure */
if
(
ftmod_ss7_fill_in_circuits
(
ch_map
,
cicbase
,
typeCntrl
,
if
(
ftmod_ss7_fill_in_circuits
(
&
isupCkt
))
{
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
x
].
id
,
span
))
{
SS7_ERROR
(
"Failed to fill in circuits structure!
\n
"
);
SS7_ERROR
(
"Failed to fill in circuits structure!
\n
"
);
goto
ftmod_ss7_parse_xml_error
;
goto
ftmod_ss7_parse_xml_error
;
}
}
...
@@ -582,6 +635,130 @@ static int ftmod_ss7_parse_mtp_link(ftdm_conf_node_t *mtp_link, sng_mtp_link_t *
...
@@ -582,6 +635,130 @@ static int ftmod_ss7_parse_mtp_link(ftdm_conf_node_t *mtp_link, sng_mtp_link_t *
mtpLink
->
mtp3
.
slc
=
atoi
(
parm
->
val
);
mtpLink
->
mtp3
.
slc
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtpLink->slc =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
slc
);
SS7_DEBUG
(
"
\t
Found mtpLink->slc =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
slc
);
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t1"
))
{
mtpLink
->
mtp2
.
t1
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t1 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t1
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t2"
))
{
mtpLink
->
mtp2
.
t2
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t2 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t2
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t3"
))
{
mtpLink
->
mtp2
.
t3
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t3 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t3
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t4n"
))
{
mtpLink
->
mtp2
.
t4n
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t4n =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t4n
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t4e"
))
{
mtpLink
->
mtp2
.
t4e
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t4e =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t4e
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t5"
))
{
mtpLink
->
mtp2
.
t5
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t5 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t5
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t6"
))
{
mtpLink
->
mtp2
.
t6
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t6 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t6
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp2.t7"
))
{
mtpLink
->
mtp2
.
t7
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp2 t7 =
\"
%d
\"\n
"
,
mtpLink
->
mtp2
.
t7
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t1"
))
{
mtpLink
->
mtp3
.
t1
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t1 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t1
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t2"
))
{
mtpLink
->
mtp3
.
t2
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t2 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t2
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t3"
))
{
mtpLink
->
mtp3
.
t3
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t3 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t3
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t4"
))
{
mtpLink
->
mtp3
.
t4
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t4 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t4
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t5"
))
{
mtpLink
->
mtp3
.
t5
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t5 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t5
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t7"
))
{
mtpLink
->
mtp3
.
t7
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t7 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t7
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t12"
))
{
mtpLink
->
mtp3
.
t12
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t12 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t12
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t13"
))
{
mtpLink
->
mtp3
.
t13
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t13 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t13
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t14"
))
{
mtpLink
->
mtp3
.
t14
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t14 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t14
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t17"
))
{
mtpLink
->
mtp3
.
t17
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t17 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t17
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t22"
))
{
mtpLink
->
mtp3
.
t22
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t22 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t22
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t23"
))
{
mtpLink
->
mtp3
.
t23
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t23 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t23
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t24"
))
{
mtpLink
->
mtp3
.
t24
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t24 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t24
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t31"
))
{
mtpLink
->
mtp3
.
t31
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t31 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t31
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t32"
))
{
mtpLink
->
mtp3
.
t32
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t32 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t32
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t33"
))
{
mtpLink
->
mtp3
.
t33
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t33 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t33
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t34"
))
{
mtpLink
->
mtp3
.
t34
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t34 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t34
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t35"
))
{
mtpLink
->
mtp3
.
t35
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t35 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t35
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t36"
))
{
mtpLink
->
mtp3
.
t36
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t36 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t36
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t37"
))
{
mtpLink
->
mtp3
.
t37
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t37 =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
t37
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.tcraft"
))
{
mtpLink
->
mtp3
.
tcraft
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 tcraft =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
tcraft
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.tflc"
))
{
mtpLink
->
mtp3
.
tflc
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 tflc =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
tflc
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.tbnd"
))
{
mtpLink
->
mtp3
.
tbnd
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 tbnd =
\"
%d
\"\n
"
,
mtpLink
->
mtp3
.
tbnd
);
/**********************************************************************/
}
else
{
}
else
{
SS7_ERROR
(
"
\t
Found an invalid parameter
\"
%s
\"
!
\n
"
,
parm
->
val
);
SS7_ERROR
(
"
\t
Found an invalid parameter
\"
%s
\"
!
\n
"
,
parm
->
val
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
...
@@ -697,6 +874,50 @@ static int ftmod_ss7_parse_mtp_route(ftdm_conf_node_t *mtp_route)
...
@@ -697,6 +874,50 @@ static int ftmod_ss7_parse_mtp_route(ftdm_conf_node_t *mtp_route)
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
}
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t6"
))
{
mtpRoute
.
t6
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t6 =
\"
%d
\"\n
"
,
mtpRoute
.
t6
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t8"
))
{
mtpRoute
.
t8
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t8 =
\"
%d
\"\n
"
,
mtpRoute
.
t8
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t10"
))
{
mtpRoute
.
t10
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t10 =
\"
%d
\"\n
"
,
mtpRoute
.
t10
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t11"
))
{
mtpRoute
.
t11
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t11 =
\"
%d
\"\n
"
,
mtpRoute
.
t11
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t15"
))
{
mtpRoute
.
t15
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t15 =
\"
%d
\"\n
"
,
mtpRoute
.
t15
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t16"
))
{
mtpRoute
.
t16
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t16 =
\"
%d
\"\n
"
,
mtpRoute
.
t16
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t18"
))
{
mtpRoute
.
t18
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t18 =
\"
%d
\"\n
"
,
mtpRoute
.
t18
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t19"
))
{
mtpRoute
.
t19
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t19 =
\"
%d
\"\n
"
,
mtpRoute
.
t19
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t21"
))
{
mtpRoute
.
t21
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t21 =
\"
%d
\"\n
"
,
mtpRoute
.
t21
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t25"
))
{
mtpRoute
.
t25
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t25 =
\"
%d
\"\n
"
,
mtpRoute
.
t25
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"mtp3.t26"
))
{
mtpRoute
.
t26
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found mtp3 t26 =
\"
%d
\"\n
"
,
mtpRoute
.
t26
);
/**********************************************************************/
}
else
{
}
else
{
SS7_ERROR
(
"
\t
Found an invalid parameter
\"
%s
\"
!
\n
"
,
parm
->
val
);
SS7_ERROR
(
"
\t
Found an invalid parameter
\"
%s
\"
!
\n
"
,
parm
->
val
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
...
@@ -842,6 +1063,178 @@ static int ftmod_ss7_parse_isup_interface(ftdm_conf_node_t *isup_interface)
...
@@ -842,6 +1063,178 @@ static int ftmod_ss7_parse_isup_interface(ftdm_conf_node_t *isup_interface)
SS7_DEBUG
(
"
\t
Found license file = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
license
);
SS7_DEBUG
(
"
\t
Found license file = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
license
);
SS7_DEBUG
(
"
\t
Found signature file = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
signature
);
SS7_DEBUG
(
"
\t
Found signature file = %s
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
signature
);
/**********************************************************************/
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t1"
))
{
sng_isap
.
t1
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t1 =
\"
%d
\"\n
"
,
sng_isap
.
t1
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t2"
))
{
sng_isap
.
t2
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t2 =
\"
%d
\"\n
"
,
sng_isap
.
t2
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t4"
))
{
sng_isup
.
t4
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t4 =
\"
%d
\"\n
"
,
sng_isup
.
t4
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t5"
))
{
sng_isap
.
t5
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t5 =
\"
%d
\"\n
"
,
sng_isap
.
t5
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t6"
))
{
sng_isap
.
t6
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t6 =
\"
%d
\"\n
"
,
sng_isap
.
t6
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t7"
))
{
sng_isap
.
t7
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t7 =
\"
%d
\"\n
"
,
sng_isap
.
t7
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t8"
))
{
sng_isap
.
t8
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t8 =
\"
%d
\"\n
"
,
sng_isap
.
t8
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t9"
))
{
sng_isap
.
t9
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t9 =
\"
%d
\"\n
"
,
sng_isap
.
t9
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t10"
))
{
sng_isup
.
t10
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t10 =
\"
%d
\"\n
"
,
sng_isup
.
t10
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t11"
))
{
sng_isup
.
t11
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t11 =
\"
%d
\"\n
"
,
sng_isup
.
t11
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t18"
))
{
sng_isup
.
t18
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t18 =
\"
%d
\"\n
"
,
sng_isup
.
t18
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t19"
))
{
sng_isup
.
t19
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t19 =
\"
%d
\"\n
"
,
sng_isup
.
t19
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t20"
))
{
sng_isup
.
t20
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t20 =
\"
%d
\"\n
"
,
sng_isup
.
t20
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t21"
))
{
sng_isup
.
t21
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t21 =
\"
%d
\"\n
"
,
sng_isup
.
t21
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t22"
))
{
sng_isup
.
t22
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t22 =
\"
%d
\"\n
"
,
sng_isup
.
t22
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t23"
))
{
sng_isup
.
t23
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t23 =
\"
%d
\"\n
"
,
sng_isup
.
t23
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t24"
))
{
sng_isup
.
t24
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t24 =
\"
%d
\"\n
"
,
sng_isup
.
t24
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t25"
))
{
sng_isup
.
t25
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t25 =
\"
%d
\"\n
"
,
sng_isup
.
t25
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t26"
))
{
sng_isup
.
t26
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t26 =
\"
%d
\"\n
"
,
sng_isup
.
t26
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t28"
))
{
sng_isup
.
t28
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t28 =
\"
%d
\"\n
"
,
sng_isup
.
t28
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t29"
))
{
sng_isup
.
t29
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t29 =
\"
%d
\"\n
"
,
sng_isup
.
t29
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t30"
))
{
sng_isup
.
t30
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t30 =
\"
%d
\"\n
"
,
sng_isup
.
t30
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t31"
))
{
sng_isap
.
t31
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t31 =
\"
%d
\"\n
"
,
sng_isap
.
t31
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t32"
))
{
sng_isup
.
t32
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t32 =
\"
%d
\"\n
"
,
sng_isup
.
t32
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t33"
))
{
sng_isap
.
t33
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t33 =
\"
%d
\"\n
"
,
sng_isap
.
t33
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t34"
))
{
sng_isap
.
t34
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t34 =
\"
%d
\"\n
"
,
sng_isap
.
t34
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t35"
))
{
sng_isup
.
t35
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t35 =
\"
%d
\"\n
"
,
sng_isup
.
t35
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t36"
))
{
sng_isap
.
t36
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t36 =
\"
%d
\"\n
"
,
sng_isap
.
t36
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t37"
))
{
sng_isup
.
t37
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t37 =
\"
%d
\"\n
"
,
sng_isup
.
t37
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t38"
))
{
sng_isup
.
t38
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t38 =
\"
%d
\"\n
"
,
sng_isup
.
t38
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.t39"
))
{
sng_isup
.
t39
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup t39 =
\"
%d
\"\n
"
,
sng_isup
.
t39
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tccr"
))
{
sng_isap
.
tccr
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tccr =
\"
%d
\"\n
"
,
sng_isap
.
tccr
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tccrt"
))
{
sng_isap
.
tccrt
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tccrt =
\"
%d
\"\n
"
,
sng_isap
.
tccrt
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tex"
))
{
sng_isap
.
tex
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tex =
\"
%d
\"\n
"
,
sng_isap
.
tex
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tect"
))
{
sng_isap
.
tect
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tect =
\"
%d
\"\n
"
,
sng_isap
.
tect
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tcrm"
))
{
sng_isap
.
tcrm
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tcrm =
\"
%d
\"\n
"
,
sng_isap
.
tcrm
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tcra"
))
{
sng_isap
.
tcra
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tcra =
\"
%d
\"\n
"
,
sng_isap
.
tcra
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tfgr"
))
{
sng_isup
.
tfgr
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tfgr =
\"
%d
\"\n
"
,
sng_isup
.
tfgr
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.trelrsp"
))
{
sng_isap
.
trelrsp
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup trelrsp =
\"
%d
\"\n
"
,
sng_isap
.
trelrsp
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tfnlrelrsp"
))
{
sng_isap
.
tfnlrelrsp
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tfnlrelrsp =
\"
%d
\"\n
"
,
sng_isap
.
tfnlrelrsp
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tfnlrelrsp"
))
{
sng_isap
.
tfnlrelrsp
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tfnlrelrsp =
\"
%d
\"\n
"
,
sng_isap
.
tfnlrelrsp
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tpause"
))
{
sng_isup
.
tpause
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tpause =
\"
%d
\"\n
"
,
sng_isup
.
tpause
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"isup.tstaenq"
))
{
sng_isup
.
tstaenq
=
atoi
(
parm
->
val
);
SS7_DEBUG
(
"
\t
Found isup tstaenq =
\"
%d
\"\n
"
,
sng_isup
.
tstaenq
);
/**********************************************************************/
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"clg_nadi"
))
{
}
else
if
(
!
strcasecmp
(
parm
->
var
,
"clg_nadi"
))
{
/**********************************************************************/
/**********************************************************************/
/* throw the flag so that we know we got this optional parameter */
/* throw the flag so that we know we got this optional parameter */
...
@@ -1573,7 +1966,7 @@ static int ftmod_ss7_fill_in_self_route(int spc, int linkType, int switchType, i
...
@@ -1573,7 +1966,7 @@ static int ftmod_ss7_fill_in_self_route(int spc, int linkType, int switchType, i
}
}
/******************************************************************************/
/******************************************************************************/
static
int
ftmod_ss7_fill_in_circuits
(
char
*
ch_map
,
int
cicbase
,
int
typeCntrl
,
int
isup_id
,
ftdm_span_t
*
span
)
static
int
ftmod_ss7_fill_in_circuits
(
sng_isupCkt_t
*
isupCkt
)
{
{
sngss7_chan_data_t
*
ss7_info
=
NULL
;
sngss7_chan_data_t
*
ss7_info
=
NULL
;
ftdm_channel_t
*
ftdmchan
=
NULL
;
ftdm_channel_t
*
ftdmchan
=
NULL
;
...
@@ -1584,10 +1977,10 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1584,10 +1977,10 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
count
=
1
;
count
=
1
;
while
(
ch_map
[
0
]
!=
'\0'
)
{
while
(
isupCkt
->
ch_map
[
0
]
!=
'\0'
)
{
/* pull out the next timeslot */
/* pull out the next timeslot */
if
(
ftmod_ss7_next_timeslot
(
ch_map
,
&
timeslot
))
{
if
(
ftmod_ss7_next_timeslot
(
isupCkt
->
ch_map
,
&
timeslot
))
{
SS7_ERROR
(
"Failed to parse the channel map!
\n
"
);
SS7_ERROR
(
"Failed to parse the channel map!
\n
"
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
}
...
@@ -1597,10 +1990,10 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1597,10 +1990,10 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
x
=
1
;
x
=
1
;
while
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
)
{
while
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
)
{
if
((
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
count
)
&&
if
((
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
count
)
&&
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
==
span
->
channels
[
1
]
->
physical_span_id
))
{
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
==
isupCkt
->
span
->
channels
[
1
]
->
physical_span_id
))
{
SS7_DEVEL_DEBUG
(
"Circuit for span=%d, chan=%d is already exists...id=%d
\n
"
,
SS7_DEVEL_DEBUG
(
"Circuit for span=%d, chan=%d is already exists...id=%d
\n
"
,
span
->
channels
[
1
]
->
physical_span_id
,
isupCkt
->
span
->
channels
[
1
]
->
physical_span_id
,
count
,
count
,
x
);
x
);
...
@@ -1614,7 +2007,7 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1614,7 +2007,7 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
/* check why we exited the while loop */
/* check why we exited the while loop */
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
==
0
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
==
0
)
{
SS7_DEVEL_DEBUG
(
"Circuit for span=%d, chan=%d is new...id=%d
\n
"
,
SS7_DEVEL_DEBUG
(
"Circuit for span=%d, chan=%d is new...id=%d
\n
"
,
span
->
channels
[
1
]
->
physical_span_id
,
isupCkt
->
span
->
channels
[
1
]
->
physical_span_id
,
count
,
count
,
x
);
x
);
...
@@ -1625,7 +2018,7 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1625,7 +2018,7 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
/* circuit is new so fill in the needed information */
/* circuit is new so fill in the needed information */
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
=
x
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
=
x
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
=
span
->
channels
[
1
]
->
physical_span_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
=
isupCkt
->
span
->
channels
[
1
]
->
physical_span_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
=
count
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
=
count
;
if
(
timeslot
.
siglink
)
{
if
(
timeslot
.
siglink
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
=
SIG
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
=
SIG
;
...
@@ -1634,22 +2027,14 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1634,22 +2027,14 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
}
}
if
(
timeslot
.
channel
)
{
if
(
timeslot
.
channel
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
cicbase
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
isupCkt
->
cicbase
;
cicbase
++
;
isupCkt
->
cicbase
++
;
}
else
{
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
0
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
0
;
}
}
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
infId
=
isup_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
infId
=
isupCkt
->
isupInf
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
typeCntrl
=
typeCntrl
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
typeCntrl
=
isupCkt
->
typeCntrl
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t3
=
1200
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
ssf
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isupCkt
->
isupInf
].
ssf
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t12
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t13
=
3000
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t14
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t15
=
3000
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t16
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t17
=
3000
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
tval
=
10
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
ssf
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isup_id
].
ssf
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
=
ss7_info
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
=
ss7_info
;
}
/* if (g_ftdm_sngss7_data.cfg.isupCkt[x].id == 0) */
}
/* if (g_ftdm_sngss7_data.cfg.isupCkt[x].id == 0) */
...
@@ -1660,26 +2045,26 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1660,26 +2045,26 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
}
else
{
/* if ((timeslot.siglink) || (timeslot.gap)) */
}
else
{
/* if ((timeslot.siglink) || (timeslot.gap)) */
/* find the ftdm the channel structure for this channel*/
/* find the ftdm the channel structure for this channel*/
i
=
1
;
i
=
1
;
while
(
span
->
channels
[
i
]
!=
NULL
)
{
while
(
isupCkt
->
span
->
channels
[
i
]
!=
NULL
)
{
if
(
span
->
channels
[
i
]
->
physical_chan_id
==
timeslot
.
channel
)
{
if
(
isupCkt
->
span
->
channels
[
i
]
->
physical_chan_id
==
timeslot
.
channel
)
{
break
;
break
;
}
}
i
++
;
i
++
;
}
/* while (span->channels[i] != NULL) */
}
/* while (span->channels[i] != NULL) */
if
(
span
->
channels
[
i
]
==
NULL
)
{
if
(
isupCkt
->
span
->
channels
[
i
]
==
NULL
)
{
/* we weren't able to find the channel in the ftdm channels */
/* we weren't able to find the channel in the ftdm channels */
SS7_ERROR
(
"Unable to find the requested channel %d in the FreeTDM channels!
\n
"
,
timeslot
.
channel
);
SS7_ERROR
(
"Unable to find the requested channel %d in the FreeTDM channels!
\n
"
,
timeslot
.
channel
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
else
{
}
else
{
ftdmchan
=
span
->
channels
[
i
];
ftdmchan
=
isupCkt
->
span
->
channels
[
i
];
}
}
/* try to find a match for the physical span and chan */
/* try to find a match for the physical span and chan */
x
=
1
;
x
=
1
;
while
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
)
{
while
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
)
{
if
((
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
ftdmchan
->
physical_chan_id
)
if
((
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
ftdmchan
->
physical_chan_id
)
&&
&&
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
==
ftdmchan
->
physical_span_id
))
{
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
==
ftdmchan
->
physical_span_id
))
{
/* we have a match so this circuit already exists in the structure */
/* we have a match so this circuit already exists in the structure */
break
;
break
;
...
@@ -1702,33 +2087,65 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1702,33 +2087,65 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
ftdmchan
->
call_data
=
ss7_info
;
ftdmchan
->
call_data
=
ss7_info
;
/* prepare the timer structures */
/* prepare the timer structures */
ss7_info
->
t35
.
sched
=
((
sngss7_span_data_t
*
)
span
->
mod_data
)
->
sched
;
ss7_info
->
t35
.
sched
=
((
sngss7_span_data_t
*
)
isupCkt
->
span
->
mod_data
)
->
sched
;
ss7_info
->
t35
.
counter
=
1
;
ss7_info
->
t35
.
counter
=
1
;
ss7_info
->
t35
.
beat
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isup
_id
].
t35
*
100
;
/* beat is in ms, t35 is in 100ms */
ss7_info
->
t35
.
beat
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isup
Ckt
->
isupInf
].
t35
*
100
;
/* beat is in ms, t35 is in 100ms */
ss7_info
->
t35
.
callback
=
handle_isup_t35
;
ss7_info
->
t35
.
callback
=
handle_isup_t35
;
ss7_info
->
t35
.
sngss7_info
=
ss7_info
;
ss7_info
->
t35
.
sngss7_info
=
ss7_info
;
/* circuit is new so fill in the needed information */
/* circuit is new so fill in the needed information */
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
=
x
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
=
x
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
=
ftdmchan
->
physical_span_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
span
=
ftdmchan
->
physical_span_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
=
ftdmchan
->
physical_chan_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
=
ftdmchan
->
physical_chan_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
=
VOICE
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
=
VOICE
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
cicbase
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
=
isupCkt
->
cicbase
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
infId
=
isup_id
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
infId
=
isupCkt
->
isupInf
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
typeCntrl
=
typeCntrl
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
typeCntrl
=
isupCkt
->
typeCntrl
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t3
=
1200
;
if
(
isupCkt
->
t3
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t12
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t3
=
1200
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t13
=
3000
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t14
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t3
=
isupCkt
->
t3
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t15
=
3000
;
}
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t16
=
300
;
if
(
isupCkt
->
t12
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t17
=
3000
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t12
=
300
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
tval
=
10
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t12
=
isupCkt
->
t12
;
}
if
(
isupCkt
->
t13
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t13
=
3000
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t13
=
isupCkt
->
t13
;
}
if
(
isupCkt
->
t14
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t14
=
300
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t14
=
isupCkt
->
t14
;
}
if
(
isupCkt
->
t15
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t15
=
3000
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t15
=
isupCkt
->
t15
;
}
if
(
isupCkt
->
t16
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t16
=
300
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t16
=
isupCkt
->
t16
;
}
if
(
isupCkt
->
t17
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t17
=
3000
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
t17
=
isupCkt
->
t17
;
}
if
(
isupCkt
->
tval
==
0
)
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
tval
=
10
;
}
else
{
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
tval
=
isupCkt
->
tval
;
}
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
=
ss7_info
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
=
ss7_info
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
ssf
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isup
_id
].
ssf
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
ssf
=
g_ftdm_sngss7_data
.
cfg
.
isupIntf
[
isup
Ckt
->
isupInf
].
ssf
;
/* increment the cicbase */
/* increment the cicbase */
cicbase
++
;
isupCkt
->
cicbase
++
;
}
else
{
/* if (g_ftdm_sngss7_data.cfg.isupCkt[x].id == 0) */
}
else
{
/* if (g_ftdm_sngss7_data.cfg.isupCkt[x].id == 0) */
SS7_DEBUG
(
"Circuit for span=%d, chan=%d is new...id=%d
\n
"
,
SS7_DEBUG
(
"Circuit for span=%d, chan=%d is new...id=%d
\n
"
,
ftdmchan
->
physical_span_id
,
ftdmchan
->
physical_span_id
,
...
@@ -1774,12 +2191,12 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
...
@@ -1774,12 +2191,12 @@ static int ftmod_ss7_fill_in_circuits(char *ch_map, int cicbase, int typeCntrl,
/******************************************************************************/
/******************************************************************************/
static
int
ftmod_ss7_next_timeslot
(
char
*
ch_map
,
sng_timeslot_t
*
timeslot
)
static
int
ftmod_ss7_next_timeslot
(
char
*
ch_map
,
sng_timeslot_t
*
timeslot
)
{
{
int
i
;
int
i
;
int
x
;
int
x
;
int
lower
;
int
lower
;
int
upper
;
int
upper
;
char
tmp
[
5
];
/*KONRAD FIX ME*/
char
tmp
[
5
];
/*KONRAD FIX ME*/
char
new_ch_map
[
MAX_CIC_LENGTH
];
char
new_ch_map
[
MAX_CIC_LENGTH
];
memset
(
&
tmp
[
0
],
'\0'
,
sizeof
(
tmp
));
memset
(
&
tmp
[
0
],
'\0'
,
sizeof
(
tmp
));
memset
(
&
new_ch_map
[
0
],
'\0'
,
sizeof
(
new_ch_map
));
memset
(
&
new_ch_map
[
0
],
'\0'
,
sizeof
(
new_ch_map
));
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论