<p>laforge <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/13754">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  pespin: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sgsn: Integrate RANAP<br><br>Integrate RANAP support to SGSN_Tests.ttcn.<br><br>Related: OS#2857<br>Change-Id: Ib62fc4c6007f6f4c47db7ca096a8d629bc72bb22<br>---<br>M sgsn/SGSN_Tests.ttcn<br>M sgsn/gen_links.sh<br>M sgsn/regen_makefile.sh<br>3 files changed, 106 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn</span><br><span>index e349719..a7cc57f 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -19,6 +19,7 @@</span><br><span> import from BSSGP_Types all;</span><br><span> import from BSSGP_Emulation all;</span><br><span> import from Osmocom_Gb_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from SCCPasp_Types all;</span><br><span> </span><br><span> import from MobileL3_CommonIE_Types all;</span><br><span> import from MobileL3_GMM_SM_Types all;</span><br><span>@@ -30,6 +31,12 @@</span><br><span> import from GSUP_Types all;</span><br><span> import from IPA_Emulation all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import from RAN_Adapter all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RAN_Emulation all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RANAP_Templates all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RANAP_PDU_Descriptions all;</span><br><span style="color: hsl(120, 100%, 40%);">+import from RANAP_IEs all;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> import from GTP_Emulation all;</span><br><span> import from GTP_Templates all;</span><br><span> import from GTP_CodecPort all;</span><br><span>@@ -87,6 +94,20 @@</span><br><span>                      handle_sns := false</span><br><span>          }</span><br><span>    };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  RAN_Configurations mp_ranap_cfg := {</span><br><span style="color: hsl(120, 100%, 40%);">+          {</span><br><span style="color: hsl(120, 100%, 40%);">+                     transport := RANAP_TRANSPORT_IuCS,</span><br><span style="color: hsl(120, 100%, 40%);">+                    sccp_service_type := "mtp3_itu",</span><br><span style="color: hsl(120, 100%, 40%);">+                    sctp_addr := { 23908, "127.0.0.1", 2905, "127.0.0.1" },</span><br><span style="color: hsl(120, 100%, 40%);">+                   own_pc := 195,</span><br><span style="color: hsl(120, 100%, 40%);">+                        own_ssn := 142,</span><br><span style="color: hsl(120, 100%, 40%);">+                       peer_pc := 188, /* 0.23.4 */</span><br><span style="color: hsl(120, 100%, 40%);">+                  peer_ssn := 142,</span><br><span style="color: hsl(120, 100%, 40%);">+                      sio := '83'O,</span><br><span style="color: hsl(120, 100%, 40%);">+                 rctx := 2</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> };</span><br><span> </span><br><span> type record GbInstance {</span><br><span>@@ -100,8 +121,12 @@</span><br><span> type record length(NUM_GB) of NSConfiguration NSConfigurations;</span><br><span> type record length(NUM_GB) of BssgpCellId BssgpCellIds;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const integer NUM_RNC := 1;</span><br><span style="color: hsl(120, 100%, 40%);">+type record of RAN_Configuration RAN_Configurations;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type component test_CT {</span><br><span>    var GbInstances g_gb;</span><br><span style="color: hsl(120, 100%, 40%);">+ var RAN_Adapter g_ranap[NUM_RNC];</span><br><span> </span><br><span>        var GSUP_Emulation_CT vc_GSUP;</span><br><span>       var IPA_Emulation_CT vc_GSUP_IPA;</span><br><span>@@ -116,7 +141,7 @@</span><br><span>      var boolean g_use_echo := false;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-type component BSSGP_ConnHdlr extends BSSGP_Client_CT, GSUP_ConnHdlr, GTP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+type component BSSGP_ConnHdlr extends BSSGP_Client_CT, GSUP_ConnHdlr, GTP_ConnHdlr, RAN_ConnHdlr {</span><br><span>   var BSSGP_ConnHdlrPars g_pars;</span><br><span>       timer g_Tguard;</span><br><span>      var LLC_Entities llc;</span><br><span>@@ -145,7 +170,10 @@</span><br><span>         BssgpCellIds bssgp_cell_id,</span><br><span>  AuthVector vec optional,</span><br><span>     SGSN_ConnHdlrNetworkPars net,</span><br><span style="color: hsl(0, 100%, 40%);">-   float t_guard</span><br><span style="color: hsl(120, 100%, 40%);">+ float t_guard,</span><br><span style="color: hsl(120, 100%, 40%);">+        /* only in IuPS / RANAP case */</span><br><span style="color: hsl(120, 100%, 40%);">+       SCCP_PAR_Address sccp_addr_local,</span><br><span style="color: hsl(120, 100%, 40%);">+     SCCP_PAR_Address sccp_addr_peer</span><br><span> };</span><br><span> </span><br><span> private function f_cellid_to_RAI(in BssgpCellId cell_id) return RoutingAreaIdentificationV {</span><br><span>@@ -240,6 +268,8 @@</span><br><span> </span><br><span> /* mcc_mnc is 24.008 10.5.5.15 encoded. 262 42 */</span><br><span> function f_init(BcdMccMnc mcc_mnc := '262F42'H) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     if (g_initialized == true) {</span><br><span>                 return;</span><br><span>      }</span><br><span>@@ -288,11 +318,44 @@</span><br><span>    f_init_gb(g_gb[0], "SGSN_Test-Gb0", 0);</span><br><span>    f_init_gb(g_gb[1], "SGSN_Test-Gb1", 1);</span><br><span>    f_init_gb(g_gb[2], "SGSN_Test-Gb2", 2);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   for (i := 0; i < NUM_RNC; i := i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_ran_adapter_init(g_ranap[i], mp_ranap_cfg[i], "SGSN_Test_" & int2str(i), RNC_RanOps);</span><br><span style="color: hsl(120, 100%, 40%);">+         f_ran_adapter_start(g_ranap[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span>    f_init_gsup("SGSN_Test");</span><br><span>  f_init_gtp("SGSN_Test");</span><br><span>   f_vty_enable_echo_interval(g_use_echo);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function RncUnitdataCallback(RANAP_PDU ranap)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAN_Emulation_CT return template RANAP_PDU {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template RANAP_PDU resp := omit;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        log ("RANAP_RncUnitDataCallback");</span><br><span style="color: hsl(120, 100%, 40%);">+  /* answer all RESET with RESET ACK */</span><br><span style="color: hsl(120, 100%, 40%);">+ if (match(ranap, tr_RANAP_Reset)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           log("RANAP_RncUnitdataCallback: Responding to RESET with RESET-ACK");</span><br><span style="color: hsl(120, 100%, 40%);">+               var CN_DomainIndicator dom;</span><br><span style="color: hsl(120, 100%, 40%);">+           dom := ranap.initiatingMessage.value_.Reset.protocolIEs[1].value_.cN_DomainIndicator;</span><br><span style="color: hsl(120, 100%, 40%);">+         resp := ts_RANAP_ResetAck(dom);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     return resp;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+const RanOps RNC_RanOps := {</span><br><span style="color: hsl(120, 100%, 40%);">+       ranap_create_cb := refers(RAN_Emulation.RanapExpectedCreateCallback),</span><br><span style="color: hsl(120, 100%, 40%);">+ ranap_unitdata_cb := refers(RncUnitdataCallback),</span><br><span style="color: hsl(120, 100%, 40%);">+     ps_domain := true,</span><br><span style="color: hsl(120, 100%, 40%);">+    decode_dtap := true,</span><br><span style="color: hsl(120, 100%, 40%);">+  role_ms := true,</span><br><span style="color: hsl(120, 100%, 40%);">+      protocol := RAN_PROTOCOL_RANAP,</span><br><span style="color: hsl(120, 100%, 40%);">+       transport := RANAP_TRANSPORT_IuCS,</span><br><span style="color: hsl(120, 100%, 40%);">+    use_osmux := false,</span><br><span style="color: hsl(120, 100%, 40%);">+   sccp_addr_local := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+      sccp_addr_peer := omit</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> type function void_fn(charstring id) runs on BSSGP_ConnHdlr;</span><br><span> </span><br><span> /* helper function to create, connect and start a BSSGP_ConnHdlr component */</span><br><span>@@ -317,7 +380,9 @@</span><br><span>              bssgp_cell_id := { gb[0].cfg.cell_id, gb[1].cfg.cell_id, gb[2].cfg.cell_id },</span><br><span>                vec := omit,</span><br><span>                 net := net_pars,</span><br><span style="color: hsl(0, 100%, 40%);">-                t_guard := t_guard</span><br><span style="color: hsl(120, 100%, 40%);">+            t_guard := t_guard,</span><br><span style="color: hsl(120, 100%, 40%);">+           sccp_addr_local := g_ranap[0].sccp_addr_own,</span><br><span style="color: hsl(120, 100%, 40%);">+          sccp_addr_peer := g_ranap[0].sccp_addr_peer</span><br><span>  };</span><br><span> </span><br><span>       vc_conn := BSSGP_ConnHdlr.create(id);</span><br><span>@@ -328,6 +393,10 @@</span><br><span>         connect(vc_conn:BSSGP[2], gb[2].vc_BSSGP:BSSGP_SP);</span><br><span>  connect(vc_conn:BSSGP_PROC[2], gb[2].vc_BSSGP:BSSGP_PROC);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        /* FIXME: support multiple RNCs */</span><br><span style="color: hsl(120, 100%, 40%);">+    connect(vc_conn:BSSAP, g_ranap[0].vc_RAN:CLIENT);</span><br><span style="color: hsl(120, 100%, 40%);">+     connect(vc_conn:BSSAP_PROC, g_ranap[0].vc_RAN:PROC);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT);</span><br><span>  connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC);</span><br><span> </span><br><span>diff --git a/sgsn/gen_links.sh b/sgsn/gen_links.sh</span><br><span>index fe09726..3552bc2 100755</span><br><span>--- a/sgsn/gen_links.sh</span><br><span>+++ b/sgsn/gen_links.sh</span><br><span>@@ -53,6 +53,35 @@</span><br><span> FILES="GTPC_EncDec.cc  GTPC_Types.ttcn  GTPU_EncDec.cc  GTPU_Types.ttcn"</span><br><span> gen_links $DIR $FILES</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+# required by M3UA_Emulation</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.ProtocolModules.M3UA/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="M3UA_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# required by M3UA_Emulation</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.TestPorts.SCTPasp/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="SCTPasp_PT.cc  SCTPasp_PT.hh  SCTPasp_PortType.ttcn  SCTPasp_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# required by M3UA Emulation</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.TestPorts.MTP3asp/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="MTP3asp_PortType.ttcn  MTP3asp_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+# required by SCCP Emulation</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.ProtocolEmulations.M3UA/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="M3UA_Emulation.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=$BASEDIR/titan.ProtocolEmulations.SCCP/src</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="SCCP_Emulation.ttcn  SCCP_EncDec.cc  SCCP_Mapping.ttcnpp  SCCP_Types.ttcn  SCCPasp_Types.ttcn"</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+DIR=../library/ranap</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="RANAP_CommonDataTypes.asn RANAP_Constants.asn RANAP_Containers.asn RANAP_IEs.asn RANAP_PDU_Contents.asn RANAP_PDU_Descriptions.asn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="RANAP_Types.ttcn RANAP_Templates.ttcn RANAP_CodecPort.ttcn RANAP_EncDec.cc "</span><br><span style="color: hsl(120, 100%, 40%);">+gen_links $DIR $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> DIR=../library</span><br><span> FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "</span><br><span> FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "</span><br><span>@@ -60,6 +89,7 @@</span><br><span> FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn "</span><br><span> FILES+="Osmocom_VTY_Functions.ttcn "</span><br><span> FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="RAN_Emulation.ttcnpp RAN_Adapter.ttcnpp SCCP_Templates.ttcn "</span><br><span> # IPA_Emulation + dependencies</span><br><span> FILES+="IPA_Types.ttcn IPA_Emulation.ttcnpp IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc Native_Functions.ttcn Native_FunctionDefs.cc GSUP_Types.ttcn GSUP_Emulation.ttcn "</span><br><span> FILES+="GTP_CodecPort.ttcn GTP_CodecPort_CtrlFunct.ttcn GTP_CodecPort_CtrlFunctDef.cc GTP_Emulation.ttcn</span><br><span>diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh</span><br><span>index 0cf2e64..a239a3b 100755</span><br><span>--- a/sgsn/regen_makefile.sh</span><br><span>+++ b/sgsn/regen_makefile.sh</span><br><span>@@ -1,7 +1,9 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn *.ttcnpp BSSGP_EncDec.cc LLC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc RLCMAC_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc IPA_CodecPort_CtrlFunctDef.cc GTPU_EncDec.cc GTPC_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp *.asn BSSGP_EncDec.cc LLC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc RLCMAC_EncDec.cc Native_FunctionDefs.cc TELNETasp_PT.cc IPA_CodecPort_CtrlFunctDef.cc GTPU_EncDec.cc GTPC_EncDec.cc GTP_CodecPort_CtrlFunctDef.cc SCCP_EncDec.cc  SCTPasp_PT.cc RANAP_EncDec.cc "</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP -DIPA_EMULATION_CTRL"</span><br><span style="color: hsl(120, 100%, 40%);">+export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP -DIPA_EMULATION_CTRL -DUSE_MTP3_DISTRIBUTOR -DRAN_EMULATION_RANAP"</span><br><span> </span><br><span> ../regen-makefile.sh SGSN_Tests.ttcn $FILES</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+sed -i -e 's/^LINUX_LIBS = -lxml2/LINUX_LIBS = -lxml2 -lfftranscode/' Makefile</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/13754">change 13754</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/13754"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ib62fc4c6007f6f4c47db7ca096a8d629bc72bb22 </div>
<div style="display:none"> Gerrit-Change-Number: 13754 </div>
<div style="display:none"> Gerrit-PatchSet: 8 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>