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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sccp: Add TC_callingparty_ssn_only()<br><br>This test verifies that libosmo-sccp will properly respond to SCCP<br>traffic that only has a SSN in the CallingPartyAddress.  That situation<br>poses the unique challenge of how to route a response, as we lack<br>a GT and a PC to do the routing.<br><br>In order to support this, libosm-sccp now adds the PC into the<br>CallingPartyAddr when passing such messages from M3UA to SCCP. This<br>way the recipient can simply respond back to that address and it will<br>be routed on PC.<br><br>Change-Id: Ided599a922fb7f6dbbfe90f817c5419ab793f293<br>Related: OS#5146<br>---<br>M library/SCCP_Templates.ttcn<br>M sccp/SCCP_Tests_RAW.ttcn<br>2 files changed, 36 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/SCCP_Templates.ttcn b/library/SCCP_Templates.ttcn</span><br><span>index 55bf745..5167e4b 100644</span><br><span>--- a/library/SCCP_Templates.ttcn</span><br><span>+++ b/library/SCCP_Templates.ttcn</span><br><span>@@ -15,6 +15,19 @@</span><br><span> import from SCCPasp_Types all;</span><br><span> import from SCCP_Emulation all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* construct a SCCP_PAR_Address with just SSN and no PC or GT */</span><br><span style="color: hsl(120, 100%, 40%);">+template (value) SCCP_PAR_Address ts_SccpAddr_SSN(integer ssn) := {</span><br><span style="color: hsl(120, 100%, 40%);">+   addressIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+         pointCodeIndic := '0'B,</span><br><span style="color: hsl(120, 100%, 40%);">+               ssnIndicator := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+         globalTitleIndic := '0000'B,</span><br><span style="color: hsl(120, 100%, 40%);">+          routingIndicator := '1'B</span><br><span style="color: hsl(120, 100%, 40%);">+      },</span><br><span style="color: hsl(120, 100%, 40%);">+    signPointCode := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+        subsystemNumber := ssn,</span><br><span style="color: hsl(120, 100%, 40%);">+       globalTitle := omit</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* construct a SCCP_PAR_Address with just PC + SSN and no GT */</span><br><span> template (value) SCCP_PAR_Address ts_SccpAddr_PC_SSN(integer pc, integer ssn, octetstring sio,</span><br><span>                                                        charstring sccp_srv_type) := {</span><br><span>diff --git a/sccp/SCCP_Tests_RAW.ttcn b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>index 356fbb2..1ac82a2 100644</span><br><span>--- a/sccp/SCCP_Tests_RAW.ttcn</span><br><span>+++ b/sccp/SCCP_Tests_RAW.ttcn</span><br><span>@@ -312,7 +312,8 @@</span><br><span> </span><br><span> function f_scmg_xceive(SCCP_PAR_Address calling, SCCP_PAR_Address called,</span><br><span>                  template (value) PDU_SCMG_message tx,</span><br><span style="color: hsl(0, 100%, 40%);">-                   template (omit) PDU_SCMG_message rx_exp) runs on SCCP_Test_RAW_CT</span><br><span style="color: hsl(120, 100%, 40%);">+                     template (omit) PDU_SCMG_message rx_exp,</span><br><span style="color: hsl(120, 100%, 40%);">+                      boolean accept_other_called_resp := false) runs on SCCP_Test_RAW_CT</span><br><span> {</span><br><span>      var boolean exp_something := true;</span><br><span>   timer T := 5.0;</span><br><span>@@ -328,6 +329,9 @@</span><br><span>        [exp_something] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_UDT(called, calling, decmatch rx_exp))) {</span><br><span>              setverdict(pass);</span><br><span>            }</span><br><span style="color: hsl(120, 100%, 40%);">+     [exp_something and accept_other_called_resp] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_UDT(called, ?, decmatch rx_exp))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span>    [] MTP3.receive(tr_SCCP_MTP3_TRANSFERind(tr_SCCP_UDT(called, calling, ?))) {</span><br><span>                 setverdict(fail, "Received unexpected SCCP waiting for ", rx_exp);</span><br><span>                 }</span><br><span>@@ -402,6 +406,22 @@</span><br><span>     f_scmg_xceive(calling, called, tx, rx_exp);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Test CallingParty(only SSN) solicits response (OS#5146) */</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_callingparty_ssn_only() runs on SCCP_Test_RAW_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+   var SCCP_PAR_Address calling, called;</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (value) PDU_SCMG_message tx;</span><br><span style="color: hsl(120, 100%, 40%);">+     var template (present) PDU_SCMG_message rx_exp;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_init_raw(mp_sccp_cfg[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       called := valueof(ts_SccpAddr_SSN(1));</span><br><span style="color: hsl(120, 100%, 40%);">+        calling := valueof(ts_SccpAddr_SSN(1));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     tx := ts_SCMG_SST(1, mp_sccp_cfg[0].peer_pc);</span><br><span style="color: hsl(120, 100%, 40%);">+ rx_exp := ts_SCMG_SSA(1, mp_sccp_cfg[0].peer_pc);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_scmg_xceive(calling, called, tx, rx_exp, accept_other_called_resp:=true);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> </span><br><span> control {</span><br><span>@@ -413,6 +433,8 @@</span><br><span>    execute( TC_scmg_sst_ssn1() );</span><br><span>       execute( TC_scmg_sst_ssn_valid() );</span><br><span>  execute( TC_scmg_sst_ssn_invalid() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       execute( TC_callingparty_ssn_only() );</span><br><span> }</span><br><span> </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/24232">change 24232</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/+/24232"/><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: Ided599a922fb7f6dbbfe90f817c5419ab793f293 </div>
<div style="display:none"> Gerrit-Change-Number: 24232 </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-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>