fixeria submitted this change.

View Change

Approvals: laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved
Add templates for S1AP Handover procedure

These templates include handover preperation and resource allocation for
S1 handover procedure. It supports mandatory information elements only
at this time.

Related: SYS#7309
Change-Id: Ib8b8aee0665a4f6644287b802f5e941bd82128f6
---
M library/s1ap/S1AP_Templates.ttcn
1 file changed, 492 insertions(+), 0 deletions(-)

diff --git a/library/s1ap/S1AP_Templates.ttcn b/library/s1ap/S1AP_Templates.ttcn
index 2ba2b36..7910465 100644
--- a/library/s1ap/S1AP_Templates.ttcn
+++ b/library/s1ap/S1AP_Templates.ttcn
@@ -2281,4 +2281,496 @@
iE_Extensions := *
}

+/* 9.1.5.1 HANDOVER REQUIRED */
+template (value) S1AP_PDU
+ts_S1AP_HandoverRqd(template (value) MME_UE_S1AP_ID mme_id,
+ template (value) ENB_UE_S1AP_ID enb_id,
+ template (value) HandoverType ho_type,
+ template (value) Cause cause,
+ template (value) TargetID target_id,
+ template (value) octetstring container) := {
+ initiatingMessage := {
+ procedureCode := S1AP_Constants.id_HandoverPreparation,
+ criticality := reject,
+ value_ := {
+ HandoverRequired := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, {
+ id := S1AP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }, {
+ id := S1AP_Constants.id_TargetID,
+ criticality := reject,
+ value_ := { TargetID := target_id }
+ }, {
+ id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
+ criticality := reject,
+ value_ := { Source_ToTarget_TransparentContainer := container }
+ }
+ }
+ }
+ }
+ }
+}
+
+template (present) S1AP_PDU
+tr_S1AP_HandoverRqd(template (present) MME_UE_S1AP_ID mme_id := ?,
+ template (present) ENB_UE_S1AP_ID enb_id := ?,
+ template (present) HandoverType ho_type := ?,
+ template (present) Cause cause := ?,
+ template (present) TargetID target_id := ?,
+ template (present) octetstring container := ?) := {
+ initiatingMessage := {
+ procedureCode := S1AP_Constants.id_HandoverPreparation,
+ criticality := reject,
+ value_ := {
+ HandoverRequired := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, {
+ id := S1AP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }, {
+ id := S1AP_Constants.id_TargetID,
+ criticality := reject,
+ value_ := { TargetID := target_id }
+ }, *, {
+ id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
+ criticality := reject,
+ value_ := { Source_ToTarget_TransparentContainer := container }
+ }, *
+ }
+ }
+ }
+ }
+}
+
+template (value) E_RABSubjecttoDataForwardingList
+ts_E_RABSubjecttoDataForwardingList(template (value) E_RABDataForwardingItem it) := {
+ {
+ id := S1AP_Constants.id_E_RABDataForwardingItem,
+ criticality := ignore,
+ value_ := { e_RABDataForwardingItem := it }
+ }
+}
+template (present) E_RABSubjecttoDataForwardingList
+tr_E_RABSubjecttoDataForwardingList(template (present) E_RABDataForwardingItem it := ?) := {
+ {
+ id := S1AP_Constants.id_E_RABDataForwardingItem,
+ criticality := ignore,
+ value_ := { e_RABDataForwardingItem := it }
+ }
+}
+template (value) E_RABDataForwardingItem
+ts_E_RABDataForwardingItem(template (value) E_RAB_ID rab_id,
+ template (omit) TransportLayerAddress dl_tla := omit,
+ template (omit) GTP_TEID dl_gtp_teid := omit,
+ template (omit) TransportLayerAddress ul_tla := omit,
+ template (omit) GTP_TEID ul_gtp_teid := omit) := {
+ e_RAB_ID := rab_id,
+ dL_transportLayerAddress := ul_tla,
+ dL_gTP_TEID := dl_gtp_teid,
+ uL_TransportLayerAddress := ul_tla,
+ uL_GTP_TEID := dl_gtp_teid,
+ iE_Extensions := omit
+}
+template (present) E_RABDataForwardingItem
+tr_E_RABDataForwardingItem(template (present) E_RAB_ID rab_id := ?,
+ template TransportLayerAddress dl_tla := *,
+ template GTP_TEID dl_gtp_teid := *,
+ template TransportLayerAddress ul_tla := *,
+ template GTP_TEID ul_gtp_teid := *) := {
+ e_RAB_ID := rab_id,
+ dL_transportLayerAddress := dl_tla,
+ dL_gTP_TEID := dl_gtp_teid,
+ uL_TransportLayerAddress := ul_tla,
+ uL_GTP_TEID := ul_gtp_teid,
+ iE_Extensions := *
+}
+
+/* 9.1.5.2 HANDOVER COMMAND */
+template (value) S1AP_PDU
+ts_S1AP_HandoverCmd(template (value) MME_UE_S1AP_ID mme_id,
+ template (value) ENB_UE_S1AP_ID enb_id,
+ template (value) HandoverType ho_type,
+ template (value) E_RABSubjecttoDataForwardingList rab_forward_items,
+ template (value) octetstring container) := {
+ successfulOutcome := {
+ procedureCode := S1AP_Constants.id_HandoverPreparation,
+ criticality := reject,
+ value_ := {
+ HandoverCommand := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, {
+ id := S1AP_Constants.id_E_RABSubjecttoDataForwardingList,
+ criticality := ignore,
+ value_ := { E_RABSubjecttoDataForwardingList := rab_forward_items }
+ }, {
+ id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
+ criticality := reject,
+ value_ := { Target_ToSource_TransparentContainer := container }
+ }
+ }
+ }
+ }
+ }
+}
+template (present) S1AP_PDU
+tr_S1AP_HandoverCmd(template (present) MME_UE_S1AP_ID mme_id := ?,
+ template (present) ENB_UE_S1AP_ID enb_id := ?,
+ template (present) HandoverType ho_type := ?,
+ template (present) E_RABSubjecttoDataForwardingList rab_forward_items := ?,
+ template (present) octetstring container := ?) := {
+ successfulOutcome := {
+ procedureCode := S1AP_Constants.id_HandoverPreparation,
+ criticality := reject,
+ value_ := {
+ HandoverCommand := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, *, {
+ id := S1AP_Constants.id_E_RABSubjecttoDataForwardingList,
+ criticality := ignore,
+ value_ := { E_RABSubjecttoDataForwardingList := rab_forward_items }
+ }, *, {
+ id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
+ criticality := reject,
+ value_ := { Target_ToSource_TransparentContainer := container }
+ }, *
+ }
+ }
+ }
+ }
+}
+
+template (value) E_RABToBeSetupListHOReq
+ts_E_RABToBeSetupListHOReq(template (value) E_RABToBeSetupItemHOReq it) := {
+ {
+ id := S1AP_Constants.id_E_RABToBeSetupItemHOReq,
+ criticality := reject,
+ value_ := { E_RABToBeSetupItemHOReq := it }
+ }
+}
+template (present) E_RABToBeSetupListHOReq
+tr_E_RABToBeSetupListHOReq(template (present) E_RABToBeSetupItemHOReq it := ?) := {
+ {
+ id := S1AP_Constants.id_E_RABToBeSetupItemHOReq,
+ criticality := reject,
+ value_ := { E_RABToBeSetupItemHOReq := it }
+ }
+}
+
+template (value) E_RABToBeSetupItemHOReq
+ts_E_RABToBeSetupItemHOReq(template (value) E_RAB_ID rab_id,
+ template (value) TransportLayerAddress tla,
+ template (value) GTP_TEID gtp_teid,
+ template (value) E_RABLevelQoSParameters qos_params) := {
+ e_RAB_ID := rab_id,
+ transportLayerAddress := tla,
+ gTP_TEID := gtp_teid,
+ e_RABlevelQosParameters := qos_params,
+ iE_Extensions := omit
+}
+template (present) E_RABToBeSetupItemHOReq
+tr_E_RABToBeSetupItemHOReq(template (present) E_RAB_ID rab_id := ?,
+ template (present) TransportLayerAddress tla := ?,
+ template (present) GTP_TEID gtp_teid := ?,
+ template (present) E_RABLevelQoSParameters qos_params := ?) := {
+ e_RAB_ID := rab_id,
+ transportLayerAddress := tla,
+ gTP_TEID := gtp_teid,
+ e_RABlevelQosParameters := qos_params,
+ iE_Extensions := *
+}
+
+template (value) SecurityContext
+ts_SecurityContext(template (value) integer nextHopChainingCount,
+ template (value) SecurityKey nextHopParameter) := {
+ nextHopChainingCount := nextHopChainingCount,
+ nextHopParameter := nextHopParameter,
+ iE_Extensions := omit
+}
+template (present) SecurityContext
+tr_SecurityContext(template (present) integer nextHopChainingCount := ?,
+ template (present) SecurityKey nextHopParameter := ?) := {
+ nextHopChainingCount := nextHopChainingCount,
+ nextHopParameter := nextHopParameter,
+ iE_Extensions := *
+}
+
+/* 9.1.5.4 HANDOVER REQUEST */
+template (value) S1AP_PDU
+ts_S1AP_HandoverReq(template (value) MME_UE_S1AP_ID mme_id,
+ template (value) HandoverType ho_type,
+ template (value) Cause cause,
+ template (value) UEAggregateMaximumBitrate max_br,
+ template (value) E_RABToBeSetupListHOReq rab_setup_items,
+ template (value) octetstring container,
+ template (value) UESecurityCapabilities ue_sec_par,
+ template (value) SecurityContext sec_ctx) := {
+ initiatingMessage := {
+ procedureCode := S1AP_Constants.id_HandoverResourceAllocation,
+ criticality := reject,
+ value_ := {
+ HandoverRequest := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, {
+ id := S1AP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }, {
+ id := S1AP_Constants.id_uEaggregateMaximumBitrate,
+ criticality := reject,
+ value_ := {UEAggregateMaximumBitrate := max_br}
+ }, {
+ id := S1AP_Constants.id_E_RABToBeSetupListHOReq,
+ criticality := reject,
+ value_ := { E_RABToBeSetupListHOReq := rab_setup_items }
+ }, {
+ id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
+ criticality := reject,
+ value_ := { Source_ToTarget_TransparentContainer := container }
+ }, {
+ id := S1AP_Constants.id_UESecurityCapabilities,
+ criticality := reject,
+ value_ := {UESecurityCapabilities := ue_sec_par}
+ }, {
+ id := S1AP_Constants.id_SecurityContext,
+ criticality := reject,
+ value_ := {SecurityContext := sec_ctx}
+ }
+ }
+ }
+ }
+ }
+}
+template (present) S1AP_PDU
+tr_S1AP_HandoverReq(template (present) MME_UE_S1AP_ID mme_id := ?,
+ template (present) HandoverType ho_type := ?,
+ template (present) Cause cause := ?,
+ template (present) UEAggregateMaximumBitrate max_br := ?,
+ template (present) E_RABToBeSetupListHOReq rab_setup_items := ?,
+ template (present) octetstring container := ?,
+ template (present) UESecurityCapabilities ue_sec_par := ?,
+ template (present) SecurityContext sec_ctx := ?) := {
+ initiatingMessage := {
+ procedureCode := S1AP_Constants.id_HandoverResourceAllocation,
+ criticality := reject,
+ value_ := {
+ HandoverRequest := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := reject,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_HandoverType,
+ criticality := reject,
+ value_ := { HandoverType := ho_type }
+ }, {
+ id := S1AP_Constants.id_Cause,
+ criticality := ignore,
+ value_ := { Cause := cause }
+ }, {
+ id := S1AP_Constants.id_uEaggregateMaximumBitrate,
+ criticality := reject,
+ value_ := {UEAggregateMaximumBitrate := max_br}
+ }, {
+ id := S1AP_Constants.id_E_RABToBeSetupListHOReq,
+ criticality := reject,
+ value_ := { E_RABToBeSetupListHOReq := rab_setup_items }
+ }, {
+ id := S1AP_Constants.id_Source_ToTarget_TransparentContainer,
+ criticality := reject,
+ value_ := { Source_ToTarget_TransparentContainer := container }
+ }, {
+ id := S1AP_Constants.id_UESecurityCapabilities,
+ criticality := reject,
+ value_ := {UESecurityCapabilities := ue_sec_par}
+ }, *, {
+ id := S1AP_Constants.id_SecurityContext,
+ criticality := reject,
+ value_ := {SecurityContext := sec_ctx}
+ }, *
+ }
+ }
+ }
+ }
+}
+
+template (value) E_RABAdmittedList
+ts_E_RABAdmittedList(template (value) E_RABAdmittedItem it) := {
+ {
+ id := S1AP_Constants.id_E_RABAdmittedItem,
+ criticality := ignore,
+ value_ := { E_RABAdmittedItem := it }
+ }
+}
+template (present) E_RABAdmittedList
+tr_E_RABAdmittedList(template (present) E_RABAdmittedItem it := ?) := {
+ {
+ id := S1AP_Constants.id_E_RABAdmittedItem,
+ criticality := ignore,
+ value_ := { E_RABAdmittedItem := it }
+ }
+}
+template (value) E_RABAdmittedItem
+ts_E_RABAdmittedItem(template (value) E_RAB_ID rab_id,
+ template (value) TransportLayerAddress tla,
+ template (value) GTP_TEID gtp_teid,
+ template (omit) TransportLayerAddress dl_tla := omit,
+ template (omit) GTP_TEID dl_gtp_teid := omit,
+ template (omit) TransportLayerAddress ul_tla := omit,
+ template (omit) GTP_TEID ul_gtp_teid := omit) := {
+ e_RAB_ID := rab_id,
+ transportLayerAddress := tla,
+ gTP_TEID := gtp_teid,
+ dL_transportLayerAddress := ul_tla,
+ dL_gTP_TEID := dl_gtp_teid,
+ uL_TransportLayerAddress := ul_tla,
+ uL_GTP_TEID := dl_gtp_teid,
+ iE_Extensions := omit
+}
+template (present) E_RABAdmittedItem
+tr_E_RABAdmittedItem(template (present) E_RAB_ID rab_id := ?,
+ template (present) TransportLayerAddress tla := ?,
+ template (present) GTP_TEID gtp_teid := ?,
+ template TransportLayerAddress dl_tla := *,
+ template GTP_TEID dl_gtp_teid := *,
+ template TransportLayerAddress ul_tla := *,
+ template GTP_TEID ul_gtp_teid := *) := {
+ e_RAB_ID := rab_id,
+ transportLayerAddress := tla,
+ gTP_TEID := gtp_teid,
+ dL_transportLayerAddress := dl_tla,
+ dL_gTP_TEID := dl_gtp_teid,
+ uL_TransportLayerAddress := ul_tla,
+ uL_GTP_TEID := ul_gtp_teid,
+ iE_Extensions := *
+}
+
+/* 9.1.5.5 HANDOVER REQUEST ACKNOWLEDGE */
+template (value) S1AP_PDU
+ts_S1AP_HandoverAck(template (value) MME_UE_S1AP_ID mme_id,
+ template (value) ENB_UE_S1AP_ID enb_id,
+ template (value) E_RABAdmittedList rab_admit_items,
+ template (value) octetstring container) := {
+ successfulOutcome := {
+ procedureCode := S1AP_Constants.id_HandoverResourceAllocation,
+ criticality := reject,
+ value_ := {
+ HandoverRequestAcknowledge := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := ignore,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := ignore,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_E_RABAdmittedList,
+ criticality := ignore,
+ value_ := { E_RABAdmittedList := rab_admit_items }
+ }, {
+ id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
+ criticality := reject,
+ value_ := { Target_ToSource_TransparentContainer := container }
+ }
+ }
+ }
+ }
+ }
+}
+template (present) S1AP_PDU
+tr_S1AP_HandoverAck(template (present) MME_UE_S1AP_ID mme_id := ?,
+ template (present) ENB_UE_S1AP_ID enb_id := ?,
+ template (present) E_RABAdmittedList rab_admit_items := ?,
+ template (present) octetstring container := ?) := {
+ successfulOutcome := {
+ procedureCode := S1AP_Constants.id_HandoverResourceAllocation,
+ criticality := reject,
+ value_ := {
+ HandoverRequestAcknowledge := {
+ protocolIEs := {
+ {
+ id := S1AP_Constants.id_MME_UE_S1AP_ID,
+ criticality := ignore,
+ value_ := { MME_UE_S1AP_ID := mme_id }
+ }, {
+ id := S1AP_Constants.id_eNB_UE_S1AP_ID,
+ criticality := ignore,
+ value_ := { ENB_UE_S1AP_ID := enb_id }
+ }, {
+ id := S1AP_Constants.id_E_RABAdmittedList,
+ criticality := ignore,
+ value_ := { E_RABAdmittedList := rab_admit_items }
+ }, *, {
+ id := S1AP_Constants.id_Target_ToSource_TransparentContainer,
+ criticality := reject,
+ value_ := { Target_ToSource_TransparentContainer := container }
+ }, *
+ }
+ }
+ }
+ }
+}
+
}

To view, visit change 41008. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Ib8b8aee0665a4f6644287b802f5e941bd82128f6
Gerrit-Change-Number: 41008
Gerrit-PatchSet: 3
Gerrit-Owner: jolly <andreas@eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-CC: pespin <pespin@sysmocom.de>