neels has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33490 )

Change subject: rua: also match on RUA Disconnect without RANAP payload
......................................................................

rua: also match on RUA Disconnect without RANAP payload

Add tr_RUA_Disconnect_opt_ranap that matches RUA Disconnect with and
without RANAP payload.

Use this in RUA_Emulation as_main_rua(), to trigger a RUA_Disc_Ind to
the CLIENT also for Disconnect without RANAP data.

Rationale:

This patch exists for the line

  RUA.receive(RUA_Disc_Ind:?);

in the TC_apply_sccp patch Ia1ff0cb56893edf045ea3cb3233882ca93445d21

In upcoming HNBGW_Tests.TC_apply_sccp, I want to test for an ungraceful
RUA Disconnect, which is sent without a RANAP payload. But
tr_RUA_Disconnect only matches when a RANAP Message IE is present. In
consequence, RUA_Emulation ignores "empty" RUA Disconnect, and my test
case cannot verify that the RUA Disconnect occurred. Fix that.

Change-Id: Ia0b89e9198794d196a88040ee89bdf24f3b08ae0
---
M library/rua/RUA_Emulation.ttcn
M library/rua/RUA_Templates.ttcn
2 files changed, 66 insertions(+), 3 deletions(-)

Approvals:
  neels: Looks good to me, approved
  Jenkins Builder: Verified




diff --git a/library/rua/RUA_Emulation.ttcn b/library/rua/RUA_Emulation.ttcn
index af4b8b3..a9c445e 100644
--- a/library/rua/RUA_Emulation.ttcn
+++ b/library/rua/RUA_Emulation.ttcn
@@ -301,13 +301,15 @@
        }

        /* RUA -> Client: disconnect of an existing connection */
-       [] RUA.receive(tr_RUA_Disconnect) -> value rua {
+       [] RUA.receive(tr_RUA_Disconnect_opt_ranap) -> value rua {
                cause := 
rua.initiatingMessage.value_.disconnect_.protocolIEs[2].value_.cause;
                context_id := 
rua.initiatingMessage.value_.disconnect_.protocolIEs[1].value_.context_ID;
                vc_conn := f_comp_by_context_id(context_id);
                /* send contained RANAP message to user */
-               ranap_enc := 
rua.initiatingMessage.value_.disconnect_.protocolIEs[3].value_.rANAP_Message;
-               f_handle_userData_RANAP(vc_conn, dec_RANAP_PDU(ranap_enc));
+               if 
(lengthof(rua.initiatingMessage.value_.disconnect_.protocolIEs) > 3) {
+                       ranap_enc := 
rua.initiatingMessage.value_.disconnect_.protocolIEs[3].value_.rANAP_Message;
+                       f_handle_userData_RANAP(vc_conn, 
dec_RANAP_PDU(ranap_enc));
+               }
                /* notify user of disconnect */
                if (CLIENT.checkstate("Connected")) {
                        CLIENT.send(RUA_Disc_Ind:{cause});
diff --git a/library/rua/RUA_Templates.ttcn b/library/rua/RUA_Templates.ttcn
index ee65412..738042e 100644
--- a/library/rua/RUA_Templates.ttcn
+++ b/library/rua/RUA_Templates.ttcn
@@ -231,6 +231,38 @@
        }
 }

+/* Same as tr_RUA_Disconnect() but without a ranap arg: match also a RUA 
Disconnect without any RANAP payload. */
+template (present) RUA_PDU
+tr_RUA_Disconnect_opt_ranap(template (present) CN_DomainIndicator domain := ?,
+                           template (present) bitstring context_id := ?,
+                           template (present) Cause cause := ?) := {
+       initiatingMessage := {
+               procedureCode := 3,
+               criticality := reject,
+               value_ := {
+                       disconnect_ := {
+                               protocolIEs := {
+                                       {
+                                               id := 7,
+                                               criticality := reject,
+                                               value_ := { cN_DomainIndicator 
:= domain }
+                                       }, {
+                                               id := 3,
+                                               criticality := reject,
+                                               value_ := { context_ID := 
context_id }
+                                       }, {
+                                               id := 1,
+                                               criticality := reject,
+                                               value_ := { cause := cause }
+                                       },
+                                       *
+                               },
+                               protocolExtensions := omit
+                       }
+               }
+       }
+}
+
 /* 9.1.6 CONNECTIONLESS TRANSFER */
 template (value) RUA_PDU
 ts_RUA_ConnectionlessTransfer(template (value) octetstring ranap_msg) := {

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33490
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ia0b89e9198794d196a88040ee89bdf24f3b08ae0
Gerrit-Change-Number: 33490
Gerrit-PatchSet: 4
Gerrit-Owner: neels <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: neels <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to