aboutsummaryrefslogtreecommitdiffstats
path: root/library/ranap/RANAP_Templates.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/ranap/RANAP_Templates.ttcn')
-rw-r--r--library/ranap/RANAP_Templates.ttcn1427
1 files changed, 1427 insertions, 0 deletions
diff --git a/library/ranap/RANAP_Templates.ttcn b/library/ranap/RANAP_Templates.ttcn
new file mode 100644
index 00000000..e55f2125
--- /dev/null
+++ b/library/ranap/RANAP_Templates.ttcn
@@ -0,0 +1,1427 @@
+module RANAP_Templates {
+
+import from General_Types all;
+
+import from RANAP_IEs all;
+import from RANAP_CommonDataTypes all;
+import from RANAP_Constants all;
+import from RANAP_Containers all;
+import from RANAP_PDU_Contents all;
+import from RANAP_PDU_Descriptions all;
+
+template (value) Cause ts_RanapCause_om_intervention := { misc := 113 };
+
+/*****************************************************************************************************
+ * Reset
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_Reset(template (value) Cause cause, template (value) CN_DomainIndicator dom,
+ template (omit) Reset.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_Reset,
+ criticality := reject,
+ value_ := {
+ Reset := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }, {
+ id := id_CN_DomainIndicator,
+ criticality := reject,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_Reset(template Cause cause := ?, template CN_DomainIndicator dom := ?,
+ template Reset.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_Reset,
+ criticality := reject,
+ value_ := {
+ Reset := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }, {
+ id := id_CN_DomainIndicator,
+ criticality := reject,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }, *
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_ResetAck(template (value) CN_DomainIndicator dom,
+ template (omit) ResetAcknowledge.protocolExtensions exts := omit) := {
+ successfulOutcome := {
+ procedureCode := id_Reset,
+ criticality := reject,
+ value_ := {
+ ResetAcknowledge := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := reject,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_ResetAck(template CN_DomainIndicator dom := ?,
+ template ResetAcknowledge.protocolExtensions exts := *) := {
+ successfulOutcome := {
+ procedureCode := id_Reset,
+ criticality := reject,
+ value_ := {
+ ResetAcknowledge := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := reject,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }, *
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+/*****************************************************************************************************
+ * Security Mode Control
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_SecurityModeCmd(template (value) PermittedIntegrityProtectionAlgorithms uia_algs,
+ template (value) IntegrityProtectionKey uia_key,
+ template (value) KeyStatus key_sts,
+ template (omit) SecurityModeCommand.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeCommand := {
+ protocolIEs := {
+ {
+ id := id_IntegrityProtectionInformation,
+ criticality := reject,
+ value_ := {
+ integrityProtectionInformation := {
+ permittedAlgorithms := uia_algs,
+ key := uia_key,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := id_KeyStatus,
+ criticality := reject,
+ value_ := {
+ keyStatus := key_sts
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_SecurityModeCmd(template PermittedIntegrityProtectionAlgorithms uia_algs,
+ template IntegrityProtectionKey uia_key,
+ template KeyStatus key_sts,
+ template SecurityModeCommand.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeCommand := {
+ protocolIEs := {
+ {
+ id := id_IntegrityProtectionInformation,
+ criticality := reject,
+ value_ := {
+ integrityProtectionInformation := {
+ permittedAlgorithms := uia_algs,
+ key := uia_key,
+ iE_Extensions := *
+ }
+ }
+ }, {
+ id := id_KeyStatus,
+ criticality := reject,
+ value_ := {
+ keyStatus := key_sts
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_SecurityModeCmdEnc(template (value) PermittedIntegrityProtectionAlgorithms uia_algs,
+ template (value) IntegrityProtectionKey uia_key,
+ template (value) KeyStatus key_sts,
+ template (value) PermittedEncryptionAlgorithms uea_algs,
+ template (value) EncryptionKey uea_key,
+ template (omit) SecurityModeCommand.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeCommand := {
+ protocolIEs := {
+ {
+ id := id_IntegrityProtectionInformation,
+ criticality := reject,
+ value_ := {
+ integrityProtectionInformation := {
+ permittedAlgorithms := uia_algs,
+ key := uia_key,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := id_EncryptionInformation,
+ criticality := ignore,
+ value_ := {
+ encryptionInformation := {
+ permittedAlgorithms := uea_algs,
+ key := uea_key,
+ iE_Extensions := omit
+ }
+ }
+ }, {
+ id := id_KeyStatus,
+ criticality := reject,
+ value_ := {
+ keyStatus := key_sts
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_SecurityModeCmdEnc(template PermittedIntegrityProtectionAlgorithms uia_algs,
+ template IntegrityProtectionKey uia_key,
+ template KeyStatus key_sts,
+ template PermittedEncryptionAlgorithms uea_algs,
+ template EncryptionKey uea_key,
+ template SecurityModeCommand.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeCommand := {
+ protocolIEs := {
+ {
+ id := id_IntegrityProtectionInformation,
+ criticality := reject,
+ value_ := {
+ integrityProtectionInformation := {
+ permittedAlgorithms := uia_algs,
+ key := uia_key,
+ iE_Extensions := *
+ }
+ }
+ }, {
+ id := id_EncryptionInformation,
+ criticality := ignore,
+ value_ := {
+ encryptionInformation := {
+ permittedAlgorithms := uea_algs,
+ key := uea_key,
+ iE_Extensions := *
+ }
+ }
+ }, {
+ id := id_KeyStatus,
+ criticality := reject,
+ value_ := {
+ keyStatus := key_sts
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_SecurityModeComplete(template (value) IntegrityProtectionAlgorithm uia_alg,
+ template (omit) SecurityModeComplete.protocolExtensions exts := omit) := {
+ successfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeComplete := {
+ protocolIEs := {
+ {
+ id := id_ChosenIntegrityProtectionAlgorithm,
+ criticality := reject,
+ value_ := {
+ chosenIntegrityProtectionAlgorithm := uia_alg
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_SecurityModeComplete(template IntegrityProtectionAlgorithm uia_alg,
+ template SecurityModeComplete.protocolExtensions exts := *) := {
+ successfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeComplete := {
+ protocolIEs := {
+ {
+ id := id_ChosenIntegrityProtectionAlgorithm,
+ criticality := reject,
+ value_ := {
+ chosenIntegrityProtectionAlgorithm := uia_alg
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_SecurityModeCompleteEnc(template (value) IntegrityProtectionAlgorithm uia_alg,
+ template (value) EncryptionAlgorithm uea_alg,
+ template (omit) SecurityModeComplete.protocolExtensions exts := omit) := {
+ successfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeComplete := {
+ protocolIEs := {
+ {
+ id := id_ChosenIntegrityProtectionAlgorithm,
+ criticality := reject,
+ value_ := {
+ chosenIntegrityProtectionAlgorithm := uia_alg
+ }
+ }, {
+ id := id_ChosenEncryptionAlgorithm,
+ criticality := ignore,
+ value_ := {
+ chosenEncryptionAlgorithm := uea_alg
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_SecurityModeCompleteEnc(template IntegrityProtectionAlgorithm uia_alg,
+ template EncryptionAlgorithm uea_alg,
+ template SecurityModeComplete.protocolExtensions exts := *) := {
+ successfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeComplete := {
+ protocolIEs := {
+ {
+ id := id_ChosenIntegrityProtectionAlgorithm,
+ criticality := reject,
+ value_ := {
+ chosenIntegrityProtectionAlgorithm := uia_alg
+ }
+ }, {
+ id := id_ChosenEncryptionAlgorithm,
+ criticality := ignore,
+ value_ := {
+ chosenEncryptionAlgorithm := uea_alg
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_SecurityModeReject(template (value) Cause cause,
+ template (omit) SecurityModeReject.protocolExtensions exts := omit) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeReject := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_SecurityModeReject(template Cause cause,
+ template SecurityModeReject.protocolExtensions exts := *) := {
+ unsuccessfulOutcome := {
+ procedureCode := id_SecurityModeControl,
+ criticality := reject,
+ value_ := {
+ securityModeReject := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+
+/*****************************************************************************************************
+ * Iu Release Request
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_IuReleaseRequest(template (value) Cause cause,
+ template (omit) Iu_ReleaseRequest.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_Iu_ReleaseRequest,
+ criticality := ignore,
+ value_ := {
+ iu_ReleaseRequest := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := reject,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_IuReleaseRequest(template Cause cause,
+ template Iu_ReleaseRequest.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_Iu_ReleaseRequest,
+ criticality := ignore,
+ value_ := {
+ iu_ReleaseRequest := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := reject,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+/*****************************************************************************************************
+ * RAB Release
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_RabReleaseRequest(template (value) RAB_ID rab_id, template (value) Cause cause,
+ template (omit) RAB_ReleaseRequest.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_RAB_ReleaseRequest,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseRequest := {
+ protocolIEs := {
+ {
+ id := id_RAB_ReleaseList,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseList := {{
+ {
+ id := id_RAB_ReleaseItem,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseItem := {
+ rAB_ID := rab_id,
+ cause := cause,
+ iE_Extensions := omit
+ }
+ }
+ }
+ }}
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_RabReleaseRequest(template RAB_ID rab_id, template Cause cause,
+ template RAB_ReleaseRequest.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_RAB_ReleaseRequest,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseRequest := {
+ protocolIEs := {
+ {
+ id := id_RAB_ReleaseList,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseList := {{
+ {
+ id := id_RAB_ReleaseItem,
+ criticality := ignore,
+ value_ := {
+ rAB_ReleaseItem := {
+ rAB_ID := rab_id,
+ cause := cause,
+ iE_Extensions := *
+ }
+ }
+ }
+ }}
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+/*****************************************************************************************************
+ * Iu Release
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_IuReleaseCommand(template (value) Cause cause,
+ template (omit) Iu_ReleaseCommand.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_Iu_Release,
+ criticality := reject,
+ value_ := {
+ iu_ReleaseCommand := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_IuReleaseCommand(template Cause cause,
+ template Iu_ReleaseCommand.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_Iu_Release,
+ criticality := reject,
+ value_ := {
+ iu_ReleaseCommand := {
+ protocolIEs := {
+ {
+ id := id_Cause,
+ criticality := ignore,
+ value_ := {
+ cause := cause
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_IuReleaseComplete(template (omit) Iu_ReleaseComplete.protocolIEs ies := {},
+ template (omit) Iu_ReleaseComplete.protocolExtensions exts := omit) := {
+ successfulOutcome := {
+ procedureCode := id_Iu_Release,
+ criticality := reject,
+ value_ := {
+ iu_ReleaseComplete := {
+ protocolIEs := ies,
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_IuReleaseComplete(template Iu_ReleaseComplete.protocolIEs ies := *,
+ template Iu_ReleaseComplete.protocolExtensions exts := *) := {
+ successfulOutcome := {
+ procedureCode := id_Iu_Release,
+ criticality := reject,
+ value_ := {
+ iu_ReleaseComplete:= {
+ protocolIEs := ies,
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+/*****************************************************************************************************
+ * Paging
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_Paging(template (value) CN_DomainIndicator dom, template (value) IMSI imsi,
+ template (omit) TemporaryUE_ID temp_id := omit,
+ template (omit) Paging.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_Paging,
+ criticality := ignore,
+ value_ := {
+ paging := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }, {
+ id := id_PermanentNAS_UE_ID,
+ criticality := ignore,
+ value_ := {
+ permanentNAS_UE_ID := {
+ iMSI := imsi
+ }
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_Paging(template CN_DomainIndicator dom, template IMSI imsi,
+ template Paging.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_Paging,
+ criticality := ignore,
+ value_ := {
+ paging := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := dom
+ }
+ }, {
+ id := id_PermanentNAS_UE_ID,
+ criticality := ignore,
+ value_ := {
+ permanentNAS_UE_ID := {
+ iMSI := imsi
+ }
+ }
+ }, *
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+
+/*****************************************************************************************************
+ * Common ID
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_CommonId(template (value) IMSI imsi,
+ template (omit) CommonID.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_CommonID,
+ criticality := ignore,
+ value_ := {
+ commonID := {
+ protocolIEs := {
+ {
+ id := id_PermanentNAS_UE_ID,
+ criticality := ignore,
+ value_ := {
+ permanentNAS_UE_ID := {
+ iMSI := imsi
+ }
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_CommonId(template IMSI imsi,
+ template CommonID.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_CommonID,
+ criticality := ignore,
+ value_ := {
+ commonID := {
+ protocolIEs := {
+ {
+ id := id_PermanentNAS_UE_ID,
+ criticality := ignore,
+ value_ := {
+ permanentNAS_UE_ID := {
+ iMSI := imsi
+ }
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+/*****************************************************************************************************
+ * Initial UE Message
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_initialUE_CS(template (value) LAI lai, template (value) SAI sai,
+ template (value) NAS_PDU nas,
+ template (value) IuSignallingConnectionIdentifier sigc_id,
+ template (value) GlobalRNC_ID grnc_id,
+ template (omit) InitialUE_Message.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_InitialUE_Message,
+ criticality := ignore,
+ value_ := {
+ initialUE_Message := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := cs_domain
+ }
+ }, {
+ id := id_LAI,
+ criticality := ignore,
+ value_ := {
+ lAI := lai
+ }
+ }, {
+ id := id_SAI,
+ criticality := ignore,
+ value_ := {
+ sAI := sai
+ }
+ }, {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ }, {
+ id := id_IuSigConId,
+ criticality := ignore,
+ value_ := {
+ iuSignallingConnectionIdentifier := sigc_id
+ }
+ }, {
+ id := id_GlobalRNC_ID,
+ criticality := ignore,
+ value_ := {
+ globalRNC_ID := grnc_id
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_initialUE_CS(template LAI lai, template SAI sai,
+ template NAS_PDU nas,
+ template IuSignallingConnectionIdentifier sigc_id,
+ template GlobalRNC_ID grnc_id,
+ template InitialUE_Message.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_InitialUE_Message,
+ criticality := ignore,
+ value_ := {
+ initialUE_Message := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := cs_domain
+ }
+ }, {
+ id := id_LAI,
+ criticality := ignore,
+ value_ := {
+ lAI := lai
+ }
+ }, {
+ id := id_SAI,
+ criticality := ignore,
+ value_ := {
+ sAI := sai
+ }
+ }, {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ }, {
+ id := id_IuSigConId,
+ criticality := ignore,
+ value_ := {
+ iuSignallingConnectionIdentifier := sigc_id
+ }
+ }, {
+ id := id_GlobalRNC_ID,
+ criticality := ignore,
+ value_ := {
+ globalRNC_ID := grnc_id
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_initialUE_PS(template (value) LAI lai, template (value) RAC rac, template (value) SAI sai,
+ template (value) NAS_PDU nas,
+ template (value) IuSignallingConnectionIdentifier sigc_id,
+ template (value) GlobalRNC_ID grnc_id,
+ template (omit) InitialUE_Message.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_InitialUE_Message,
+ criticality := ignore,
+ value_ := {
+ initialUE_Message := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := ps_domain
+ }
+ }, {
+ id := id_LAI,
+ criticality := ignore,
+ value_ := {
+ lAI := lai
+ }
+ }, {
+ id := id_RAC,
+ criticality := ignore,
+ value_ := {
+ rAC := rac
+ }
+ }, {
+ id := id_SAI,
+ criticality := ignore,
+ value_ := {
+ sAI := sai
+ }
+ }, {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ }, {
+ id := id_IuSigConId,
+ criticality := ignore,
+ value_ := {
+ iuSignallingConnectionIdentifier := sigc_id
+ }
+ }, {
+ id := id_GlobalRNC_ID,
+ criticality := ignore,
+ value_ := {
+ globalRNC_ID := grnc_id
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_initialUE_PS(template LAI lai, template RAC rac, template SAI sai,
+ template NAS_PDU nas,
+ template IuSignallingConnectionIdentifier sigc_id,
+ template GlobalRNC_ID grnc_id,
+ template InitialUE_Message.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_InitialUE_Message,
+ criticality := ignore,
+ value_ := {
+ initialUE_Message := {
+ protocolIEs := {
+ {
+ id := id_CN_DomainIndicator,
+ criticality := ignore,
+ value_ := {
+ cN_DomainIndicator := ps_domain
+ }
+ }, {
+ id := id_LAI,
+ criticality := ignore,
+ value_ := {
+ lAI := lai
+ }
+ }, {
+ id := id_RAC,
+ criticality := ignore,
+ value_ := {
+ rAC := rac
+ }
+ }, {
+ id := id_SAI,
+ criticality := ignore,
+ value_ := {
+ sAI := sai
+ }
+ }, {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ }, {
+ id := id_IuSigConId,
+ criticality := ignore,
+ value_ := {
+ iuSignallingConnectionIdentifier := sigc_id
+ }
+ }, {
+ id := id_GlobalRNC_ID,
+ criticality := ignore,
+ value_ := {
+ globalRNC_ID := grnc_id
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+/*****************************************************************************************************
+ * Direct Transfer
+ *****************************************************************************************************/
+
+template (value) RANAP_PDU
+ts_RANAP_DirectTransfer(template (value) NAS_PDU nas,
+ /* template DirectTransfer.protocolIEs ies := {}, */
+ template (omit) DirectTransfer.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_DirectTransfer,
+ criticality := ignore,
+ value_ := {
+ directTransfer := {
+ protocolIEs := {
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ }
+ /* LAI, RAC, SAI */
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_DirectTransfer(template NAS_PDU nas,
+ template SAPI sapi := sapi_0,
+ /* template DirectTransfer.protocolIEs ies := {}, */
+ template DirectTransfer.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_DirectTransfer,
+ criticality := ignore,
+ value_ := {
+ directTransfer := {
+ protocolIEs := {
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ },
+ * /* LAI, RAC, SAI */
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+template (value) RANAP_PDU
+ts_RANAP_DirectTransferSAPI(template (value) NAS_PDU nas,
+ template (value) SAPI sapi := sapi_0,
+ /* template DirectTransfer.protocolIEs ies := {}, */
+ template (omit) DirectTransfer.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_DirectTransfer,
+ criticality := ignore,
+ value_ := {
+ directTransfer := {
+ protocolIEs := {
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ },
+ /* LAI, RAC, SAI */
+ {
+ id := id_SAPI,
+ criticality := ignore,
+ value_ := {
+ sAPI := sapi
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_DirectTransferSAPI(template NAS_PDU nas,
+ template SAPI sapi := sapi_0,
+ /* template DirectTransfer.protocolIEs ies := {}, */
+ template DirectTransfer.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_DirectTransfer,
+ criticality := ignore,
+ value_ := {
+ directTransfer := {
+ protocolIEs := {
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := {
+ nAS_PDU := nas
+ }
+ },
+ *, /* LAI, RAC, SAI */
+ {
+ id := id_SAPI,
+ criticality := ignore,
+ value_ := {
+ sAPI := sapi
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+/*****************************************************************************************************
+ * RAB Assignment Request
+ *****************************************************************************************************/
+
+template (value) RAB_Parameters ts_RabParams := {
+ trafficClass := conversational,
+ rAB_AsymmetryIndicator := symmetric_bidirectional,
+ maxBitrate := { 12200 },
+ guaranteedBitRate := { 12200 },
+ deliveryOrder := delivery_order_requested,
+ maxSDU_Size := 244,
+ sDU_Parameters := {
+ {
+ sDU_ErrorRatio := { mantissa := 1, exponent := 5, iE_Extensions := omit },
+ residualBitErrorRatio := { mantissa := 1, exponent := 6, iE_Extensions := omit },
+ deliveryOfErroneousSDU := yes,
+ sDU_FormatInformationParameters := {
+ {
+ subflowSDU_Size := 81,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }, {
+ subflowSDU_Size := 39,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }
+ },
+ iE_Extensions := omit
+ }, {
+ sDU_ErrorRatio := omit,
+ residualBitErrorRatio := { mantissa := 1, exponent := 3, iE_Extensions := omit },
+ deliveryOfErroneousSDU := no_error_detection_consideration,
+ sDU_FormatInformationParameters := {
+ {
+ subflowSDU_Size := 103,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }, {
+ subflowSDU_Size := 0,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }
+ },
+ iE_Extensions := omit
+ }, {
+ sDU_ErrorRatio := omit,
+ residualBitErrorRatio := { mantissa := 5, exponent := 3, iE_Extensions := omit },
+ deliveryOfErroneousSDU := no_error_detection_consideration,
+ sDU_FormatInformationParameters := {
+ {
+ subflowSDU_Size := 60,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }, {
+ subflowSDU_Size := 0,
+ rAB_SubflowCombinationBitRate := omit,
+ iE_Extensions := omit
+ }
+ },
+ iE_Extensions := omit
+ }
+ },
+ transferDelay := 80,
+ trafficHandlingPriority := omit,
+ allocationOrRetentionPriority := {
+ priorityLevel := 15,
+ pre_emptionCapability := shall_not_trigger_pre_emption,
+ pre_emptionVulnerability := pre_emptable,
+ queuingAllowed := queueing_not_allowed,
+ iE_Extensions := omit
+ },
+ sourceStatisticsDescriptor := omit,
+ relocationRequirement := omit,
+ iE_Extensions := omit
+}
+
+template (value) UserPlaneInformation ts_UserPlaneInfo := {
+ userPlaneMode := support_mode_for_predefined_SDU_sizes,
+ uP_ModeVersions := '0000000000000010'B,
+ iE_Extensions := omit
+}
+
+template (value) TransportLayerInformation ts_TLI(template (value) TransportLayerAddress tla,
+ template (value) BindingID binding_id) := {
+ transportLayerAddress := tla,
+ iuTransportAssociation := {
+ bindingID := binding_id
+ },
+ iE_Extensions := omit
+}
+template TransportLayerInformation tr_TLI(template TransportLayerAddress tla,
+ template BindingID binding_id) := {
+ transportLayerAddress := tla,
+ iuTransportAssociation := {
+ bindingID := binding_id
+ },
+ iE_Extensions := *
+}
+
+template (value) RAB_SetupOrModifyList ts_RAB_SML(template (value) RAB_ID rab_id,
+ template (value) TransportLayerAddress tla,
+ template (value) BindingID binding_id) := { {
+ {
+ id := id_RAB_SetupOrModifyItem,
+ firstCriticality := reject,
+ firstValue := {
+ rAB_SetupOrModifyItemFirst := {
+ rAB_ID := rab_id,
+ nAS_SynchronisationIndicator := omit,
+ rAB_Parameters := ts_RabParams,
+ userPlaneInformation := ts_UserPlaneInfo,
+ transportLayerInformation := ts_TLI(tla, binding_id),
+ service_Handover := omit,
+ iE_Extensions := omit
+ }
+ },
+ secondCriticality := ignore,
+ secondValue := {
+ rAB_SetupOrModifyItemSecond := {
+ pDP_TypeInformation := omit,
+ dataVolumeReportingIndication := omit,
+ dl_GTP_PDU_SequenceNumber := omit,
+ ul_GTP_PDU_SequenceNumber := omit,
+ dl_N_PDU_SequenceNumber := omit,
+ ul_N_PDU_SequenceNumber := omit,
+ iE_Extensions := omit
+ }
+ }
+ }
+} }
+template RAB_SetupOrModifyList tr_RAB_SML(template RAB_ID rab_id,
+ template TransportLayerAddress tla,
+ template BindingID binding_id) := { {
+ {
+ id := id_RAB_SetupOrModifyItem,
+ firstCriticality := reject,
+ firstValue := {
+ rAB_SetupOrModifyItemFirst := {
+ rAB_ID := rab_id,
+ nAS_SynchronisationIndicator := *,
+ rAB_Parameters := ts_RabParams,
+ userPlaneInformation := ts_UserPlaneInfo,
+ transportLayerInformation := tr_TLI(tla, binding_id),
+ service_Handover := *,
+ iE_Extensions := *
+ }
+ },
+ secondCriticality := ignore,
+ secondValue := {
+ rAB_SetupOrModifyItemSecond := {
+ pDP_TypeInformation := omit,
+ dataVolumeReportingIndication := omit,
+ dl_GTP_PDU_SequenceNumber := omit,
+ ul_GTP_PDU_SequenceNumber := omit,
+ dl_N_PDU_SequenceNumber := omit,
+ ul_N_PDU_SequenceNumber := omit,
+ iE_Extensions := omit
+ }
+ }
+ }
+} }
+
+
+template (value) RANAP_PDU
+ts_RANAP_RabAssReq(template (value) RAB_SetupOrModifyList rab_sml,
+ template (omit) RAB_AssignmentRequest.protocolExtensions exts := omit) := {
+ initiatingMessage := {
+ procedureCode := id_RAB_Assignment,
+ criticality := reject,
+ value_ := {
+ rAB_AssignmentRequest := {
+ protocolIEs := {
+ {
+ id := id_RAB_SetupOrModifyList,
+ criticality := reject,
+ value_ := {
+ rAB_SetupOrModifyList := rab_sml
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_RabAssReq(template RAB_SetupOrModifyList rab_sml,
+ template RAB_AssignmentRequest.protocolExtensions exts := *) := {
+ initiatingMessage := {
+ procedureCode := id_RAB_Assignment,
+ criticality := reject,
+ value_ := {
+ rAB_AssignmentRequest := {
+ protocolIEs := {
+ {
+ id := id_RAB_SetupOrModifyList,
+ criticality := reject,
+ value_ := {
+ rAB_SetupOrModifyList := rab_sml
+ }
+ }
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+template (value) RANAP_PDU
+ts_RANAP_RabAssResp(template (value) RAB_SetupOrModifiedList rab_sml,
+ template (omit) RAB_AssignmentResponse.protocolExtensions exts := omit) := {
+ outcome := {
+ procedureCode := id_RAB_Assignment,
+ criticality := reject,
+ value_ := {
+ rAB_AssignmentResponse := {
+ protocolIEs := {
+ {
+ id := id_RAB_SetupOrModifiedList,
+ criticality := ignore,
+ value_ := {
+ rAB_SetupOrModifiedList := rab_sml
+ }
+ }
+ /* RAB-ReleasedList */
+ /* RAB-QueuedList */
+ /* RAB-FailedList */
+ /* RAB-ReleaseFailedList */
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+template RANAP_PDU
+tr_RANAP_RabAssResp(template RAB_SetupOrModifiedList rab_sml,
+ template RAB_AssignmentResponse.protocolExtensions exts := *) := {
+ outcome := {
+ procedureCode := id_RAB_Assignment,
+ criticality := reject,
+ value_ := {
+ rAB_AssignmentResponse := {
+ protocolIEs := {
+ {
+ id := id_RAB_SetupOrModifiedList,
+ criticality := ignore,
+ value_ := {
+ rAB_SetupOrModifiedList := rab_sml
+ }
+ }, *
+ /* RAB-ReleasedList */
+ /* RAB-QueuedList */
+ /* RAB-FailedList */
+ /* RAB-ReleaseFailedList */
+ },
+ protocolExtensions := exts
+ }
+ }
+ }
+}
+
+
+/*****************************************************************************************************
+ *
+ *****************************************************************************************************/
+
+/* extract the L3 (NAS) from a given RANAP message */
+function f_ranap_extract_l3(RANAP_PDU ranap) return template (omit) octetstring
+{
+ var integer i;
+
+ if (match(ranap, tr_RANAP_initialUE_CS(?, ?, ?, ?, ?)) or
+ match(ranap, tr_RANAP_initialUE_PS(?, ?, ?, ?, ?, ?)) ) {
+ var InitialUE_Message.protocolIEs ies := ranap.initiatingMessage.value_.initialUE_Message.protocolIEs;
+ for (i := 0; i < lengthof(ies); i := i+1) {
+ if (ies[i].id == id_NAS_PDU) {
+ return ies[i].value_.nAS_PDU;
+ }
+ }
+ } else if (match(ranap, tr_RANAP_DirectTransfer(?, ?))) {
+ var DirectTransfer.protocolIEs ies := ranap.initiatingMessage.value_.directTransfer.protocolIEs;
+ for (i := 0; i < lengthof(ies); i := i+1) {
+ if (ies[i].id == id_NAS_PDU) {
+ return ies[i].value_.nAS_PDU;
+ }
+ }
+ } else {
+ /* relocationInformation not supported yet*/
+ }
+ return omit;
+}
+
+function f_ranap_extract_sapi(RANAP_PDU ranap) return template (omit) SAPI
+{
+ var integer i;
+
+ /* InitialUE message has no SAPI */
+ if (match(ranap, tr_RANAP_DirectTransfer(?, ?))) {
+ var DirectTransfer.protocolIEs ies := ranap.initiatingMessage.value_.directTransfer.protocolIEs;
+ for (i := 0; i < lengthof(ies); i := i+1) {
+ if (ies[i].id == id_SAPI) {
+ return ies[i].value_.sAPI;
+ }
+ }
+ }
+ return omit;
+}
+
+
+}