fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39848?usp=email )

Change subject: library/s1ap: split PDU specific API to S1AP_Functions.ttcn
......................................................................

library/s1ap: split PDU specific API to S1AP_Functions.ttcn

Change-Id: Id3ba089140093490abd0307addeb5d7287dc5894
Related: SYS#7288
---
M library/S1AP_Emulation.ttcn
A library/S1AP_Functions.ttcn
M mme/MME_Tests.ttcn
M mme/gen_links.sh
4 files changed, 170 insertions(+), 152 deletions(-)

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




diff --git a/library/S1AP_Emulation.ttcn b/library/S1AP_Emulation.ttcn
index f81441f..6ee1e6a 100644
--- a/library/S1AP_Emulation.ttcn
+++ b/library/S1AP_Emulation.ttcn
@@ -40,6 +40,7 @@
 import from S1AP_PDU_Descriptions all;
 import from S1AP_IEs all;
 import from S1AP_Templates all;
+import from S1AP_Functions all;
 import from SCTP_Templates all;

 import from NAS_EPS_Types all;
@@ -710,155 +711,4 @@
        return omit;
 }

-
-function f_S1AP_get_ENB_UE_S1AP_ID(S1AP_PDU s1ap) return template (omit) 
ENB_UE_S1AP_ID
-{
-       if (ischosen(s1ap.initiatingMessage)) {
-               var InitiatingMessage im := s1ap.initiatingMessage;
-               select (s1ap) {
-               case (tr_S1AP_InitialUE) {
-                       return 
im.value_.InitialUEMessage.protocolIEs[0].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_DlNasTransport) {
-                       return 
im.value_.DownlinkNASTransport.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UlNasTransport) {
-                       return 
im.value_.UplinkNASTransport.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_IntialCtxSetupReq) {
-                       return 
im.value_.initialContextSetupRequest.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseReq) {
-                       return 
im.value_.UEContextReleaseRequest.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseCmd) {
-                       if 
(ispresent(im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair))
 {
-                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.eNB_UE_S1AP_ID;
-                       } else {
-                               return omit;
-                       }
-                       }
-               case (tr_S1AP_ConnEstInd) {
-                       return 
im.value_.ConnectionEstablishmentIndication.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       } else if (ischosen(s1ap.successfulOutcome)) {
-               var SuccessfulOutcome so := s1ap.successfulOutcome;
-               select (s1ap) {
-               case (tr_S1AP_InitialCtxSetupResp) {
-                       return 
so.value_.initialContextSetupResponse.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseCompl) {
-                       return 
so.value_.UEContextReleaseComplete.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       } else if (ischosen(s1ap.unsuccessfulOutcome)) {
-               var UnsuccessfulOutcome uo := s1ap.unsuccessfulOutcome;
-               select (s1ap) {
-               case (tr_S1AP_InitialCtxSetupFail) {
-                       return 
uo.value_.initialContextSetupFailure.protocolIEs[1].value_.ENB_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       }
-       return omit;
-}
-
-function f_S1AP_get_MME_UE_S1AP_ID(S1AP_PDU s1ap) return template (omit) 
MME_UE_S1AP_ID
-{
-       if (ischosen(s1ap.initiatingMessage)) {
-               var InitiatingMessage im := s1ap.initiatingMessage;
-               select (s1ap) {
-               case (tr_S1AP_DlNasTransport) {
-                       return 
im.value_.DownlinkNASTransport.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UlNasTransport) {
-                       return 
im.value_.UplinkNASTransport.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_IntialCtxSetupReq) {
-                       return 
im.value_.initialContextSetupRequest.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseReq) {
-                       return 
im.value_.UEContextReleaseRequest.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseCmd) {
-                       if 
(ispresent(im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair))
 {
-                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
-                       } else {
-                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.mME_UE_S1AP_ID;
-                       }
-                       }
-               case (tr_S1AP_ConnEstInd) {
-                       return 
im.value_.ConnectionEstablishmentIndication.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       } else if (ischosen(s1ap.successfulOutcome)) {
-               var SuccessfulOutcome so := s1ap.successfulOutcome;
-               select (s1ap) {
-               case (tr_S1AP_InitialCtxSetupResp) {
-                       return 
so.value_.initialContextSetupResponse.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               case (tr_S1AP_UeContextReleaseCompl) {
-                       return 
so.value_.UEContextReleaseComplete.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       } else if (ischosen(s1ap.unsuccessfulOutcome)) {
-               var UnsuccessfulOutcome uo := s1ap.unsuccessfulOutcome;
-               select (s1ap) {
-               case (tr_S1AP_InitialCtxSetupFail) {
-                       return 
uo.value_.initialContextSetupFailure.protocolIEs[0].value_.MME_UE_S1AP_ID;
-                       }
-               /* TODO */
-               }
-       }
-       return omit;
-}
-
-function f_S1AP_get_NAS_PDU(S1AP_PDU s1ap) return template (omit) NAS_PDU
-{
-       var integer i, j;
-
-       if (ischosen(s1ap.initiatingMessage)) {
-               var InitiatingMessage im := s1ap.initiatingMessage;
-               select (s1ap) {
-               case (tr_S1AP_DlNasTransport) {
-                       var DownlinkNASTransport msg := 
im.value_.DownlinkNASTransport;
-                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
-                               if (msg.protocolIEs[i].id == id_NAS_PDU) {
-                                       return 
msg.protocolIEs[i].value_.NAS_PDU;
-                               }
-                       }
-                       }
-               case (tr_S1AP_UlNasTransport) {
-                       var UplinkNASTransport msg := 
im.value_.UplinkNASTransport;
-                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
-                               if (msg.protocolIEs[i].id == id_NAS_PDU) {
-                                       return 
msg.protocolIEs[i].value_.NAS_PDU;
-                               }
-                       }
-                       }
-               case (tr_S1AP_IntialCtxSetupReq) {
-                       var InitialContextSetupRequest msg := 
im.value_.initialContextSetupRequest;
-                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
-                               if (msg.protocolIEs[i].id == 
id_E_RABToBeSetupListCtxtSUReq) {
-                                       var E_RABToBeSetupListCtxtSUReq rab_req 
:= msg.protocolIEs[i].value_.E_RABToBeSetupListCtxtSUReq;
-                                       for (j := 0; j < lengthof(rab_req); j 
:= j+1) {
-                                               var E_RABToBeSetupItemCtxtSUReq 
it := rab_req[j].value_.E_RABToBeSetupItemCtxtSUReq;
-                                               return it.nAS_PDU;
-                                       }
-                               }
-                       }
-                       return omit;
-               }
-               }
-       }
-       return omit;
-}
-
-
-
 }
diff --git a/library/S1AP_Functions.ttcn b/library/S1AP_Functions.ttcn
new file mode 100644
index 0000000..63bdaa4
--- /dev/null
+++ b/library/S1AP_Functions.ttcn
@@ -0,0 +1,167 @@
+module S1AP_Functions {
+
+/* (C) 2019 by Harald Welte <lafo...@gnumonks.org>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+import from S1AP_IEs all;
+import from S1AP_Types all;
+import from S1AP_Constants all;
+import from S1AP_PDU_Contents all;
+import from S1AP_PDU_Descriptions all;
+import from S1AP_Templates all;
+
+function f_S1AP_get_ENB_UE_S1AP_ID(S1AP_PDU s1ap) return template (omit) 
ENB_UE_S1AP_ID
+{
+       if (ischosen(s1ap.initiatingMessage)) {
+               var InitiatingMessage im := s1ap.initiatingMessage;
+               select (s1ap) {
+               case (tr_S1AP_InitialUE) {
+                       return 
im.value_.InitialUEMessage.protocolIEs[0].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_DlNasTransport) {
+                       return 
im.value_.DownlinkNASTransport.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UlNasTransport) {
+                       return 
im.value_.UplinkNASTransport.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_IntialCtxSetupReq) {
+                       return 
im.value_.initialContextSetupRequest.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseReq) {
+                       return 
im.value_.UEContextReleaseRequest.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseCmd) {
+                       if 
(ispresent(im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair))
 {
+                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.eNB_UE_S1AP_ID;
+                       } else {
+                               return omit;
+                       }
+                       }
+               case (tr_S1AP_ConnEstInd) {
+                       return 
im.value_.ConnectionEstablishmentIndication.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       } else if (ischosen(s1ap.successfulOutcome)) {
+               var SuccessfulOutcome so := s1ap.successfulOutcome;
+               select (s1ap) {
+               case (tr_S1AP_InitialCtxSetupResp) {
+                       return 
so.value_.initialContextSetupResponse.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseCompl) {
+                       return 
so.value_.UEContextReleaseComplete.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       } else if (ischosen(s1ap.unsuccessfulOutcome)) {
+               var UnsuccessfulOutcome uo := s1ap.unsuccessfulOutcome;
+               select (s1ap) {
+               case (tr_S1AP_InitialCtxSetupFail) {
+                       return 
uo.value_.initialContextSetupFailure.protocolIEs[1].value_.ENB_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       }
+       return omit;
+}
+
+function f_S1AP_get_MME_UE_S1AP_ID(S1AP_PDU s1ap) return template (omit) 
MME_UE_S1AP_ID
+{
+       if (ischosen(s1ap.initiatingMessage)) {
+               var InitiatingMessage im := s1ap.initiatingMessage;
+               select (s1ap) {
+               case (tr_S1AP_DlNasTransport) {
+                       return 
im.value_.DownlinkNASTransport.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UlNasTransport) {
+                       return 
im.value_.UplinkNASTransport.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_IntialCtxSetupReq) {
+                       return 
im.value_.initialContextSetupRequest.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseReq) {
+                       return 
im.value_.UEContextReleaseRequest.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseCmd) {
+                       if 
(ispresent(im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair))
 {
+                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.uE_S1AP_ID_pair.mME_UE_S1AP_ID;
+                       } else {
+                               return 
im.value_.uEContextReleaseCommand.protocolIEs[0].value_.uE_S1AP_IDs.mME_UE_S1AP_ID;
+                       }
+                       }
+               case (tr_S1AP_ConnEstInd) {
+                       return 
im.value_.ConnectionEstablishmentIndication.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       } else if (ischosen(s1ap.successfulOutcome)) {
+               var SuccessfulOutcome so := s1ap.successfulOutcome;
+               select (s1ap) {
+               case (tr_S1AP_InitialCtxSetupResp) {
+                       return 
so.value_.initialContextSetupResponse.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               case (tr_S1AP_UeContextReleaseCompl) {
+                       return 
so.value_.UEContextReleaseComplete.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       } else if (ischosen(s1ap.unsuccessfulOutcome)) {
+               var UnsuccessfulOutcome uo := s1ap.unsuccessfulOutcome;
+               select (s1ap) {
+               case (tr_S1AP_InitialCtxSetupFail) {
+                       return 
uo.value_.initialContextSetupFailure.protocolIEs[0].value_.MME_UE_S1AP_ID;
+                       }
+               /* TODO */
+               }
+       }
+       return omit;
+}
+
+function f_S1AP_get_NAS_PDU(S1AP_PDU s1ap) return template (omit) NAS_PDU
+{
+       var integer i, j;
+
+       if (ischosen(s1ap.initiatingMessage)) {
+               var InitiatingMessage im := s1ap.initiatingMessage;
+               select (s1ap) {
+               case (tr_S1AP_DlNasTransport) {
+                       var DownlinkNASTransport msg := 
im.value_.DownlinkNASTransport;
+                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
+                               if (msg.protocolIEs[i].id == id_NAS_PDU) {
+                                       return 
msg.protocolIEs[i].value_.NAS_PDU;
+                               }
+                       }
+                       }
+               case (tr_S1AP_UlNasTransport) {
+                       var UplinkNASTransport msg := 
im.value_.UplinkNASTransport;
+                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
+                               if (msg.protocolIEs[i].id == id_NAS_PDU) {
+                                       return 
msg.protocolIEs[i].value_.NAS_PDU;
+                               }
+                       }
+                       }
+               case (tr_S1AP_IntialCtxSetupReq) {
+                       var InitialContextSetupRequest msg := 
im.value_.initialContextSetupRequest;
+                       for (i := 0; i < lengthof(msg.protocolIEs); i := i+1) {
+                               if (msg.protocolIEs[i].id == 
id_E_RABToBeSetupListCtxtSUReq) {
+                                       var E_RABToBeSetupListCtxtSUReq rab_req 
:= msg.protocolIEs[i].value_.E_RABToBeSetupListCtxtSUReq;
+                                       for (j := 0; j < lengthof(rab_req); j 
:= j+1) {
+                                               var E_RABToBeSetupItemCtxtSUReq 
it := rab_req[j].value_.E_RABToBeSetupItemCtxtSUReq;
+                                               return it.nAS_PDU;
+                                       }
+                               }
+                       }
+                       return omit;
+               }
+               }
+       }
+       return omit;
+}
+
+}
diff --git a/mme/MME_Tests.ttcn b/mme/MME_Tests.ttcn
index 2192775..302d996 100644
--- a/mme/MME_Tests.ttcn
+++ b/mme/MME_Tests.ttcn
@@ -16,6 +16,7 @@
 import from Misc_Helpers all;
 import from S1AP_Types all;
 import from S1AP_Templates all;
+import from S1AP_Functions all;
 import from S1AP_Emulation all;
 import from S1AP_PDU_Descriptions all;
 import from S1AP_IEs all;
diff --git a/mme/gen_links.sh b/mme/gen_links.sh
index d2b17ce..61f6f73 100755
--- a/mme/gen_links.sh
+++ b/mme/gen_links.sh
@@ -73,7 +73,7 @@
 FILES="Misc_Helpers.ttcn General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn 
Native_Functions.ttcn Native_FunctionDefs.cc IPCP_Types.ttcn 
IPCP_Templates.ttcn "
 FILES+="SGsAP_Templates.ttcn SGsAP_CodecPort.ttcn 
SGsAP_CodecPort_CtrlFunct.ttcn SGsAP_CodecPort_CtrlFunctDef.cc 
SGsAP_Emulation.ttcn DNS_Helpers.ttcn "
 FILES+="L3_Templates.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn "
-FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc 
S1AP_CodecPort_CtrlFunct.ttcn S1AP_Emulation.ttcn "
+FILES+="S1AP_CodecPort.ttcn S1AP_CodecPort_CtrlFunctDef.cc 
S1AP_CodecPort_CtrlFunct.ttcn S1AP_Functions.ttcn S1AP_Emulation.ttcn "
 FILES+="NAS_Templates.ttcn GTPv2_PrivateExtensions.ttcn GTPv2_Templates.ttcn "
 FILES+="DIAMETER_Types.ttcn DIAMETER_CodecPort.ttcn 
DIAMETER_CodecPort_CtrlFunct.ttcn DIAMETER_CodecPort_CtrlFunctDef.cc 
DIAMETER_Emulation.ttcn "
 FILES+="DIAMETER_Templates.ttcn DIAMETER_ts29_272_Templates.ttcn "

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

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Id3ba089140093490abd0307addeb5d7287dc5894
Gerrit-Change-Number: 39848
Gerrit-PatchSet: 4
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-CC: laforge <lafo...@osmocom.org>
Gerrit-CC: osmith <osm...@sysmocom.de>

Reply via email to