Change in ...osmo-ttcn3-hacks[master]: library: Add initial set of LTE/EPC NAS templates
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
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
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, +