fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39144?usp=email )
Change subject: library/s1ap: add E-RAB MODIFY IND/CNF templates ......................................................................
library/s1ap: add E-RAB MODIFY IND/CNF templates
Change-Id: I2dd3d420ebfaf37fefa1d33a40176ec57fee5619 --- M library/s1ap/S1AP_Templates.ttcn 1 file changed, 358 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/44/39144/1
diff --git a/library/s1ap/S1AP_Templates.ttcn b/library/s1ap/S1AP_Templates.ttcn index b40f948..cb74cb4 100644 --- a/library/s1ap/S1AP_Templates.ttcn +++ b/library/s1ap/S1AP_Templates.ttcn @@ -1923,4 +1923,362 @@ iE_Extensions := * }
+/* 9.1.3.8 E-RAB MODIFICATION INDICATION */ +template (value) S1AP_PDU +ts_S1AP_RABModifyInd(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABToBeModifiedListBearerModInd rab_do_modify_items, + template (omit) E_RABNotToBeModifiedListBearerModInd rab_no_modify_items := omit) := { + initiatingMessage := { + procedureCode := S1AP_Constants.id_E_RABModificationIndication, + criticality := reject, + value_ := { + e_RABModificationIndication := f_ts_S1AP_RABModifyInd(mme_id, enb_id, + rab_do_modify_items, + rab_no_modify_items) + } + } +} +template (present) S1AP_PDU +tr_S1AP_RABModifyInd(template (present) MME_UE_S1AP_ID mme_id := ?, + template (present) ENB_UE_S1AP_ID enb_id := ?, + template (present) E_RABToBeModifiedListBearerModInd rab_do_modify_items := ?, + template E_RABNotToBeModifiedListBearerModInd rab_no_modify_items := *) := { + initiatingMessage := { + procedureCode := S1AP_Constants.id_E_RABModificationIndication, + criticality := reject, + value_ := { + e_RABModificationIndication := f_tr_S1AP_RABModifyInd(mme_id, enb_id, + rab_do_modify_items, + rab_no_modify_items) + } + } +} + +private function +f_ts_S1AP_RABModifyInd(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (value) E_RABToBeModifiedListBearerModInd rab_do_modify_items, + template (omit) E_RABNotToBeModifiedListBearerModInd rab_no_modify_items) +return template (value) E_RABModificationIndication +{ + var template (value) E_RABModificationIndication ind := { + 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_E_RABToBeModifiedListBearerModInd, + criticality := reject, + value_ := { e_RABToBeModifiedListBearerModInd := rab_do_modify_items } + } + } + }; + + var integer idx := lengthof(ind.protocolIEs); + if (isvalue(rab_no_modify_items)) { + ind.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABNotToBeModifiedListBearerModInd, + criticality := reject, + value_ := { e_RABNotToBeModifiedListBearerModInd := rab_no_modify_items } + }; + idx := idx + 1; + } + + return ind; +} +private function +f_tr_S1AP_RABModifyInd(template (present) MME_UE_S1AP_ID mme_id, + template (present) ENB_UE_S1AP_ID enb_id, + template (present) E_RABToBeModifiedListBearerModInd rab_do_modify_items, + template E_RABNotToBeModifiedListBearerModInd rab_no_modify_items) +return template E_RABModificationIndication +{ + var template E_RABModificationIndication ind := { + 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_E_RABToBeModifiedListBearerModInd, + criticality := reject, + value_ := { e_RABToBeModifiedListBearerModInd := rab_do_modify_items } + } + } + }; + + var integer idx := lengthof(ind.protocolIEs); + if (ispresent(rab_no_modify_items)) { + ind.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABNotToBeModifiedListBearerModInd, + criticality := reject, + value_ := { e_RABNotToBeModifiedListBearerModInd := rab_no_modify_items } + }; + idx := idx + 1; + } + + /* ignore the remaining IEs */ + ind.protocolIEs[idx] := *; + + return ind; +} + +template (value) E_RABToBeModifiedListBearerModInd +ts_E_RABToBeModifiedListBearerModInd(template (value) E_RABToBeModifiedItemBearerModInd it) := { + { + id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModInd, + criticality := reject, + value_ := { e_RABToBeModifiedItemBearerModInd := it } + } +} +template (present) E_RABToBeModifiedListBearerModInd +tr_E_RABToBeModifiedListBearerModInd(template (present) E_RABToBeModifiedItemBearerModInd it := ?) := { + { + id := S1AP_Constants.id_E_RABToBeModifiedItemBearerModInd, + criticality := reject, + value_ := { e_RABToBeModifiedItemBearerModInd := it } + } +} + +template (value) E_RABToBeModifiedItemBearerModInd +ts_E_RABToBeModifiedItemBearerModInd(template (value) E_RAB_ID rab_id, + template (value) TransportLayerAddress tla, + template (value) GTP_TEID gtp_teid) := { + e_RAB_ID := rab_id, + transportLayerAddress := tla, + dL_GTP_TEID := gtp_teid, + iE_Extensions := omit +} +template (present) E_RABToBeModifiedItemBearerModInd +tr_E_RABToBeModifiedItemBearerModInd(template (present) E_RAB_ID rab_id, + template (present) TransportLayerAddress tla, + template (present) GTP_TEID gtp_teid) := { + e_RAB_ID := rab_id, + transportLayerAddress := tla, + dL_GTP_TEID := gtp_teid, + iE_Extensions := * +} + +template (value) E_RABNotToBeModifiedListBearerModInd +ts_E_RABNotToBeModifiedListBearerModInd(template (value) E_RABNotToBeModifiedItemBearerModInd it) := { + { + id := S1AP_Constants.id_E_RABNotToBeModifiedItemBearerModInd, + criticality := reject, + value_ := { e_RABNotToBeModifiedItemBearerModInd := it } + } +} +template (present) E_RABNotToBeModifiedListBearerModInd +tr_E_RABNotToBeModifiedListBearerModInd(template (present) E_RABNotToBeModifiedItemBearerModInd it := ?) := { + { + id := S1AP_Constants.id_E_RABNotToBeModifiedItemBearerModInd, + criticality := reject, + value_ := { e_RABNotToBeModifiedItemBearerModInd := it } + } +} + +template (value) E_RABNotToBeModifiedItemBearerModInd +ts_E_RABNotToBeModifiedItemBearerModInd(template (value) E_RAB_ID rab_id, + template (value) TransportLayerAddress tla, + template (value) GTP_TEID gtp_teid) := { + e_RAB_ID := rab_id, + transportLayerAddress := tla, + dL_GTP_TEID := gtp_teid, + iE_Extensions := omit +} +template (present) E_RABNotToBeModifiedItemBearerModInd +tr_E_RABNotToBeModifiedItemBearerModInd(template (present) E_RAB_ID rab_id, + template (present) TransportLayerAddress tla, + template (present) GTP_TEID gtp_teid) := { + e_RAB_ID := rab_id, + transportLayerAddress := tla, + dL_GTP_TEID := gtp_teid, + iE_Extensions := * +} + +/* 9.1.3.9 E-RAB MODIFICATION CONFIRMATION */ +template (value) S1AP_PDU +ts_S1AP_RABModifyCnf(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (omit) E_RABModifyListBearerModConf rab_modified_items := omit, + template (omit) E_RABList rab_failed_items := omit, + template (omit) E_RABList rab_release_items := omit) := { + successfulOutcome := { + procedureCode := S1AP_Constants.id_E_RABModificationIndication, + criticality := reject, + value_ := { + e_RABModificationConfirm := f_ts_S1AP_RABModifyCnf(mme_id, enb_id, + rab_modified_items, + rab_failed_items, + rab_release_items) + } + } +} +template (present) S1AP_PDU +tr_S1AP_RABModifyCnf(template (present) MME_UE_S1AP_ID mme_id := ?, + template (present) ENB_UE_S1AP_ID enb_id := ?, + template E_RABModifyListBearerModConf rab_modified_items := *, + template E_RABList rab_failed_items := *, + template E_RABList rab_release_items := *) := { + successfulOutcome := { + procedureCode := S1AP_Constants.id_E_RABModificationIndication, + criticality := reject, + value_ := { + e_RABModificationConfirm := f_tr_S1AP_RABModifyCnf(mme_id, enb_id, + rab_modified_items, + rab_failed_items, + rab_release_items) + } + } +} + +private function +f_ts_S1AP_RABModifyCnf(template (value) MME_UE_S1AP_ID mme_id, + template (value) ENB_UE_S1AP_ID enb_id, + template (omit) E_RABModifyListBearerModConf rab_modified_items, + template (omit) E_RABList rab_failed_items, + template (omit) E_RABList rab_release_items) +return template (value) E_RABModificationConfirm +{ + var template (value) E_RABModificationConfirm cnf := { + 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 } + } + } + }; + + var integer idx := lengthof(cnf.protocolIEs); + if (isvalue(rab_modified_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABModifyListBearerModConf, + criticality := ignore, + value_ := { e_RABModifyListBearerModConf := rab_modified_items } + }; + idx := idx + 1; + } + if (isvalue(rab_failed_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABFailedToModifyListBearerModConf, + criticality := ignore, + value_ := { e_RABList := rab_failed_items } + }; + idx := idx + 1; + } + if (isvalue(rab_release_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABToBeReleasedListBearerModConf, + criticality := ignore, + value_ := { e_RABList := rab_release_items } + }; + idx := idx + 1; + } + + return cnf; +} +private function +f_tr_S1AP_RABModifyCnf(template (present) MME_UE_S1AP_ID mme_id, + template (present) ENB_UE_S1AP_ID enb_id, + template E_RABModifyListBearerModConf rab_modified_items, + template E_RABList rab_failed_items, + template E_RABList rab_release_items) +return template E_RABModificationConfirm +{ + var template E_RABModificationConfirm cnf := { + 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 } + } + } + }; + + var integer idx := lengthof(cnf.protocolIEs); + if (ispresent(rab_modified_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABModifyListBearerModConf, + criticality := ignore, + value_ := { e_RABModifyListBearerModConf := rab_modified_items } + }; + idx := idx + 1; + } else if (istemplatekind(rab_modified_items, "*")) { + cnf.protocolIEs[idx] := *; + idx := idx + 1; + } + + if (ispresent(rab_failed_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABFailedToModifyListBearerModConf, + criticality := ignore, + value_ := { e_RABList := rab_failed_items } + }; + idx := idx + 1; + } else if (istemplatekind(rab_failed_items, "*")) { + cnf.protocolIEs[idx] := *; + idx := idx + 1; + } + + if (ispresent(rab_release_items)) { + cnf.protocolIEs[idx] := { + id := S1AP_Constants.id_E_RABToBeReleasedListBearerModConf, + criticality := ignore, + value_ := { e_RABList := rab_release_items } + }; + idx := idx + 1; + } + + /* ignore the remaining IEs */ + cnf.protocolIEs[idx] := *; + + return cnf; +} + +template (value) E_RABModifyListBearerModConf +ts_E_RABModifyListBearerModConf(template (value) E_RABModifyItemBearerModConf it) := { + { + id := S1AP_Constants.id_E_RABModifyItemBearerModConf, + criticality := ignore, + value_ := { e_RABModifyItemBearerModConf := it } + } +} +template (present) E_RABModifyListBearerModConf +tr_E_RABModifyListBearerModConf(template (present) E_RABModifyItemBearerModConf it := ?) := { + { + id := S1AP_Constants.id_E_RABModifyItemBearerModConf, + criticality := ignore, + value_ := { e_RABModifyItemBearerModConf := it } + } +} + +template (value) E_RABModifyItemBearerModConf +ts_E_RABModifyItemBearerModConf(template (value) E_RAB_ID rab_id) := { + e_RAB_ID := rab_id, + iE_Extensions := omit +} +template (present) E_RABModifyItemBearerModConf +tr_E_RABModifyItemBearerModConf(template (present) E_RAB_ID rab_id) := { + e_RAB_ID := rab_id, + iE_Extensions := * +} + }