fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39075?usp=email )
Change subject: library/s1ap: add E-RAB MODIFY REQ/RSP templates ......................................................................
library/s1ap: add E-RAB MODIFY REQ/RSP templates
Change-Id: Id38cd51698c1388311a41f045ff08ec7f8a85146 --- M library/s1ap/S1AP_Templates.ttcn 1 file changed, 333 insertions(+), 0 deletions(-)
Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/library/s1ap/S1AP_Templates.ttcn b/library/s1ap/S1AP_Templates.ttcn index 58722e5..b40f948 100644 --- a/library/s1ap/S1AP_Templates.ttcn +++ b/library/s1ap/S1AP_Templates.ttcn @@ -1354,6 +1354,339 @@ } }
+/* 9.1.3.3 E-RAB MODIFY REQUEST */ +template (value) E_RABToBeModifiedItemBearerModReq +ts_E_RABToBeModifiedItemBearerModReq(template (value) E_RAB_ID rab_id, + template (value) E_RABLevelQoSParameters qos_params, + template (value) NAS_PDU nas_pdu) := { + e_RAB_ID := rab_id, + e_RABLevelQoSParameters := qos_params, + nAS_PDU := nas_pdu, + iE_Extensions := omit +} +template (present) E_RABToBeModifiedItemBearerModReq +tr_E_RABToBeModifiedItemBearerModReq(template (present) E_RAB_ID rab_id := ?, + template (present) E_RABLevelQoSParameters qos_params := ?, + template (present) NAS_PDU nas_pdu := ?) := { + e_RAB_ID := rab_id, + e_RABLevelQoSParameters := qos_params, + nAS_PDU := nas_pdu, + iE_Extensions := * +} + +template (value) E_RABToBeModifiedItemBearerModReq +ts_E_RABToBeModifiedItemBearerModReqExt(template (value) E_RAB_ID rab_id, + template (value) E_RABLevelQoSParameters qos_params, + template (value) NAS_PDU nas_pdu, + template (value) TransportLayerAddress tla, + template (value) GTP_TEID gtp_teid) +modifies ts_E_RABToBeModifiedItemBearerModReq := { + iE_Extensions := { + { + id := S1AP_Constants.id_TransportInformation, + criticality := reject, + extensionValue := { + TransportInformation := { + transportLayerAddress := tla, + uL_GTP_TEID := gtp_teid + } + } + } + } +} +template (present) E_RABToBeModifiedItemBearerModReq +tr_E_RABToBeModifiedItemBearerModReqExt(template (present) E_RAB_ID rab_id := ?, + template (present) E_RABLevelQoSParameters qos_params := ?, + template (present) NAS_PDU nas_pdu := ?, + template (present) TransportLayerAddress tla := ?, + template (present) GTP_TEID gtp_teid := ?) +modifies tr_E_RABToBeModifiedItemBearerModReq := { + iE_Extensions := { + { + id := S1AP_Constants.id_TransportInformation, + criticality := reject, + extensionValue := { + TransportInformation := { + transportLayerAddress := tla, + uL_GTP_TEID := gtp_teid + } + } + } + } +} + +template (value) E_RABToBeModifiedListBearerModReq +ts_E_RABToBeModifiedListBearerModReq(template (value) E_RABToBeModifiedItemBearerModReq it) := { + { + id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModReq, + criticality := reject, + value_ := { E_RABToBeModifiedItemBearerModReq := it } + } +} +template (present) E_RABToBeModifiedListBearerModReq +tr_E_RABToBeModifiedListBearerModReq(template (present) E_RABToBeModifiedItemBearerModReq it := ?) := { + { + id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModReq, + criticality := reject, + value_ := { E_RABToBeModifiedItemBearerModReq := it } + } +} + +private function +f_ts_S1AP_RABModifyReq(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABToBeModifiedListBearerModReq rab_modify_items, + template (omit) UEAggregateMaximumBitrate max_br := omit) +return template (value) E_RABModifyRequest +{ + var template (value) E_RABModifyRequest req := { + 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 } + } + } + }; + + var integer idx := lengthof(req.protocolIEs); + if (isvalue(max_br)) { + req.protocolIEs[idx] := { + id := S1AP_Constants.id_uEaggregateMaximumBitrate, + criticality := reject, + value_ := { UEAggregateMaximumBitrate := max_br } + }; + idx := idx + 1; + } + + req.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABToBeModifiedListBearerModReq, + criticality := reject, + value_ := { E_RABToBeModifiedListBearerModReq := rab_modify_items } + }; + idx := idx + 1; + + return req; +} +private function +f_tr_S1AP_RABModifyReq(template (present) MME_UE_S1AP_ID mme_id, + template (present) ENB_UE_S1AP_ID enb_id, + template (present) E_RABToBeModifiedListBearerModReq rab_modify_items, + template UEAggregateMaximumBitrate max_br := *) +return template E_RABModifyRequest +{ + var template E_RABModifyRequest req := { + 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 } + } + } + }; + + var integer idx := lengthof(req.protocolIEs); + if (ispresent(max_br)) { + req.protocolIEs[idx] := { + id := S1AP_Constants.id_uEaggregateMaximumBitrate, + criticality := reject, + value_ := { UEAggregateMaximumBitrate := max_br } + }; + idx := idx + 1; + } else if (istemplatekind(max_br, "*")) { + req.protocolIEs[idx] := *; + idx := idx + 1; + } + + req.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABToBeModifiedListBearerModReq, + criticality := reject, + value_ := { E_RABToBeModifiedListBearerModReq := rab_modify_items } + }; + idx := idx + 1; + + /* ignore the remaining IEs */ + req.protocolIEs[idx] := *; + + return req; +} + +template (value) S1AP_PDU +ts_S1AP_RABModifyReq(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABToBeModifiedListBearerModReq rab_modify_items, + template (omit) UEAggregateMaximumBitrate max_br := omit) := { + initiatingMessage := { + procedureCode := S1AP_Constants.id_E_RABModify, + criticality := reject, + value_ := { + E_RABModifyRequest := f_ts_S1AP_RABModifyReq(mme_id, enb_id, + rab_modify_items, + max_br) + } + } +} +template (present) S1AP_PDU +tr_S1AP_RABModifyReq(template (present) MME_UE_S1AP_ID mme_id := ?, + template (present) ENB_UE_S1AP_ID enb_id := ?, + template (present) E_RABToBeModifiedListBearerModReq rab_modify_items := ?, + template UEAggregateMaximumBitrate max_br := *) := { + initiatingMessage := { + procedureCode := S1AP_Constants.id_E_RABModify, + criticality := reject, + value_ := { + E_RABModifyRequest := f_tr_S1AP_RABModifyReq(mme_id, enb_id, + rab_modify_items, + max_br) + } + } +} + +/* 9.1.3.4 E-RAB MODIFY RESPONSE */ +template (value) E_RABModifyItemBearerModRes +ts_E_RABModifyItemBearerModRes(template (value) E_RAB_ID rab_id) := { + e_RAB_ID := rab_id, + iE_Extensions := omit +} +template (present) E_RABModifyItemBearerModRes +tr_E_RABModifyItemBearerModRes(template (present) E_RAB_ID rab_id := ?) := { + e_RAB_ID := rab_id, + iE_Extensions := * +} + +template (value) E_RABModifyListBearerModRes +ts_E_RABModifyListBearerModRes(template (value) E_RABModifyItemBearerModRes it) := { + { + id := S1AP_Constants.id_E_RABModifyItemBearerModRes, + criticality := ignore, + value_ := { E_RABModifyItemBearerModRes := it } + } +} +template (present) E_RABModifyListBearerModRes +tr_E_RABModifyListBearerModRes(template (present) E_RABModifyItemBearerModRes it := ?) := { + { + id := S1AP_Constants.id_E_RABModifyItemBearerModRes, + criticality := ignore, + value_ := { E_RABModifyItemBearerModRes := it } + } +} + +private function +f_ts_S1AP_RABModifyRsp(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABModifyListBearerModRes rab_modified_items, + template (omit) E_RABList rab_failed_items := omit) +return template (value) E_RABModifyResponse +{ + var template (value) E_RABModifyResponse rsp := { + 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_RABModifyListBearerModRes, + criticality := ignore, + value_ := { E_RABModifyListBearerModRes := rab_modified_items } + } + } + }; + + var integer idx := lengthof(rsp.protocolIEs); + if (isvalue(rab_failed_items)) { + rsp.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABFailedToModifyList, + criticality := ignore, + value_ := { e_RABList := rab_failed_items } + }; + idx := idx + 1; + } + + return rsp; +} +private function +f_tr_S1AP_RABModifyRsp(template (present) MME_UE_S1AP_ID mme_id, + template (present) ENB_UE_S1AP_ID enb_id, + template (present) E_RABModifyListBearerModRes rab_modified_items, + template E_RABList rab_failed_items := *) +return template E_RABModifyResponse +{ + var template E_RABModifyResponse rsp := { + 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_RABModifyListBearerModRes, + criticality := ignore, + value_ := { E_RABModifyListBearerModRes := rab_modified_items } + } + } + }; + + var integer idx := lengthof(rsp.protocolIEs); + if (ispresent(rab_failed_items)) { + rsp.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABFailedToModifyList, + criticality := ignore, + value_ := { e_RABList := rab_failed_items } + }; + idx := idx + 1; + } + /* ignore the remaining IEs */ + rsp.protocolIEs[idx] := *; + + return rsp; +} + +template (value) S1AP_PDU +ts_S1AP_RABModifyRsp(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABModifyListBearerModRes rab_modified_items, + template (omit) E_RABList rab_failed_items := omit) := { + successfulOutcome := { + procedureCode := S1AP_Constants.id_E_RABModify, + criticality := reject, + value_ := { + E_RABModifyResponse := f_ts_S1AP_RABModifyRsp(mme_id, enb_id, + rab_modified_items, + rab_failed_items) + } + } +} +template (present) S1AP_PDU +tr_S1AP_RABModifyRsp(template (present) MME_UE_S1AP_ID mme_id := ?, + template (present) ENB_UE_S1AP_ID enb_id := ?, + template (present) E_RABModifyListBearerModRes rab_modified_items := ?, + template E_RABList rab_failed_items := *) := { + successfulOutcome := { + procedureCode := S1AP_Constants.id_E_RABModify, + criticality := reject, + value_ := { + E_RABModifyResponse := f_tr_S1AP_RABModifyRsp(mme_id, enb_id, + rab_modified_items, + rab_failed_items) + } + } +} + /* 9.1.3.5 E-RAB RELEASE COMMAND */ template (value) S1AP_PDU ts_S1AP_RABReleaseCmd(template (value) MME_UE_S1AP_ID mme_id,