diff options
Diffstat (limited to 'library/ranap/RANAP_Templates.ttcn')
-rw-r--r-- | library/ranap/RANAP_Templates.ttcn | 1427 |
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; +} + + +} |