fixeria has submitted this change. (
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41008?usp=email )
Change subject: Add templates for S1AP Handover procedure
......................................................................
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(-)
Approvals:
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
fixeria: Looks good to me, approved
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
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/41008?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
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(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: pespin <pespin(a)sysmocom.de>