Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
d5e90dfb
提交
d5e90dfb
authored
10月 29, 2011
作者:
Nenad Corbic
浏览文件
操作
浏览文件
下载
差异文件
Merge remote branch 'qa-master/releases.3.4' into releases.3.4
上级
acfdddab
08768608
全部展开
显示空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
194 行增加
和
72 行删除
+194
-72
ftmod_sangoma_ss7_cntrl.c
...tdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c
+22
-32
ftmod_sangoma_ss7_handle.c
...dm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
+68
-0
ftmod_sangoma_ss7_logger.c
...dm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
+1
-1
ftmod_sangoma_ss7_main.c
...etdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
+74
-17
ftmod_sangoma_ss7_main.h
...etdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
+4
-2
ftmod_sangoma_ss7_out.c
...eetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
+0
-2
ftmod_sangoma_ss7_relay.c
...tdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_relay.c
+10
-9
ftmod_sangoma_ss7_support.c
...m/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
+13
-7
ftmod_sangoma_ss7_xml.c
...eetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c
+2
-2
没有找到文件。
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_cntrl.c
浏览文件 @
d5e90dfb
...
@@ -48,35 +48,7 @@ static int ftmod_ss7_enable_isap(int suId);
...
@@ -48,35 +48,7 @@ static int ftmod_ss7_enable_isap(int suId);
static
int
ftmod_ss7_enable_nsap
(
int
suId
);
static
int
ftmod_ss7_enable_nsap
(
int
suId
);
static
int
ftmod_ss7_enable_mtpLinkSet
(
int
lnkSetId
);
static
int
ftmod_ss7_enable_mtpLinkSet
(
int
lnkSetId
);
int
ftmod_ss7_inhibit_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_uninhibit_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_bind_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_unbind_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_activate_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_deactivate_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_deactivate2_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_activate_mtplinkSet
(
uint32_t
id
);
int
ftmod_ss7_deactivate_mtplinkSet
(
uint32_t
id
);
int
ftmod_ss7_deactivate2_mtplinkSet
(
uint32_t
id
);
int
ftmod_ss7_lpo_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_lpr_mtp3link
(
uint32_t
id
);
int
ftmod_ss7_shutdown_isup
(
void
);
int
ftmod_ss7_shutdown_mtp3
(
void
);
int
ftmod_ss7_shutdown_mtp2
(
void
);
int
ftmod_ss7_shutdown_relay
(
void
);
int
ftmod_ss7_disable_relay_channel
(
uint32_t
chanId
);
int
ftmod_ss7_disable_grp_mtp3Link
(
uint32_t
procId
);
int
ftmod_ss7_enable_grp_mtp3Link
(
uint32_t
procId
);
int
ftmod_ss7_disable_grp_mtp2Link
(
uint32_t
procId
);
int
ftmod_ss7_block_isup_ckt
(
uint32_t
cktId
);
int
ftmod_ss7_unblock_isup_ckt
(
uint32_t
cktId
);
/******************************************************************************/
/******************************************************************************/
/* FUNCTIONS ******************************************************************/
/* FUNCTIONS ******************************************************************/
...
@@ -779,7 +751,14 @@ int ftmod_ss7_disable_grp_mtp3Link(uint32_t procId)
...
@@ -779,7 +751,14 @@ int ftmod_ss7_disable_grp_mtp3Link(uint32_t procId)
cntrl
.
t
.
cntrl
.
action
=
AUBND_DIS
;
/* disable and unbind */
cntrl
.
t
.
cntrl
.
action
=
AUBND_DIS
;
/* disable and unbind */
cntrl
.
t
.
cntrl
.
subAction
=
SAGR_DSTPROCID
;
/* specificed element */
cntrl
.
t
.
cntrl
.
subAction
=
SAGR_DSTPROCID
;
/* specificed element */
if
(
g_ftdm_sngss7_data
.
cfg
.
procId
==
procId
)
{
SS7_DEBUG
(
"Executing MTP3 cntrl command local pid =%i
\n
"
,
procId
);
return
(
sng_cntrl_mtp3
(
&
pst
,
&
cntrl
));
return
(
sng_cntrl_mtp3
(
&
pst
,
&
cntrl
));
}
else
{
SS7_WARN
(
"Executing MTP3 cntrl command different local=%i target=%i
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
procId
,
procId
);
return
(
sng_cntrl_mtp3_nowait
(
&
pst
,
&
cntrl
));
}
}
}
...
@@ -811,7 +790,14 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId)
...
@@ -811,7 +790,14 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId)
cntrl
.
t
.
cntrl
.
action
=
ABND_ENA
;
/* bind and enable */
cntrl
.
t
.
cntrl
.
action
=
ABND_ENA
;
/* bind and enable */
cntrl
.
t
.
cntrl
.
subAction
=
SAGR_DSTPROCID
;
/* specificed element */
cntrl
.
t
.
cntrl
.
subAction
=
SAGR_DSTPROCID
;
/* specificed element */
if
(
g_ftdm_sngss7_data
.
cfg
.
procId
==
procId
)
{
SS7_DEBUG
(
"Executing MTP3 cntrl command local pid =%i
\n
"
,
procId
);
return
(
sng_cntrl_mtp3
(
&
pst
,
&
cntrl
));
return
(
sng_cntrl_mtp3
(
&
pst
,
&
cntrl
));
}
else
{
SS7_WARN
(
"Executing MTP3 cntrl command different local=%i target=%i
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
procId
,
procId
);
return
(
sng_cntrl_mtp3_nowait
(
&
pst
,
&
cntrl
));
}
}
}
...
@@ -848,7 +834,7 @@ int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId)
...
@@ -848,7 +834,7 @@ int ftmod_ss7_disable_grp_mtp2Link(uint32_t procId)
}
}
/******************************************************************************/
/******************************************************************************/
int
ftmod_ss7_block_isup_ckt
(
uint32_t
cktId
)
int
__ftmod_ss7_block_isup_ckt
(
uint32_t
cktId
,
ftdm_bool_t
wait
)
{
{
SiMngmt
cntrl
;
SiMngmt
cntrl
;
Pst
pst
;
Pst
pst
;
...
@@ -876,7 +862,11 @@ int ftmod_ss7_block_isup_ckt(uint32_t cktId)
...
@@ -876,7 +862,11 @@ int ftmod_ss7_block_isup_ckt(uint32_t cktId)
cntrl
.
t
.
cntrl
.
action
=
ADISIMM
;
/* block via BLO */
cntrl
.
t
.
cntrl
.
action
=
ADISIMM
;
/* block via BLO */
cntrl
.
t
.
cntrl
.
subAction
=
SAELMNT
;
/* specificed element */
cntrl
.
t
.
cntrl
.
subAction
=
SAELMNT
;
/* specificed element */
if
(
wait
==
FTDM_TRUE
)
{
return
(
sng_cntrl_isup
(
&
pst
,
&
cntrl
));
return
(
sng_cntrl_isup
(
&
pst
,
&
cntrl
));
}
else
{
return
(
sng_cntrl_isup_nowait
(
&
pst
,
&
cntrl
));
}
}
}
/******************************************************************************/
/******************************************************************************/
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_handle.c
浏览文件 @
d5e90dfb
差异被折叠。
点击展开。
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_logger.c
浏览文件 @
d5e90dfb
...
@@ -791,7 +791,7 @@ void handle_sng_relay_alarm(Pst *pst, RyMngmt *sta)
...
@@ -791,7 +791,7 @@ void handle_sng_relay_alarm(Pst *pst, RyMngmt *sta)
break
;
break
;
/**************************************************************************/
/**************************************************************************/
case
(
LRY_USTA_UP
):
/* channel up */
case
(
LRY_USTA_UP
):
/* channel up */
ftdm_log
(
FTDM_LOG_
ERROR
,
"[RELAY] Channel UP: tx procId %d: channel %d
\n
"
,
ftdm_log
(
FTDM_LOG_
INFO
,
"[RELAY] Channel UP: tx procId %d: channel %d
\n
"
,
sta
->
t
.
usta
.
s
.
ryUpUsta
.
sendPid
,
sta
->
t
.
usta
.
s
.
ryUpUsta
.
sendPid
,
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
);
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
);
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c
浏览文件 @
d5e90dfb
...
@@ -290,6 +290,8 @@ static void handle_hw_alarm(ftdm_event_t *e)
...
@@ -290,6 +290,8 @@ static void handle_hw_alarm(ftdm_event_t *e)
ftdm_assert
(
e
!=
NULL
,
"Null event!
\n
"
);
ftdm_assert
(
e
!=
NULL
,
"Null event!
\n
"
);
SS7_DEBUG
(
"handle_hw_alarm event
\n
"
);
for
(
x
=
(
g_ftdm_sngss7_data
.
cfg
.
procId
*
MAX_CIC_MAP_LENGTH
)
+
1
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
;
x
++
)
{
for
(
x
=
(
g_ftdm_sngss7_data
.
cfg
.
procId
*
MAX_CIC_MAP_LENGTH
)
+
1
;
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
!=
0
;
x
++
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
==
SNG_CKT_VOICE
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
==
SNG_CKT_VOICE
)
{
ss7_info
=
(
sngss7_chan_data_t
*
)
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
;
ss7_info
=
(
sngss7_chan_data_t
*
)
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
obj
;
...
@@ -298,13 +300,17 @@ static void handle_hw_alarm(ftdm_event_t *e)
...
@@ -298,13 +300,17 @@ static void handle_hw_alarm(ftdm_event_t *e)
if
(
e
->
channel
->
span_id
==
ftdmchan
->
physical_span_id
&&
if
(
e
->
channel
->
span_id
==
ftdmchan
->
physical_span_id
&&
e
->
channel
->
chan_id
==
ftdmchan
->
physical_chan_id
)
{
e
->
channel
->
chan_id
==
ftdmchan
->
physical_chan_id
)
{
if
(
e
->
enum_id
==
FTDM_OOB_ALARM_TRAP
)
{
if
(
e
->
enum_id
==
FTDM_OOB_ALARM_TRAP
)
{
SS7_DEBUG
(
"handle_hw_alarm: Set FLAG_GRP_HW_BLOCK_TX
\n
"
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
if
(
ftdmchan
->
state
!=
FTDM_CHANNEL_STATE_SUSPENDED
)
{
if
(
ftdmchan
->
state
!=
FTDM_CHANNEL_STATE_SUSPENDED
)
{
ftdm_set_state
(
ftdmchan
,
FTDM_CHANNEL_STATE_SUSPENDED
);
ftdm_set_state
(
ftdmchan
,
FTDM_CHANNEL_STATE_SUSPENDED
);
}
}
}
else
{
}
else
if
(
e
->
enum_id
==
FTDM_OOB_ALARM_CLEAR
)
{
SS7_DEBUG
(
"handle_hw_alarm: Clear
\n
"
);
if
(
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
))
{
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
SS7_DEBUG
(
"handle_hw_alarm: Setting FLAG_GRP_HW_UNBLK_TX
\n
"
);
if
(
ftdmchan
->
state
!=
FTDM_CHANNEL_STATE_SUSPENDED
)
{
if
(
ftdmchan
->
state
!=
FTDM_CHANNEL_STATE_SUSPENDED
)
{
ftdm_set_state
(
ftdmchan
,
FTDM_CHANNEL_STATE_SUSPENDED
);
ftdm_set_state
(
ftdmchan
,
FTDM_CHANNEL_STATE_SUSPENDED
);
}
}
...
@@ -312,6 +318,7 @@ static void handle_hw_alarm(ftdm_event_t *e)
...
@@ -312,6 +318,7 @@ static void handle_hw_alarm(ftdm_event_t *e)
}
}
}
}
}
}
}
}
}
/* MONITIOR THREADS ***********************************************************/
/* MONITIOR THREADS ***********************************************************/
...
@@ -360,9 +367,12 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
...
@@ -360,9 +367,12 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
if
(
ftdmchan
->
alarm_flags
!=
0
)
{
/* we'll send out block */
if
(
ftdmchan
->
alarm_flags
!=
0
)
{
/* we'll send out block */
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
}
else
{
/* we'll send out reset */
}
else
{
/* we'll send out reset */
if
(
sngss7_test_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
))
{
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX_DN
);
sngss7_clear_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_BLOCK_TX_DN
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
sngss7_set_ckt_blk_flag
(
ss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
SS7_DEBUG
(
"b_alarm_test FLAG_GRP_HW_UNBLK_TX
\n
"
);
}
}
}
}
}
usleep
(
50
);
usleep
(
50
);
...
@@ -1025,6 +1035,10 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -1025,6 +1035,10 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
/**************************************************************************/
/**************************************************************************/
case
FTDM_CHANNEL_STATE_RESTART
:
/* CICs needs a Reset */
case
FTDM_CHANNEL_STATE_RESTART
:
/* CICs needs a Reset */
SS7_DEBUG_CHAN
(
ftdmchan
,
"RESTART: Current flags: ckt=0x%X, blk=0x%X
\n
"
,
sngss7_info
->
ckt_flags
,
sngss7_info
->
blk_flags
);
if
(
sngss7_test_ckt_blk_flag
(
sngss7_info
,
FLAG_CKT_UCIC_BLOCK
))
{
if
(
sngss7_test_ckt_blk_flag
(
sngss7_info
,
FLAG_CKT_UCIC_BLOCK
))
{
if
((
sngss7_test_ckt_flag
(
sngss7_info
,
FLAG_RESET_RX
))
||
if
((
sngss7_test_ckt_flag
(
sngss7_info
,
FLAG_RESET_RX
))
||
(
sngss7_test_ckt_flag
(
sngss7_info
,
FLAG_GRP_RESET_RX
)))
{
(
sngss7_test_ckt_flag
(
sngss7_info
,
FLAG_GRP_RESET_RX
)))
{
...
@@ -1139,7 +1153,7 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -1139,7 +1153,7 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
/**************************************************************************/
/**************************************************************************/
case
FTDM_CHANNEL_STATE_SUSPENDED
:
/* circuit has been blocked */
case
FTDM_CHANNEL_STATE_SUSPENDED
:
/* circuit has been blocked */
SS7_DEBUG_CHAN
(
ftdmchan
,
"Current flags: ckt=0x%X, blk=0x%X
\n
"
,
SS7_DEBUG_CHAN
(
ftdmchan
,
"
SUSPEND:
Current flags: ckt=0x%X, blk=0x%X
\n
"
,
sngss7_info
->
ckt_flags
,
sngss7_info
->
ckt_flags
,
sngss7_info
->
blk_flags
);
sngss7_info
->
blk_flags
);
...
@@ -1243,6 +1257,25 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -1243,6 +1257,25 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
if
(
sngss7_test_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_UNBLK_TX
))
{
if
(
sngss7_test_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_UNBLK_TX
))
{
SS7_DEBUG_CHAN
(
ftdmchan
,
"Processing FLAG_GRP_HW_UNBLK_TX flag %s
\n
"
,
""
);
SS7_DEBUG_CHAN
(
ftdmchan
,
"Processing FLAG_GRP_HW_UNBLK_TX flag %s
\n
"
,
""
);
if
(
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX
)
&&
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX_DN
))
{
/* Block was sent out we must send an unblock */
/* Do not send an unblock if we also have Management block
enabled */
if
(
!
sngss7_test_ckt_blk_flag
(
sngss7_info
,
(
FLAG_CKT_MN_BLOCK_TX
|
FLAG_CKT_MN_BLOCK_TX
|
FLAG_GRP_MN_BLOCK_TX
|
FLAG_GRP_MN_BLOCK_TX_DN
)
)
)
{
ft_to_sngss7_ubl
(
ftdmchan
);
}
}
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX_DN
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_BLOCK_TX_DN
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_GRP_HW_UNBLK_TX
);
...
@@ -1256,6 +1289,8 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -1256,6 +1289,8 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
|
FLAG_CKT_MN_BLOCK_RX_DN
|
FLAG_CKT_MN_BLOCK_RX_DN
|
FLAG_GRP_MN_BLOCK_RX
|
FLAG_GRP_MN_BLOCK_RX
|
FLAG_GRP_MN_BLOCK_RX_DN
|
FLAG_GRP_MN_BLOCK_RX_DN
|
FLAG_CKT_UCIC_BLOCK
|
FLAG_CKT_UCIC_BLOCK_DN
)
)
)
)
)
{
)
{
...
@@ -1410,6 +1445,15 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
...
@@ -1410,6 +1445,15 @@ ftdm_status_t ftdm_sangoma_ss7_process_state_change (ftdm_channel_t * ftdmchan)
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_CKT_UCIC_UNBLK
);
sngss7_clear_ckt_blk_flag
(
sngss7_info
,
FLAG_CKT_UCIC_UNBLK
);
/* throw the channel into reset to sync states */
/* throw the channel into reset to sync states */
clear_rx_grs_flags
(
sngss7_info
);
clear_rx_grs_data
(
sngss7_info
);
clear_tx_grs_flags
(
sngss7_info
);
clear_tx_grs_data
(
sngss7_info
);
clear_rx_rsc_flags
(
sngss7_info
);
clear_tx_rsc_flags
(
sngss7_info
);
clear_tx_rsc_flags
(
sngss7_info
);
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_RESET_TX
);
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_RESET_TX
);
/* bring the channel into restart again */
/* bring the channel into restart again */
...
@@ -1567,6 +1611,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
...
@@ -1567,6 +1611,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
sngss7_span_data_t
*
sngss7_span
=
NULL
;
sngss7_span_data_t
*
sngss7_span
=
NULL
;
sng_isup_inf_t
*
sngss7_intf
=
NULL
;
sng_isup_inf_t
*
sngss7_intf
=
NULL
;
int
x
;
int
x
;
int
first_channel
=
0
;
SS7_INFO
(
"Starting span %s:%u.
\n
"
,
span
->
name
,
span
->
span_id
);
SS7_INFO
(
"Starting span %s:%u.
\n
"
,
span
->
name
,
span
->
span_id
);
...
@@ -1611,13 +1656,15 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
...
@@ -1611,13 +1656,15 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
sngss7_clear_ckt_flag
(
sngss7_info
,
FLAG_INFID_PAUSED
);
sngss7_clear_ckt_flag
(
sngss7_info
,
FLAG_INFID_PAUSED
);
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_INFID_RESUME
);
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_INFID_RESUME
);
}
}
#if
0
#if
1
/* throw the grp reset flag */
/* throw the grp reset flag */
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_GRP_RESET_TX
);
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_GRP_RESET_TX
);
if (x == 1) {
if
(
first_channel
==
0
)
{
sngss7_set_flag(sngss7_info, FLAG_GRP_RESET_BASE);
sngss7_chan_data_t
*
cinfo
=
ftdmchan
->
call_data
;
sngss7_span->tx_grs.circuit = sngss7_info->circuit->id;
sngss7_set_ckt_flag
(
sngss7_info
,
FLAG_GRP_RESET_BASE
);
sngss7_span->tx_grs.range = span->chan_count -1;
cinfo
->
tx_grs
.
circuit
=
sngss7_info
->
circuit
->
id
;
cinfo
->
tx_grs
.
range
=
span
->
chan_count
-
1
;
first_channel
=
1
;
}
}
#else
#else
/* throw the channel into reset */
/* throw the channel into reset */
...
@@ -1651,6 +1698,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
...
@@ -1651,6 +1698,7 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
static
ftdm_status_t
ftdm_sangoma_ss7_stop
(
ftdm_span_t
*
span
)
static
ftdm_status_t
ftdm_sangoma_ss7_stop
(
ftdm_span_t
*
span
)
{
{
/*this function is called by the FT-Core to stop this span */
/*this function is called by the FT-Core to stop this span */
int
timeout
=
0
;
ftdm_log
(
FTDM_LOG_INFO
,
"Stopping span %s:%u.
\n
"
,
span
->
name
,
span
->
span_id
);
ftdm_log
(
FTDM_LOG_INFO
,
"Stopping span %s:%u.
\n
"
,
span
->
name
,
span
->
span_id
);
...
@@ -1659,10 +1707,17 @@ static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
...
@@ -1659,10 +1707,17 @@ static ftdm_status_t ftdm_sangoma_ss7_stop(ftdm_span_t * span)
/* wait for the thread to stop */
/* wait for the thread to stop */
while
(
ftdm_test_flag
(
span
,
FTDM_SPAN_IN_THREAD
))
{
while
(
ftdm_test_flag
(
span
,
FTDM_SPAN_IN_THREAD
))
{
ftdm_log
(
FTDM_LOG_DEBUG
,
"Waiting for monitor thread to end for %s:%u.
\n
"
,
ftdm_set_flag
(
span
,
FTDM_SPAN_STOP_THREAD
);
ftdm_log
(
FTDM_LOG_DEBUG
,
"Waiting for monitor thread to end for %s:%u. [flags=0x%08X]
\n
"
,
span
->
name
,
span
->
name
,
span
->
span_id
);
span
->
span_id
,
ftdm_sleep
(
1
);
span
->
flags
);
/* Wait 50ms */
ftdm_sleep
(
50
);
timeout
++
;
/* timeout after 5 sec, better to crash than hang */
ftdm_assert_return
(
timeout
<
100
,
FTDM_FALSE
,
"SS7 Span stop timeout!
\n
"
);
}
}
/* KONRAD FIX ME - deconfigure any circuits, links, attached to this span */
/* KONRAD FIX ME - deconfigure any circuits, links, attached to this span */
...
@@ -1725,12 +1780,14 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
...
@@ -1725,12 +1780,14 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_ss7_span_config)
/* parse the configuration and apply to the global config structure */
/* parse the configuration and apply to the global config structure */
if
(
ftmod_ss7_parse_xml
(
ftdm_parameters
,
span
))
{
if
(
ftmod_ss7_parse_xml
(
ftdm_parameters
,
span
))
{
ftdm_log
(
FTDM_LOG_CRIT
,
"Failed to parse configuration!
\n
"
);
ftdm_log
(
FTDM_LOG_CRIT
,
"Failed to parse configuration!
\n
"
);
ftdm_sleep
(
1000
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
}
/* configure libsngss7 */
/* configure libsngss7 */
if
(
ft_to_sngss7_cfg_all
())
{
if
(
ft_to_sngss7_cfg_all
())
{
ftdm_log
(
FTDM_LOG_CRIT
,
"Failed to configure LibSngSS7!
\n
"
);
ftdm_log
(
FTDM_LOG_CRIT
,
"Failed to configure LibSngSS7!
\n
"
);
ftdm_sleep
(
1000
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
}
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.h
浏览文件 @
d5e90dfb
...
@@ -732,7 +732,9 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId);
...
@@ -732,7 +732,9 @@ int ftmod_ss7_enable_grp_mtp3Link(uint32_t procId);
int
ftmod_ss7_disable_grp_mtp2Link
(
uint32_t
procId
);
int
ftmod_ss7_disable_grp_mtp2Link
(
uint32_t
procId
);
int
ftmod_ss7_block_isup_ckt
(
uint32_t
cktId
);
#define ftmod_ss7_block_isup_ckt(x) __ftmod_ss7_block_isup_ckt(x,FTDM_TRUE)
#define ftmod_ss7_block_isup_ckt_nowait(x) __ftmod_ss7_block_isup_ckt(x,FTDM_FALSE)
int
__ftmod_ss7_block_isup_ckt
(
uint32_t
cktId
,
ftdm_bool_t
wait
);
int
ftmod_ss7_unblock_isup_ckt
(
uint32_t
cktId
);
int
ftmod_ss7_unblock_isup_ckt
(
uint32_t
cktId
);
...
@@ -915,7 +917,7 @@ if (ftdmchan->state == new_state) { \
...
@@ -915,7 +917,7 @@ if (ftdmchan->state == new_state) { \
#define SS7_ERROR_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_ERROR, msg , ##args)
#define SS7_ERROR_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_ERROR, msg , ##args)
#define SS7_CTRIT_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_CRIT, msg , ##args)
#define SS7_CTRIT_CHAN(fchan, msg, args...) ftdm_log_chan(fchan, FTDM_LOG_CRIT, msg , ##args)
#ifdef
KONRAD
_DEVEL
#ifdef
SS7_CODE
_DEVEL
#define SS7_DEVEL_DEBUG(a,...) ftdm_log(FTDM_LOG_DEBUG,a,##__VA_ARGS__ );
#define SS7_DEVEL_DEBUG(a,...) ftdm_log(FTDM_LOG_DEBUG,a,##__VA_ARGS__ );
#else
#else
#define SS7_DEVEL_DEBUG(a,...)
#define SS7_DEVEL_DEBUG(a,...)
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_out.c
浏览文件 @
d5e90dfb
...
@@ -523,8 +523,6 @@ void ft_to_sngss7_grs (ftdm_channel_t *fchan)
...
@@ -523,8 +523,6 @@ void ft_to_sngss7_grs (ftdm_channel_t *fchan)
cinfo
->
circuit
->
cic
,
cinfo
->
circuit
->
cic
,
(
cinfo
->
circuit
->
cic
+
cinfo
->
tx_grs
.
range
));
(
cinfo
->
circuit
->
cic
+
cinfo
->
tx_grs
.
range
));
memset
(
&
cinfo
->
tx_grs
,
0
,
sizeof
(
cinfo
->
tx_grs
));
sngss7_set_ckt_flag
(
cinfo
,
FLAG_GRP_RESET_SENT
);
sngss7_set_ckt_flag
(
cinfo
,
FLAG_GRP_RESET_SENT
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
SS7_FUNC_TRACE_EXIT
(
__FUNCTION__
);
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_relay.c
浏览文件 @
d5e90dfb
...
@@ -42,8 +42,6 @@
...
@@ -42,8 +42,6 @@
/******************************************************************************/
/******************************************************************************/
/* PROTOTYPES *****************************************************************/
/* PROTOTYPES *****************************************************************/
ftdm_status_t
handle_relay_connect
(
RyMngmt
*
sta
);
ftdm_status_t
handle_relay_disconnect
(
RyMngmt
*
sta
);
/*static ftdm_status_t enable_all_ckts_for_relay(void);*/
/*static ftdm_status_t enable_all_ckts_for_relay(void);*/
static
ftdm_status_t
reconfig_all_ckts_for_relay
(
void
);
static
ftdm_status_t
reconfig_all_ckts_for_relay
(
void
);
...
@@ -84,23 +82,24 @@ ftdm_status_t handle_relay_connect(RyMngmt *sta)
...
@@ -84,23 +82,24 @@ ftdm_status_t handle_relay_connect(RyMngmt *sta)
/******************************************************************************/
/******************************************************************************/
ftdm_status_t
handle_relay_disconnect_on_error
(
RyMngmt
*
sta
)
ftdm_status_t
handle_relay_disconnect_on_error
(
RyMngmt
*
sta
)
{
{
SS7_DEBUG
(
"SS7 relay disconnect on error
\n
"
);
/* check which procId is in error, if it is 1, disable the ckts */
/* check which procId is in error, if it is 1, disable the ckts */
if
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
==
1
)
{
if
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
==
1
)
{
/* we've lost the server, bring down the mtp2 links */
disble_all_mtp2_sigs_for_relay
();
/* we've lost the server, bring the sig status down on all ckts */
/* we've lost the server, bring the sig status down on all ckts */
disable_all_ckts_for_relay
();
disable_all_ckts_for_relay
();
/* we've lost the server, bring down the mtp2 links */
disble_all_mtp2_sigs_for_relay
();
}
}
/* check if the channel is a server, means we just lost a MGW */
/* check if the channel is a server, means we just lost a MGW */
if
(
g_ftdm_sngss7_data
.
cfg
.
relay
[
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
].
type
==
LRY_CT_TCP_SERVER
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
relay
[
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
].
type
==
LRY_CT_TCP_SERVER
)
{
/* we've lost the client, bring down all mtp3 links for this procId */
disable_all_sigs_for_relay
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
);
/* we've lost the client, bring down all the ckts for this procId */
/* we've lost the client, bring down all the ckts for this procId */
block_all_ckts_for_relay
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
);
block_all_ckts_for_relay
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
);
/* we've lost the client, bring down all mtp3 links for this procId */
disable_all_sigs_for_relay
(
sta
->
t
.
usta
.
s
.
ryErrUsta
.
errPid
);
}
}
return
FTDM_SUCCESS
;
return
FTDM_SUCCESS
;
...
@@ -110,6 +109,8 @@ ftdm_status_t handle_relay_disconnect_on_error(RyMngmt *sta)
...
@@ -110,6 +109,8 @@ ftdm_status_t handle_relay_disconnect_on_error(RyMngmt *sta)
ftdm_status_t
handle_relay_disconnect_on_down
(
RyMngmt
*
sta
)
ftdm_status_t
handle_relay_disconnect_on_down
(
RyMngmt
*
sta
)
{
{
SS7_DEBUG
(
"SS7 relay disconnect on down
\n
"
);
/* check if the channel is a server, means we just lost a MGW */
/* check if the channel is a server, means we just lost a MGW */
if
(
g_ftdm_sngss7_data
.
cfg
.
relay
[
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
].
type
==
LRY_CT_TCP_SERVER
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
relay
[
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
].
type
==
LRY_CT_TCP_SERVER
)
{
block_all_ckts_for_relay
(
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
);
block_all_ckts_for_relay
(
sta
->
t
.
usta
.
s
.
ryUpUsta
.
id
);
...
@@ -248,7 +249,7 @@ ftdm_status_t block_all_ckts_for_relay(uint32_t procId)
...
@@ -248,7 +249,7 @@ ftdm_status_t block_all_ckts_for_relay(uint32_t procId)
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
==
SNG_CKT_VOICE
)
{
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
type
==
SNG_CKT_VOICE
)
{
/* send a block request via stack manager */
/* send a block request via stack manager */
ret
=
ftmod_ss7_block_isup_ckt
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
);
ret
=
ftmod_ss7_block_isup_ckt
_nowait
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
id
);
if
(
ret
)
{
if
(
ret
)
{
SS7_INFO
(
"Successfully BLOcked CIC:%d(ckt:%d) due to Relay failure
\n
"
,
SS7_INFO
(
"Successfully BLOcked CIC:%d(ckt:%d) due to Relay failure
\n
"
,
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
,
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
cic
,
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_support.c
浏览文件 @
d5e90dfb
...
@@ -922,11 +922,6 @@ int check_for_state_change(ftdm_channel_t *ftdmchan)
...
@@ -922,11 +922,6 @@ int check_for_state_change(ftdm_channel_t *ftdmchan)
/******************************************************************************/
/******************************************************************************/
ftdm_status_t
extract_chan_data
(
uint32_t
circuit
,
sngss7_chan_data_t
**
sngss7_info
,
ftdm_channel_t
**
ftdmchan
)
ftdm_status_t
extract_chan_data
(
uint32_t
circuit
,
sngss7_chan_data_t
**
sngss7_info
,
ftdm_channel_t
**
ftdmchan
)
{
{
if
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
obj
==
NULL
)
{
SS7_ERROR
(
"sngss7_info is Null for circuit #%d
\n
"
,
circuit
);
return
FTDM_FAIL
;
}
if
(
!
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
obj
)
{
if
(
!
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
obj
)
{
SS7_ERROR
(
"No ss7 info for circuit #%d
\n
"
,
circuit
);
SS7_ERROR
(
"No ss7 info for circuit #%d
\n
"
,
circuit
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
...
@@ -935,8 +930,19 @@ ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_in
...
@@ -935,8 +930,19 @@ ftdm_status_t extract_chan_data(uint32_t circuit, sngss7_chan_data_t **sngss7_in
*
sngss7_info
=
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
obj
;
*
sngss7_info
=
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
circuit
].
obj
;
if
(
!
(
*
sngss7_info
)
->
ftdmchan
)
{
if
(
!
(
*
sngss7_info
)
->
ftdmchan
)
{
SS7_ERROR
(
"No channel for circuit #%d
\n
"
,
circuit
);
SS7_ERROR
(
"No ftdmchan for circuit #%d
\n
"
,
circuit
);
return
FTDM_FAIL
;
}
if
(
!
(
*
sngss7_info
)
->
ftdmchan
->
span
)
{
SS7_CRITICAL
(
"ftdmchan->span = NULL for circuit #%d
\n
"
,
circuit
);
return
FTDM_FAIL
;
return
FTDM_FAIL
;
}
if
(
!
(
*
sngss7_info
)
->
ftdmchan
->
span
->
signal_data
)
{
SS7_CRITICAL
(
"ftdmchan->span->signal_data = NULL for circuit #%d
\n
"
,
circuit
);
return
FTDM_FAIL
;
}
}
*
ftdmchan
=
(
*
sngss7_info
)
->
ftdmchan
;
*
ftdmchan
=
(
*
sngss7_info
)
->
ftdmchan
;
...
@@ -1422,7 +1428,7 @@ ftdm_status_t process_span_ucic(ftdm_span_t *ftdmspan)
...
@@ -1422,7 +1428,7 @@ ftdm_status_t process_span_ucic(ftdm_span_t *ftdmspan)
/* lock the channel */
/* lock the channel */
ftdm_channel_lock
(
ftdmchan
);
ftdm_channel_lock
(
ftdmchan
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx UCIC
\n
"
,
sngss7_info
->
circuit
->
cic
);
SS7_INFO_CHAN
(
ftdmchan
,
"[CIC:%d]Rx
Span
UCIC
\n
"
,
sngss7_info
->
circuit
->
cic
);
/* clear up any pending state changes */
/* clear up any pending state changes */
while
(
ftdm_test_flag
(
ftdmchan
,
FTDM_CHANNEL_STATE_CHANGE
))
{
while
(
ftdm_test_flag
(
ftdmchan
,
FTDM_CHANNEL_STATE_CHANGE
))
{
...
...
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_xml.c
浏览文件 @
d5e90dfb
...
@@ -2878,7 +2878,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
...
@@ -2878,7 +2878,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
count
))
{
(
g_ftdm_sngss7_data
.
cfg
.
isupCkt
[
x
].
chan
==
count
))
{
/* we are processing a circuit that already exists */
/* we are processing a circuit that already exists */
SS7_DEBUG
(
"Found an existing circuit %d, ccSpanId=%d, chan%d
\n
"
,
SS7_DE
VEL_DE
BUG
(
"Found an existing circuit %d, ccSpanId=%d, chan%d
\n
"
,
x
,
x
,
ccSpan
->
id
,
ccSpan
->
id
,
count
);
count
);
...
@@ -2887,7 +2887,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
...
@@ -2887,7 +2887,7 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
flag
=
1
;
flag
=
1
;
/* not supporting reconfig at this time */
/* not supporting reconfig at this time */
SS7_DEBUG
(
"Not supporting ckt reconfig at this time!
\n
"
);
SS7_DE
VEL_DE
BUG
(
"Not supporting ckt reconfig at this time!
\n
"
);
goto
move_along
;
goto
move_along
;
}
else
{
}
else
{
/* this is not the droid you are looking for */
/* this is not the droid you are looking for */
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论