ipa: Give all components proper names to aid log interpretation

This commit is contained in:
Harald Welte 2017-11-25 00:23:54 +01:00
parent 66fecd46a8
commit be620f6da6
6 changed files with 33 additions and 22 deletions

View File

@ -27,7 +27,7 @@ type component BSC_MS_ConnHdlr extends BSSAP_ConnHdlr {
/* Callback function from general BSSMAP_Emulation whenever a new incoming /* Callback function from general BSSMAP_Emulation whenever a new incoming
* SCCP connection arrivces. Must create + start a new component */ * SCCP connection arrivces. Must create + start a new component */
private function CreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind) private function CreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind, charstring id)
runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr {
log("Incoming SCCP Connection on BSC ?!?"); log("Incoming SCCP Connection on BSC ?!?");
self.stop; self.stop;

View File

@ -22,21 +22,25 @@ type component BSC_CT {
var SCCP_PAR_Address g_sccp_addr_own; var SCCP_PAR_Address g_sccp_addr_own;
var SCCP_PAR_Address g_sccp_addr_remote; var SCCP_PAR_Address g_sccp_addr_remote;
var charstring g_bsc_num_str;
} }
function main(charstring remote_ip, PortNumber remote_port, function main(charstring remote_ip, PortNumber remote_port,
charstring local_ip, PortNumber local_port, charstring local_ip, PortNumber local_port,
MSC_SCCP_MTP3_parameters sccp_pars, MSC_SCCP_MTP3_parameters sccp_pars,
SCCP_PAR_Address sccp_addr_own, SCCP_PAR_Address sccp_addr_own,
SCCP_PAR_Address sccp_addr_remote) runs on BSC_CT SCCP_PAR_Address sccp_addr_remote, charstring id) runs on BSC_CT
{ {
var integer i := 0;
g_sccp_addr_own := sccp_addr_own; g_sccp_addr_own := sccp_addr_own;
g_sccp_addr_remote := sccp_addr_remote; g_sccp_addr_remote := sccp_addr_remote;
/* create components */ /* create components */
vc_IPA := IPA_Emulation_CT.create; vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
vc_SCCP := SCCP_CT.create; vc_SCCP := SCCP_CT.create(id & "-SCCP");
vc_BSSMAP := BSSMAP_Emulation_CT.create; vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP");
map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT); map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
@ -51,14 +55,16 @@ function main(charstring remote_ip, PortNumber remote_port,
vc_IPA.start(IPA_Emulation.main_client(remote_ip, remote_port, local_ip, local_port)); vc_IPA.start(IPA_Emulation.main_client(remote_ip, remote_port, local_ip, local_port));
vc_SCCP.start(SCCPStart(sccp_pars)); vc_SCCP.start(SCCPStart(sccp_pars));
vc_BSSMAP.start(BSSMAP_Emulation.main(BSC_MS_BssmapOps)); vc_BSSMAP.start(BSSMAP_Emulation.main(BSC_MS_BssmapOps, id));
while (true) { while (true) {
/* blocking wait for 5 seconds */
timer T := 5.0; timer T := 5.0;
T.start; T.start;
T.timeout; T.timeout;
f_start_BSC_MS();
//vc_IPA.MTP3_SP_PORT.send(t_ASP_MTP3_TRANSFERreq_sccp('83'O, 1, 2, 0, '012345'O)); f_start_BSC_MS(id & "-MS-" & int2str(i));
i := i + 1;
} }
vc_IPA.done; vc_IPA.done;
@ -66,11 +72,11 @@ function main(charstring remote_ip, PortNumber remote_port,
vc_SCCP.done vc_SCCP.done
} }
function f_start_BSC_MS() runs on BSC_CT { function f_start_BSC_MS(charstring id) runs on BSC_CT {
var BSC_MS_ConnHdlr vc_conn; var BSC_MS_ConnHdlr vc_conn;
/* start new component */ /* start new component */
vc_conn := BSC_MS_ConnHdlr.create; vc_conn := BSC_MS_ConnHdlr.create(id);
/* connect client BSSAP port to BSSAP dispatcher */ /* connect client BSSAP port to BSSAP dispatcher */
connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT); connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT);
/* start component */ /* start component */

View File

@ -103,19 +103,22 @@ runs on test_CT {
function f_init() runs on test_CT { function f_init() runs on test_CT {
var integer i; var integer i;
var charstring id;
for (i := 0; i < NUM_MSC; i := i+1) { for (i := 0; i < NUM_MSC; i := i+1) {
f_init_MscState(msc[i], mp_msc_pc +i, mp_bsc_pc, mp_msc_ssn, mp_bsc_ssn); f_init_MscState(msc[i], mp_msc_pc +i, mp_bsc_pc, mp_msc_ssn, mp_bsc_ssn);
msc[i].MSC := MSC_CT.create; msc[i].MSC := MSC_CT.create;
msc[i].MSC.start(MSC_Simulation.main(mp_msc_ip, mp_msc_port + i, msc[i].sccp_pars, msc[i].sccp_addr_own)); id := "MSC" & int2str(i);
msc[i].MSC.start(MSC_Simulation.main(mp_msc_ip, mp_msc_port + i, msc[i].sccp_pars, msc[i].sccp_addr_own, id));
} }
for (i := 0; i < NUM_BSC; i := i+1) { for (i := 0; i < NUM_BSC; i := i+1) {
f_init_BscState(bsc[i], mp_bsc_pc +i, mp_msc_pc, mp_bsc_ssn, mp_msc_ssn); f_init_BscState(bsc[i], mp_bsc_pc +i, mp_msc_pc, mp_bsc_ssn, mp_msc_ssn);
bsc[i].BSC := BSC_CT.create; bsc[i].BSC := BSC_CT.create;
id := "BSC" & int2str(i);
bsc[i].BSC.start(BSC_MS_Simulation.main(mp_nat_ip, mp_nat_port, mp_bsc_ip, mp_bsc_port+i, bsc[i].BSC.start(BSC_MS_Simulation.main(mp_nat_ip, mp_nat_port, mp_bsc_ip, mp_bsc_port+i,
bsc[i].sccp_pars, bsc[i].sccp_addr_own, bsc[i].sccp_pars, bsc[i].sccp_addr_own,
bsc[i].sccp_addr_peer)); bsc[i].sccp_addr_peer, id));
} }
} }

View File

@ -26,11 +26,11 @@ type component MSC_ConnHdlr extends BSSAP_ConnHdlr {
/* Callback function from general BSSMAP_Emulation whenever a new incoming /* Callback function from general BSSMAP_Emulation whenever a new incoming
* SCCP connection arrivces. Must create + start a new component */ * SCCP connection arrivces. Must create + start a new component */
private function CreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind) private function CreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind, charstring id)
runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr { runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr {
var MSC_ConnHdlr vc_conn; var MSC_ConnHdlr vc_conn;
/* Create a new BSSAP_ConnHdlr component */ /* Create a new BSSAP_ConnHdlr component */
vc_conn := MSC_ConnHdlr.create; vc_conn := MSC_ConnHdlr.create(g_bssmap_id & "-Conn-" & int2str(conn_ind.connectionId));
/* connect it to the port */ /* connect it to the port */
connect(vc_conn:BSSAP, self:CLIENT); connect(vc_conn:BSSAP, self:CLIENT);
/* start it */ /* start it */

View File

@ -31,12 +31,12 @@ type component MSC_CT {
function main(charstring local_ip, PortNumber local_port, function main(charstring local_ip, PortNumber local_port,
MSC_SCCP_MTP3_parameters sccp_pars, MSC_SCCP_MTP3_parameters sccp_pars,
SCCP_PAR_Address sccp_addr_own) runs on MSC_CT SCCP_PAR_Address sccp_addr_own, charstring id) runs on MSC_CT
{ {
/* create components */ /* create components */
vc_IPA := IPA_Emulation_CT.create; vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
vc_SCCP := SCCP_CT.create; vc_SCCP := SCCP_CT.create(id & "-SCCP");
vc_BSSMAP := BSSMAP_Emulation_CT.create; vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP");
map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT); map(vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
@ -51,7 +51,7 @@ function main(charstring local_ip, PortNumber local_port,
vc_IPA.start(IPA_Emulation.main_server(local_ip, local_port)); vc_IPA.start(IPA_Emulation.main_server(local_ip, local_port));
vc_SCCP.start(SCCPStart(sccp_pars)); vc_SCCP.start(SCCPStart(sccp_pars));
vc_BSSMAP.start(BSSMAP_Emulation.main(MSC_BssmapOps)); vc_BSSMAP.start(BSSMAP_Emulation.main(MSC_BssmapOps, id & "-BSSMAP"));
/* wait until termination of respective components */ /* wait until termination of respective components */
vc_IPA.done; vc_IPA.done;

View File

@ -57,6 +57,7 @@ type component BSSMAP_Emulation_CT {
/* use 16 as this is also the number of SCCP connections that SCCP_Emulation can handle */ /* use 16 as this is also the number of SCCP connections that SCCP_Emulation can handle */
var ConnectionData ConnectionTable[16]; var ConnectionData ConnectionTable[16];
var charstring g_bssmap_id;
var integer g_next_e1_ts := 1; var integer g_next_e1_ts := 1;
}; };
@ -226,7 +227,7 @@ runs on BSSMAP_Emulation_CT {
/* call-back type, to be provided by specific implementation; called when new SCCP connection /* call-back type, to be provided by specific implementation; called when new SCCP connection
* arrives */ * arrives */
type function BssmapCreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind) type function BssmapCreateCallback(ASP_SCCP_N_CONNECT_ind conn_ind, charstring id)
runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr; runs on BSSMAP_Emulation_CT return BSSAP_ConnHdlr;
type function BssmapUnitdataCallback(PDU_BSSAP bssap) type function BssmapUnitdataCallback(PDU_BSSAP bssap)
@ -237,8 +238,9 @@ type record BssmapOps {
BssmapUnitdataCallback unitdata_cb BssmapUnitdataCallback unitdata_cb
} }
function main(BssmapOps ops) runs on BSSMAP_Emulation_CT { function main(BssmapOps ops, charstring id) runs on BSSMAP_Emulation_CT {
g_bssmap_id := id;
f_conn_table_init(); f_conn_table_init();
while (true) { while (true) {
@ -270,7 +272,7 @@ function main(BssmapOps ops) runs on BSSMAP_Emulation_CT {
/* SCCP -> Client: new connection from BSC */ /* SCCP -> Client: new connection from BSC */
[] SCCP.receive(ASP_SCCP_N_CONNECT_ind:?) -> value conn_ind { [] SCCP.receive(ASP_SCCP_N_CONNECT_ind:?) -> value conn_ind {
vc_conn := ops.create_cb.apply(conn_ind); vc_conn := ops.create_cb.apply(conn_ind, id);
/* store mapping between client components and SCCP connectionId */ /* store mapping between client components and SCCP connectionId */
f_conn_table_add(vc_conn, conn_ind.connectionId); f_conn_table_add(vc_conn, conn_ind.connectionId);
/* handle user payload */ /* handle user payload */