Change in ...osmo-ttcn3-hacks[master]: library: Add initial set of LTE/EPC NAS templates

2019-08-18 Thread laforge
laforge has submitted this change and it was merged. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15197 )

Change subject: library: Add initial set of LTE/EPC NAS templates
..

library: Add initial set of LTE/EPC NAS templates

Change-Id: I53a598011041d642f03dcd9cca128f4e9da4adfd
---
M deps/Makefile
A library/NAS_Templates.ttcn
M mme/gen_links.sh
3 files changed, 1,017 insertions(+), 0 deletions(-)

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



diff --git a/deps/Makefile b/deps/Makefile
index cdca8f1..61afb37 100644
--- a/deps/Makefile
+++ b/deps/Makefile
@@ -51,6 +51,7 @@
titan.ProtocolModules.GTPv2_v13.7.0 \
titan.ProtocolModules.ISUP_Q.762 \
titan.ProtocolModules.MobileL3_v13.4.0 \
+   titan.ProtocolModules.NAS_EPS_15.2.0.1 \
titan.ProtocolModules.NS_v7.3.0 \
titan.ProtocolModules.SNDCP_v7.0.0 \
titan.ProtocolEmulations.SCCP
diff --git a/library/NAS_Templates.ttcn b/library/NAS_Templates.ttcn
new file mode 100644
index 000..f819862
--- /dev/null
+++ b/library/NAS_Templates.ttcn
@@ -0,0 +1,1011 @@
+/* EPC (Evolved Packet Core) NAS (Non-Access Stratum) templates in TTCN-3
+ * (C) 2019 Harald Welte 
+ * 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
+ */
+
+module NAS_Templates {
+
+import from General_Types all;
+import from NAS_EPS_Types all;
+
+template (value) PDU_NAS_EPS
+ts_NAS_SM(template (value) EPS_SessionManagement sm) := {
+   protocolDiscriminator := '0010'B,
+   ePS_messages := {
+   ePS_SessionManagement := sm
+   }
+}
+template (present) PDU_NAS_EPS
+tr_NAS_SM(template (present) EPS_SessionManagement sm) := {
+   protocolDiscriminator := '0010'B,
+   ePS_messages := {
+   ePS_SessionManagement := sm
+   }
+}
+
+template (value) PDU_NAS_EPS
+ts_NAS_MM(template (value) EPS_MobilityManagement mm) := {
+   protocolDiscriminator := c_EPS_NAS_PD_EMM,
+   ePS_messages := {
+   ePS_MobilityManagement := mm
+   }
+}
+template (present) PDU_NAS_EPS
+tr_NAS_MM(template (present) EPS_MobilityManagement mm) := {
+   protocolDiscriminator := c_EPS_NAS_PD_EMM,
+   ePS_messages := {
+   ePS_MobilityManagement := mm
+   }
+}
+
+const BIT4 c_EPS_SEC_NONE := ''B;
+const BIT4 c_EPS_NAS_PD_EMM := '0111'B;
+const BIT4 c_EPS_NAS_PD_ESM := '0010'B;
+
+private template (value) ESM_MessageContainerLVE
+ts_NAS_EsmMsgContLVE(template (value) octetstring inp) := {
+   lengthIndicator := 0,
+   content := inp
+}
+private template (present) ESM_MessageContainerLVE
+tr_NAS_EsmMsgContLVE(template (present) octetstring inp) := {
+   lengthIndicator := ?,
+   content := inp
+}
+
+private template (value) MobileIdentityLV
+ts_NAS_MobileIdLV(template (value) MobileIdentityV mid) := {
+   lengthIndicator := 0,
+   mobileIdentityV := mid
+}
+private template (present) MobileIdentityLV
+tr_NAS_MobileIdLV(template (present) MobileIdentityV mid) := {
+   lengthIndicator := ?,
+   mobileIdentityV := mid
+}
+
+private function f_enc_IMSI_NAS(hexstring digits) return IMSI {
+   var IMSI l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   l3.fillerDigit := omit;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   l3.fillerDigit := ''B;
+   }
+   l3.digits := digits;
+   return l3;
+}
+
+private function f_enc_IMEI_NAS(hexstring digits) return IMEI {
+   var IMEI l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   }
+   l3.digits := digits;
+   return l3;
+}
+
+private function f_enc_IMEI_SV(hexstring digits) return IMEI_SV {
+   var IMEI_SV l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   }
+   l3.digits := digits;
+   l3.fillerDigit := ''B;
+   return l3;
+}
+
+template (value) GUTI ts_NAS_GUTI(hexstring mcc_mnc, OCT2 mmegi, OCT1 mmec, 
OCT4 tmsi) := {
+   oddevenIndicator := '0'B,
+   spare := ''B,
+   /* mcc_mnc specified in format 262f42 */
+   mccDigit1 := mcc_mnc[0],
+   mccDigit2 := mcc_mnc[1],
+   mccDigit3 := mcc_mnc[2],
+   mncDigit3 := mcc_mnc[5],
+   mncDigit1 := mcc_mnc[3],
+   mncDigit2 := mcc_mnc[4],
+   mMEGI := mmegi,
+  

Change in ...osmo-ttcn3-hacks[master]: library: Add initial set of LTE/EPC NAS templates

2019-08-14 Thread pespin
pespin has posted comments on this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15197 )

Change subject: library: Add initial set of LTE/EPC NAS templates
..


Patch Set 1: Code-Review+2


--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15197
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: I53a598011041d642f03dcd9cca128f4e9da4adfd
Gerrit-Change-Number: 15197
Gerrit-PatchSet: 1
Gerrit-Owner: laforge 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin 
Gerrit-Comment-Date: Wed, 14 Aug 2019 11:28:29 +
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment


Change in ...osmo-ttcn3-hacks[master]: library: Add initial set of LTE/EPC NAS templates

2019-08-14 Thread laforge
laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15197


Change subject: library: Add initial set of LTE/EPC NAS templates
..

library: Add initial set of LTE/EPC NAS templates

Change-Id: I53a598011041d642f03dcd9cca128f4e9da4adfd
---
M deps/Makefile
A library/NAS_Templates.ttcn
M mme/gen_links.sh
3 files changed, 1,017 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/97/15197/1

diff --git a/deps/Makefile b/deps/Makefile
index cdca8f1..61afb37 100644
--- a/deps/Makefile
+++ b/deps/Makefile
@@ -51,6 +51,7 @@
titan.ProtocolModules.GTPv2_v13.7.0 \
titan.ProtocolModules.ISUP_Q.762 \
titan.ProtocolModules.MobileL3_v13.4.0 \
+   titan.ProtocolModules.NAS_EPS_15.2.0.1 \
titan.ProtocolModules.NS_v7.3.0 \
titan.ProtocolModules.SNDCP_v7.0.0 \
titan.ProtocolEmulations.SCCP
diff --git a/library/NAS_Templates.ttcn b/library/NAS_Templates.ttcn
new file mode 100644
index 000..f819862
--- /dev/null
+++ b/library/NAS_Templates.ttcn
@@ -0,0 +1,1011 @@
+/* EPC (Evolved Packet Core) NAS (Non-Access Stratum) templates in TTCN-3
+ * (C) 2019 Harald Welte 
+ * 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
+ */
+
+module NAS_Templates {
+
+import from General_Types all;
+import from NAS_EPS_Types all;
+
+template (value) PDU_NAS_EPS
+ts_NAS_SM(template (value) EPS_SessionManagement sm) := {
+   protocolDiscriminator := '0010'B,
+   ePS_messages := {
+   ePS_SessionManagement := sm
+   }
+}
+template (present) PDU_NAS_EPS
+tr_NAS_SM(template (present) EPS_SessionManagement sm) := {
+   protocolDiscriminator := '0010'B,
+   ePS_messages := {
+   ePS_SessionManagement := sm
+   }
+}
+
+template (value) PDU_NAS_EPS
+ts_NAS_MM(template (value) EPS_MobilityManagement mm) := {
+   protocolDiscriminator := c_EPS_NAS_PD_EMM,
+   ePS_messages := {
+   ePS_MobilityManagement := mm
+   }
+}
+template (present) PDU_NAS_EPS
+tr_NAS_MM(template (present) EPS_MobilityManagement mm) := {
+   protocolDiscriminator := c_EPS_NAS_PD_EMM,
+   ePS_messages := {
+   ePS_MobilityManagement := mm
+   }
+}
+
+const BIT4 c_EPS_SEC_NONE := ''B;
+const BIT4 c_EPS_NAS_PD_EMM := '0111'B;
+const BIT4 c_EPS_NAS_PD_ESM := '0010'B;
+
+private template (value) ESM_MessageContainerLVE
+ts_NAS_EsmMsgContLVE(template (value) octetstring inp) := {
+   lengthIndicator := 0,
+   content := inp
+}
+private template (present) ESM_MessageContainerLVE
+tr_NAS_EsmMsgContLVE(template (present) octetstring inp) := {
+   lengthIndicator := ?,
+   content := inp
+}
+
+private template (value) MobileIdentityLV
+ts_NAS_MobileIdLV(template (value) MobileIdentityV mid) := {
+   lengthIndicator := 0,
+   mobileIdentityV := mid
+}
+private template (present) MobileIdentityLV
+tr_NAS_MobileIdLV(template (present) MobileIdentityV mid) := {
+   lengthIndicator := ?,
+   mobileIdentityV := mid
+}
+
+private function f_enc_IMSI_NAS(hexstring digits) return IMSI {
+   var IMSI l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   l3.fillerDigit := omit;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   l3.fillerDigit := ''B;
+   }
+   l3.digits := digits;
+   return l3;
+}
+
+private function f_enc_IMEI_NAS(hexstring digits) return IMEI {
+   var IMEI l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   }
+   l3.digits := digits;
+   return l3;
+}
+
+private function f_enc_IMEI_SV(hexstring digits) return IMEI_SV {
+   var IMEI_SV l3;
+   var integer len := lengthof(digits);
+   if (len rem 2 == 1) {   /* modulo remainder */
+   l3.oddevenIndicator := '1'B;
+   } else {
+   l3.oddevenIndicator := '0'B;
+   }
+   l3.digits := digits;
+   l3.fillerDigit := ''B;
+   return l3;
+}
+
+template (value) GUTI ts_NAS_GUTI(hexstring mcc_mnc, OCT2 mmegi, OCT1 mmec, 
OCT4 tmsi) := {
+   oddevenIndicator := '0'B,
+   spare := ''B,
+   /* mcc_mnc specified in format 262f42 */
+   mccDigit1 := mcc_mnc[0],
+   mccDigit2 := mcc_mnc[1],
+   mccDigit3 := mcc_mnc[2],
+   mncDigit3 := mcc_mnc[5],
+   mncDigit1 := mcc_mnc[3],
+   mncDigit2 := mcc_mnc[4],
+   mMEGI := mmegi,
+