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 } + }, * + } + } + } + } +} + }