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 <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-CC: pespin <[email protected]>

Reply via email to