Review at  https://gerrit.osmocom.org/7860

BSSAP_Adapter: Introduce transport over IPA/SCCPlite

In addition to the existing 3GPP AoIP stacking, allow BSSAP to
run on top of a SCCPlite stacking.  Implement both the server and the
client role for IPA.

Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676
---
M bsc/BSC_Tests.ttcn
M bsc/regen_makefile.sh
M library/BSSAP_Adapter.ttcn
3 files changed, 44 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/60/7860/1

diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 8380175..0299026 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -100,6 +100,7 @@
        charstring mp_test_ip := "127.0.0.1";
 
        BSSAP_Configuration mp_bssap_cfg := {
+               transport := BSSAP_TRANSPORT_AoIP,
                sccp_service_type := "mtp3_itu",
                sctp_addr := { 23905, "127.0.0.1", 2905, "127.0.0.1" },
                own_pc := 185,
diff --git a/bsc/regen_makefile.sh b/bsc/regen_makefile.sh
index 1e52252..08629d2 100755
--- a/bsc/regen_makefile.sh
+++ b/bsc/regen_makefile.sh
@@ -4,6 +4,6 @@
 
 FILES="*.ttcn *.ttcnpp IPA_CodecPort_CtrlFunctDef.cc IPL4asp_PT.cc 
IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc SCTPasp_PT.cc 
RTP_EncDec.cc SDP_EncDec.cc RTP_CodecPort_CtrlFunctDef.cc 
MGCP_CodecPort_CtrlFunctDef.cc IuUP_EncDec.cc Native_FunctionDefs.cc 
TELNETasp_PT.cc *.c"
 
-export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP 
-DUSE_MTP3_DISTRIBUTOR"
+export CPPFLAGS_TTCN3="-DIPA_EMULATION_RSL -DIPA_EMULATION_MGCP 
-DIPA_EMULATION_SCCP -DUSE_MTP3_DISTRIBUTOR"
 
 ../regen-makefile.sh $MAIN $FILES
diff --git a/library/BSSAP_Adapter.ttcn b/library/BSSAP_Adapter.ttcn
index 6c4f30e..1a9fdb4 100644
--- a/library/BSSAP_Adapter.ttcn
+++ b/library/BSSAP_Adapter.ttcn
@@ -13,6 +13,8 @@
 import from MTP3asp_Types all;
 import from MTP3asp_PortType all;
 
+import from IPA_Emulation all;
+
 import from SCCP_Types all;
 import from SCCPasp_Types all;
 import from SCCP_Emulation all;
@@ -26,7 +28,8 @@
 
 type record BSSAP_Adapter {
        /* component references */
-       M3UA_CT vc_M3UA,
+       M3UA_CT vc_M3UA, /* only in 3GPP AoIP */
+       IPA_Emulation_CT vc_IPA, /* only in SCCPliste */
        SCCP_CT vc_SCCP,
 
        MSC_SCCP_MTP3_parameters sccp_pars,
@@ -37,7 +40,14 @@
        BSSMAP_Emulation_CT vc_BSSMAP
 }
 
+type enumerated BSSAP_Transport {
+       BSSAP_TRANSPORT_AoIP,   /* 3GPP AoIP: SCCP over M3UA over SCTP */
+       BSSAP_TRANSPORT_SCCPlite_SERVER, /* SCCPlite: SCCP over IPA over TCP */
+       BSSAP_TRANSPORT_SCCPlite_CLIENT  /* SCCPlite: SCCP over IPA over TCP */
+};
+
 type record BSSAP_Configuration {
+       BSSAP_Transport transport,
        charstring sccp_service_type,
        SCTP_Association_Address sctp_addr,
        integer own_pc,
@@ -87,18 +97,42 @@
        ops.sccp_addr_peer := ba.sccp_addr_peer;
 
        /* create components */
-       ba.vc_M3UA := M3UA_CT.create(id & "-M3UA");
        ba.vc_SCCP := SCCP_CT.create(id & "-SCCP");
        if (isvalue(ops)) {
                ba.vc_BSSMAP := BSSMAP_Emulation_CT.create(id & "-BSSMAP");
        }
+       select (cfg.transport) {
+       case (BSSAP_TRANSPORT_AoIP) {
+               ba.vc_M3UA := M3UA_CT.create(id & "-M3UA");
+               map(ba.vc_M3UA:SCTP_PORT, system:sctp);
+               /* connect MTP3 service provider (M3UA) to lower side of SCCP */
+               connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
+               ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx));
+               }
+       case (BSSAP_TRANSPORT_SCCPlite_SERVER) {
+               ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
+               map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+               /* connect MTP3 service provider (IPA) to lower side of SCCP */
+               connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
+               
ba.vc_IPA.start(IPA_Emulation.main_server(cfg.sctp_addr.local_ip_addr,
+                                                       
cfg.sctp_addr.local_sctp_port));
+               }
+       case (BSSAP_TRANSPORT_SCCPlite_CLIENT) {
+               ba.vc_IPA := IPA_Emulation_CT.create(id & "-IPA");
+               map(ba.vc_IPA:IPA_PORT, system:IPA_CODEC_PT);
+               /* connect MTP3 service provider (IPA) to lower side of SCCP */
+               connect(ba.vc_IPA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
+               
ba.vc_IPA.start(IPA_Emulation.main_client(cfg.sctp_addr.remote_ip_addr,
+                                                       
cfg.sctp_addr.remote_sctp_port,
+                                                       
cfg.sctp_addr.local_ip_addr,
+                                                       
cfg.sctp_addr.local_sctp_port));
+               }
+       case else {
+               setverdict(fail, "Unsuppored BSSAP_Transport");
+               self.stop;
+               }
+       }
 
-       map(ba.vc_M3UA:SCTP_PORT, system:sctp);
-
-       /* connect MTP3 service provider (M3UA) to lower side of SCCP */
-       connect(ba.vc_M3UA:MTP3_SP_PORT, ba.vc_SCCP:MTP3_SCCP_PORT);
-
-       ba.vc_M3UA.start(f_M3UA_Emulation(cfg.sctp_addr, cfg.rctx));
        ba.vc_SCCP.start(SCCPStart(ba.sccp_pars));
 
        if (isvalue(ops)) {

-- 
To view, visit https://gerrit.osmocom.org/7860
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie844c4de62e0ef5d5c4c366185968211a7f6d676
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <[email protected]>

Reply via email to