<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20106">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BSSGP_Emulation: Make L3 (SM/GMM) decoding a compile-time option<br><br>This allows us to build low-level tests that don't require all of L3.<br><br>Change-Id: I7ef7e93e2cd1d37e7e4a62947ca8dfde30d93b95<br>---<br>R library/BSSGP_Emulation.ttcnpp<br>M pcu/gen_links.sh<br>M pcu/regen_makefile.sh<br>M sgsn/gen_links.sh<br>M sgsn/regen_makefile.sh<br>5 files changed, 48 insertions(+), 13 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/06/20106/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/BSSGP_Emulation.ttcn b/library/BSSGP_Emulation.ttcnpp</span><br><span>similarity index 97%</span><br><span>rename from library/BSSGP_Emulation.ttcn</span><br><span>rename to library/BSSGP_Emulation.ttcnpp</span><br><span>index e3023ed..05a730b 100644</span><br><span>--- a/library/BSSGP_Emulation.ttcn</span><br><span>+++ b/library/BSSGP_Emulation.ttcnpp</span><br><span>@@ -18,8 +18,10 @@</span><br><span> import from Osmocom_Gb_Types all;</span><br><span> import from IPL4asp_Types all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span> import from MobileL3_GMM_SM_Types all;</span><br><span> import from MobileL3_Types all;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span> import from LLC_Types all;</span><br><span> import from LLC_Templates all;</span><br><span>@@ -50,17 +52,25 @@</span><br><span> /* port from our (internal) point of view */</span><br><span> type port BSSGP_SP_PT message {</span><br><span>  in      PDU_BSSGP,</span><br><span style="color: hsl(0, 100%, 40%);">-              PDU_LLC,</span><br><span style="color: hsl(120, 100%, 40%);">+              PDU_LLC</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span style="color: hsl(120, 100%, 40%);">+           ,</span><br><span>            PDU_L3_MS_SGSN,</span><br><span style="color: hsl(0, 100%, 40%);">-         PDU_L3_SGSN_MS;</span><br><span style="color: hsl(120, 100%, 40%);">+               PDU_L3_SGSN_MS</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+                ;</span><br><span>    out     PDU_BSSGP,</span><br><span>           PDU_LLC,</span><br><span>             PDU_SN,</span><br><span>              NsStatusIndication,</span><br><span>          BssgpStatusIndication,</span><br><span style="color: hsl(0, 100%, 40%);">-          ASP_Event,</span><br><span style="color: hsl(120, 100%, 40%);">+            ASP_Event</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span style="color: hsl(120, 100%, 40%);">+         ,</span><br><span>            PDU_L3_MS_SGSN,</span><br><span style="color: hsl(0, 100%, 40%);">-         PDU_L3_SGSN_MS;</span><br><span style="color: hsl(120, 100%, 40%);">+               PDU_L3_SGSN_MS</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+                ;</span><br><span> } with { extension "internal" };</span><br><span> </span><br><span> /* port from the user point of view */</span><br><span>@@ -70,13 +80,21 @@</span><br><span>          BssgpStatusIndication,</span><br><span>               PDU_BSSGP,</span><br><span>           PDU_LLC,</span><br><span style="color: hsl(0, 100%, 40%);">-                PDU_SN,</span><br><span style="color: hsl(120, 100%, 40%);">+               PDU_SN</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span style="color: hsl(120, 100%, 40%);">+            ,</span><br><span>            PDU_L3_MS_SGSN,</span><br><span style="color: hsl(0, 100%, 40%);">-         PDU_L3_SGSN_MS;</span><br><span style="color: hsl(120, 100%, 40%);">+               PDU_L3_SGSN_MS</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+                ;</span><br><span>    out     PDU_BSSGP,</span><br><span style="color: hsl(0, 100%, 40%);">-              PDU_LLC,</span><br><span style="color: hsl(120, 100%, 40%);">+              PDU_LLC</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span style="color: hsl(120, 100%, 40%);">+           ,</span><br><span>            PDU_L3_SGSN_MS,</span><br><span style="color: hsl(0, 100%, 40%);">-         PDU_L3_MS_SGSN;</span><br><span style="color: hsl(120, 100%, 40%);">+               PDU_L3_MS_SGSN</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+                ;</span><br><span> } with { extension "internal" };</span><br><span> </span><br><span> signature BSSGP_register_client(hexstring imsi, OCT4 tlli, BssgpCellId cell_id);</span><br><span>@@ -167,8 +185,11 @@</span><br><span> type enumerated BssgpDecodeDepth {</span><br><span>         BSSGP_DECODE_DEPTH_BSSGP,</span><br><span>    BSSGP_DECODE_DEPTH_LLC,</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_DECODE_DEPTH_SNDCP,</span><br><span style="color: hsl(120, 100%, 40%);">+     BSSGP_DECODE_DEPTH_SNDCP</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span style="color: hsl(120, 100%, 40%);">+  ,</span><br><span>    BSSGP_DECODE_DEPTH_L3</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> };</span><br><span> </span><br><span> type record BssgpConfig {</span><br><span>@@ -524,8 +545,10 @@</span><br><span>  var NsUnitdataIndication udi;</span><br><span>        var PDU_BSSGP bs_pdu;</span><br><span>        var PDU_LLC llc;</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span>         var PDU_L3_MS_SGSN l3_mo;</span><br><span>    var PDU_L3_SGSN_MS l3_mt;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span>        /* bogus unblock, just respond with ACK */</span><br><span>   [] BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK(g_cfg.bvci), 0)) -> value udi {</span><br><span>@@ -618,6 +641,7 @@</span><br><span>            BSCP.send(f_BnsUdReq(bs_pdu, g_cfg.bvci));</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span>    /* ConnHdlr sends L3: Encode and send as UL_UD / DL_UD */</span><br><span>    [g_cfg.sgsn_role] BSSGP_SP.receive(PDU_L3_SGSN_MS:?) -> value l3_mt sender vc_conn {</span><br><span>              var integer idx := f_tbl_idx_by_comp(vc_conn);</span><br><span>@@ -635,6 +659,7 @@</span><br><span>                 var octetstring llc_enc := enc_PDU_LLC(valueof(ts_LLC_UI(l3_enc, sapi, '1'B, n_u)));</span><br><span>                 BSCP.send(f_BnsUdReq(ts_BSSGP_UL_UD(ClientTable[idx].tlli, ClientTable[idx].cell_id, llc_enc), g_cfg.bvci));</span><br><span>         }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span>        /* ConnHdlr sends raw LLC: Encode and send as UL_UD / DL_UD */</span><br><span>       [not g_cfg.sgsn_role] BSSGP_SP.receive(PDU_LLC:?) -> value llc sender vc_conn {</span><br><span>@@ -656,6 +681,7 @@</span><br><span>     return ret;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span> function f_llc_sapi_by_l3_mo(PDU_L3_MS_SGSN l3_mo) return BIT4 {</span><br><span>         if (ischosen(l3_mo.msgs.gprs_mm)) {</span><br><span>          return c_LLC_SAPI_LLGMM;</span><br><span>@@ -679,6 +705,7 @@</span><br><span>       setverdict(fail, "No LLC SAPI for ", l3_mt);</span><br><span>       mtc.stop;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span> </span><br><span> </span><br><span>@@ -698,8 +725,10 @@</span><br><span> type record BssgpDecoded {</span><br><span>      PDU_BSSGP bssgp,</span><br><span>     PDU_LLC llc optional,</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span>    PDU_L3_MS_SGSN l3_mo optional,</span><br><span>       PDU_L3_SGSN_MS l3_mt optional,</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span>       PDU_SN sndcp optional</span><br><span> }</span><br><span> </span><br><span>@@ -708,8 +737,10 @@</span><br><span>        var BssgpDecoded dec := {</span><br><span>            bssgp := bssgp,</span><br><span>              llc := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span>             l3_mo := omit,</span><br><span>               l3_mt := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span>               sndcp := omit</span><br><span>        };</span><br><span> </span><br><span>@@ -729,6 +760,7 @@</span><br><span>                 }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef BSSGP_EM_L3</span><br><span>    /* Decode L3, if it is a LLC PDU containing L3 */</span><br><span>    if (g_cfg.depth >= BSSGP_DECODE_DEPTH_L3) {</span><br><span>               if (isvalue(dec.llc) and match(dec.llc, tr_LLC_UI_L3)) {</span><br><span>@@ -739,6 +771,7 @@</span><br><span>                       }</span><br><span>            }</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span>        return dec;</span><br><span> }</span><br><span>diff --git a/pcu/gen_links.sh b/pcu/gen_links.sh</span><br><span>index 3a52c99..d834bd0 100755</span><br><span>--- a/pcu/gen_links.sh</span><br><span>+++ b/pcu/gen_links.sh</span><br><span>@@ -51,7 +51,7 @@</span><br><span> DIR=../library</span><br><span> FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.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 style="color: hsl(0, 100%, 40%);">-FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="BSSGP_Emulation.ttcnpp Osmocom_Gb_Types.ttcn "</span><br><span> FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "</span><br><span> FILES+="PCUIF_Types.ttcn PCUIF_CodecPort.ttcn "</span><br><span> gen_links $DIR $FILES</span><br><span>diff --git a/pcu/regen_makefile.sh b/pcu/regen_makefile.sh</span><br><span>index 6fd000e..b2063ac 100755</span><br><span>--- a/pcu/regen_makefile.sh</span><br><span>+++ b/pcu/regen_makefile.sh</span><br><span>@@ -1,5 +1,7 @@</span><br><span> #!/bin/sh</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-FILES="*.ttcn BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc TELNETasp_PT.cc Native_FunctionDefs.cc"</span><br><span style="color: hsl(120, 100%, 40%);">+FILES="*.ttcn *.ttcnpp BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc NS_CodecPort_CtrlFunctDef.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc TELNETasp_PT.cc Native_FunctionDefs.cc"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+export CPPFLAGS_TTCN3="-DBSSGP_EM_L3"</span><br><span> </span><br><span> ../regen-makefile.sh PCU_Tests.ttcn $FILES</span><br><span>diff --git a/sgsn/gen_links.sh b/sgsn/gen_links.sh</span><br><span>index 541670d..578b454 100755</span><br><span>--- a/sgsn/gen_links.sh</span><br><span>+++ b/sgsn/gen_links.sh</span><br><span>@@ -85,7 +85,7 @@</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_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "</span><br><span> FILES+="NS_Emulation.ttcn PCUIF_Types.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "</span><br><span style="color: hsl(0, 100%, 40%);">-FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "</span><br><span style="color: hsl(120, 100%, 40%);">+FILES+="BSSGP_Emulation.ttcnpp Osmocom_Gb_Types.ttcn "</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>diff --git a/sgsn/regen_makefile.sh b/sgsn/regen_makefile.sh</span><br><span>index a239a3b..1d1411e 100755</span><br><span>--- a/sgsn/regen_makefile.sh</span><br><span>+++ b/sgsn/regen_makefile.sh</span><br><span>@@ -2,7 +2,7 @@</span><br><span> </span><br><span> 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 -DUSE_MTP3_DISTRIBUTOR -DRAN_EMULATION_RANAP"</span><br><span style="color: hsl(120, 100%, 40%);">+export CPPFLAGS_TTCN3="-DIPA_EMULATION_GSUP -DIPA_EMULATION_CTRL -DUSE_MTP3_DISTRIBUTOR -DRAN_EMULATION_RANAP -DBSSGP_EM_L3"</span><br><span> </span><br><span> ../regen-makefile.sh SGSN_Tests.ttcn $FILES</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/20106">change 20106</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/+/20106"/><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: I7ef7e93e2cd1d37e7e4a62947ca8dfde30d93b95 </div>
<div style="display:none"> Gerrit-Change-Number: 20106 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>