fixeria submitted this change.

View Change

Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
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(-)

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,

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

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Id38cd51698c1388311a41f045ff08ec7f8a85146
Gerrit-Change-Number: 39075
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>