/* S1AP Templates in TTCN-3 * (C) 2019 Harald Welte * All rights reserved. * * Released under the terms of GNU General Public License, Version 2 or * (at your option) any later version. * * SPDX-License-Identifier: GPL-2.0-or-later */ module S1AP_Templates { import from S1AP_IEs all; import from S1AP_CommonDataTypes all; import from S1AP_Constants all; import from S1AP_Containers all; import from S1AP_PDU_Contents all; import from S1AP_PDU_Descriptions all; /********************************************************************************* * non-UE related *********************************************************************************/ /********************************************************************************* * 9.1.8 Management Messages *********************************************************************************/ /* 9.1.8.4 S1 SETUP REQUEST */ template (value) S1AP_PDU ts_S1AP_SetupReq(template (value) Global_ENB_ID p_global_ENB_ID, template (value) SupportedTAs p_supportedTAs, template (value) PagingDRX p_pagingDRXs) := { initiatingMessage := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupRequest := { protocolIEs := { { id := S1AP_Constants.id_Global_ENB_ID, criticality := ignore, value_ := { Global_ENB_ID := p_global_ENB_ID } }, { id := S1AP_Constants.id_SupportedTAs, criticality := reject, value_ := {SupportedTAs := p_supportedTAs} } /* HACK: work around nextepc bug , { id := S1AP_Constants.id_pagingDRX, criticality := ignore, value_ := {PagingDRX := p_pagingDRXs} } */ } } } } } template (present) S1AP_PDU tr_S1AP_SetupReq(template (present) Global_ENB_ID p_global_ENB_ID := ?, template (present) SupportedTAs p_supportedTAs := ?, template (present) PagingDRX p_pagingDRXs := ?) := { initiatingMessage := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupRequest := { protocolIEs := { { id := S1AP_Constants.id_Global_ENB_ID, criticality := ignore, value_ := { Global_ENB_ID := p_global_ENB_ID } }, { id := S1AP_Constants.id_SupportedTAs, criticality := reject, value_ := {SupportedTAs := p_supportedTAs} }, * } } } } } /* 9.1.8.5 S1 SETUP RESPONSE */ template (value) S1AP_PDU ts_S1AP_SetupResp(template (value) ServedGUMMEIs served_gummeis, template (value) RelativeMMECapacity rel_mme_capacity) := { successfulOutcome := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupResponse := { protocolIEs := { { id := S1AP_Constants.id_ServedGUMMEIs, criticality := reject, value_ := { ServedGUMMEIs := served_gummeis } }, { id := S1AP_Constants.id_RelativeMMECapacity, criticality := ignore, value_ := { RelativeMMECapacity := rel_mme_capacity } } } } } } } template (present) S1AP_PDU tr_S1AP_SetupResp(template (present) ServedGUMMEIs served_gummeis := ?, template (present) RelativeMMECapacity rel_mme_capacity := ?) := { successfulOutcome := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupResponse := { protocolIEs := { { id := S1AP_Constants.id_ServedGUMMEIs, criticality := reject, value_ := { ServedGUMMEIs := served_gummeis } }, { id := S1AP_Constants.id_RelativeMMECapacity, criticality := ignore, value_ := { RelativeMMECapacity := rel_mme_capacity } }, * } } } } } /* 9.1.8.6 S1 SETUP FAILURE */ template (value) S1AP_PDU ts_S1AP_SetupFail(template (value) Cause cause) := { unsuccessfulOutcome := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupFailure := { protocolIEs := { { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := { Cause := cause } } } } } } } template (present) S1AP_PDU tr_S1AP_SetupFail(template (present) Cause cause := ?) := { unsuccessfulOutcome := { procedureCode := id_S1Setup, criticality := reject, value_ := { S1SetupFailure := { protocolIEs := { { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := { Cause := cause } }, * } } } } } /* 9.1.8.1 RESET */ template (value) S1AP_PDU ts_S1AP_Reset(template (value) Cause cause, template (value) ResetType reset_type) := { initiatingMessage := { procedureCode := id_Reset, criticality := reject, value_ := { Reset := { protocolIEs := { { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := { Cause := cause } } , { id := S1AP_Constants.id_ResetType, criticality := reject, value_ := { resetType := reset_type } } } } } } } template (present) S1AP_PDU tr_S1AP_Reset(template (present) Cause cause := ?, template (present) ResetType reset_type := ?) := { initiatingMessage := { procedureCode := id_Reset, criticality := reject, value_ := { Reset := { protocolIEs := { { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := { Cause := cause } } , { id := S1AP_Constants.id_ResetType, criticality := reject, value_ := { resetType := reset_type } }, * } } } } } /* 9.1.8.2 RESET ACKNOWLEDGE */ template (value) S1AP_PDU ts_S1AP_ResetAck(template (value) UE_associatedLogicalS1_ConnectionListResAck val) := { successfulOutcome := { procedureCode := id_Reset, criticality := reject, value_ := { ResetAcknowledge := { protocolIEs := { { id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionListResAck, criticality := ignore, value_ := { UE_associatedLogicalS1_ConnectionListResAck := val } } } } } } } template (present) S1AP_PDU tr_S1AP_ResetAck(template (present) UE_associatedLogicalS1_ConnectionListResAck val := ?) := { successfulOutcome := { procedureCode := id_Reset, criticality := reject, value_ := { ResetAcknowledge := { protocolIEs := { { id := S1AP_Constants.id_UE_associatedLogicalS1_ConnectionListResAck, criticality := ignore, value_ := { UE_associatedLogicalS1_ConnectionListResAck := val } }, * } } } } } /********************************************************************************* * 9.1.7 NAS Transport *********************************************************************************/ /* 9.1.7.1 INITIAL UE MESSAGE */ template (value) S1AP_PDU ts_S1AP_InitialUE(template (value) ENB_UE_S1AP_ID p_eNB_value, template (value) NAS_PDU p_nasPdu, template (value) TAI p_tAI, template (value) EUTRAN_CGI p_eUTRAN_CGI, template (value) RRC_Establishment_Cause p_rrcCause) := { initiatingMessage := { procedureCode := id_initialUEMessage, criticality := ignore, value_ := { InitialUEMessage := { protocolIEs := { { id := S1AP_Constants.id_eNB_UE_S1AP_ID, criticality := reject, value_ := {ENB_UE_S1AP_ID := p_eNB_value} }, { id := S1AP_Constants.id_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} }, { id := S1AP_Constants.id_TAI, criticality := ignore, value_ := {TAI := p_tAI} }, { id := S1AP_Constants.id_EUTRAN_CGI, criticality := ignore, value_ := {EUTRAN_CGI := p_eUTRAN_CGI} }, { id := S1AP_Constants.id_RRC_Establishment_Cause, criticality := ignore, value_ := {RRC_Establishment_Cause := p_rrcCause} } } } } } } template (present) S1AP_PDU tr_S1AP_InitialUE(template (present) ENB_UE_S1AP_ID p_eNB_value := ?, template (present) NAS_PDU p_nasPdu := ?, template (present) TAI p_tAI := ?, template (present) EUTRAN_CGI p_eUTRAN_CGI := ?, template (present) RRC_Establishment_Cause p_rrcCause := ?) := { initiatingMessage := { procedureCode := id_initialUEMessage, criticality := ignore, value_ := { InitialUEMessage := { protocolIEs := { { id := S1AP_Constants.id_eNB_UE_S1AP_ID, criticality := reject, value_ := {ENB_UE_S1AP_ID := p_eNB_value} }, { id := S1AP_Constants.id_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} }, { id := S1AP_Constants.id_TAI, criticality := ignore, value_ := {TAI := p_tAI} }, { id := S1AP_Constants.id_EUTRAN_CGI, criticality := ignore, value_ := {EUTRAN_CGI := p_eUTRAN_CGI} }, { id := S1AP_Constants.id_RRC_Establishment_Cause, criticality := ignore, value_ := {RRC_Establishment_Cause := p_rrcCause} }, * } } } } } /* 9.1.7.2 DOWNLINK NAS TRANSPORT */ template (value) S1AP_PDU ts_S1AP_DlNasTransport(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) octetstring p_nasPdu) := { initiatingMessage := { procedureCode := id_downlinkNASTransport, criticality := ignore, value_ := { DownlinkNASTransport := { 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_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} } } } } } } template (present) S1AP_PDU tr_S1AP_DlNasTransport(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) octetstring p_nasPdu := ?) := { initiatingMessage := { procedureCode := id_downlinkNASTransport, criticality := ignore, value_ := { DownlinkNASTransport := { 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_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} }, * } } } } } /* 9.1.7.3 UPNLINK NAS TRANSPORT */ template (value) S1AP_PDU ts_S1AP_UlNasTransport(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) octetstring p_nasPdu, template (value) EUTRAN_CGI p_eUTRAN_CGI, template (value) TAI p_tAI) := { initiatingMessage := { procedureCode := id_uplinkNASTransport, criticality := ignore, value_ := { UplinkNASTransport := { 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_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} }, { id := S1AP_Constants.id_EUTRAN_CGI, criticality := ignore, value_ := {EUTRAN_CGI := p_eUTRAN_CGI} }, { id := S1AP_Constants.id_TAI, criticality := ignore, value_ := {TAI := p_tAI} } } } } } } template (present) S1AP_PDU tr_S1AP_UlNasTransport(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) octetstring p_nasPdu := ?, template (present) EUTRAN_CGI p_eUTRAN_CGI := ?, template (present) TAI p_tAI := ?) := { initiatingMessage := { procedureCode := id_uplinkNASTransport, criticality := ignore, value_ := { UplinkNASTransport := { 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_NAS_PDU, criticality := reject, value_ := {nAS_PDU := p_nasPdu} }, { id := S1AP_Constants.id_EUTRAN_CGI, criticality := ignore, value_ := {EUTRAN_CGI := p_eUTRAN_CGI} }, { id := S1AP_Constants.id_TAI, criticality := ignore, value_ := {TAI := p_tAI} }, * } } } } } /********************************************************************************* * 9.1.4 Context Management *********************************************************************************/ /* 9.1.4.1 INITIAL CONTEXT SETUP REQ */ template (value) S1AP_PDU ts_S1AP_IntialCtxSetupReq(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) UEAggregateMaximumBitrate max_br, template (value) E_RABToBeSetupListCtxtSUReq rab_setup_items, template (value) UESecurityCapabilities ue_sec_par, template (value) SecurityKey sec_key) := { initiatingMessage := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { initialContextSetupRequest := { 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_uEaggregateMaximumBitrate, criticality := reject, value_ := {UEAggregateMaximumBitrate := max_br} }, { id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq, criticality := reject, value_ := {E_RABToBeSetupListCtxtSUReq := rab_setup_items} }, { id := S1AP_Constants.id_UESecurityCapabilities, criticality := reject, value_ := {UESecurityCapabilities := ue_sec_par} }, { id := S1AP_Constants.id_SecurityKey, criticality := reject, value_ := {SecurityKey := sec_key} } } } } } } template (present) S1AP_PDU tr_S1AP_IntialCtxSetupReq(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) UEAggregateMaximumBitrate max_br := ?, template (present) E_RABToBeSetupListCtxtSUReq rab_setup_items := ?, template (present) UESecurityCapabilities ue_sec_par := ?, template (present) SecurityKey sec_key := ?) := { initiatingMessage := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { initialContextSetupRequest := { 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_uEaggregateMaximumBitrate, criticality := reject, value_ := {UEAggregateMaximumBitrate := max_br} }, { id := S1AP_Constants.id_E_RABToBeSetupListCtxtSUReq, criticality := reject, value_ := {E_RABToBeSetupListCtxtSUReq := rab_setup_items} }, { id := S1AP_Constants.id_UESecurityCapabilities, criticality := reject, value_ := {UESecurityCapabilities := ue_sec_par} }, { id := S1AP_Constants.id_SecurityKey, criticality := reject, value_ := {SecurityKey := sec_key} }, * } } } } } /* 9.1.4.3 INITIAL CONTEXT SETUP RESPONSE */ template (value) S1AP_PDU ts_S1AP_InitialCtxSetupResp(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) E_RABSetupListCtxtSURes rab_setup_items, template (value) E_RABList rab_items) := { successfulOutcome := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { InitialContextSetupResponse := { 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_RABSetupListBearerSURes, criticality := ignore, value_ := {E_RABSetupListCtxtSURes := rab_setup_items} }, { id := S1AP_Constants.id_E_RABFailedToSetupListBearerSURes, criticality := ignore, value_ := {E_RABList := rab_items} } } } } } } template (present) S1AP_PDU tr_S1AP_InitialCtxSetupResp(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) E_RABSetupListCtxtSURes rab_setup_items := ?, template (present) E_RABList rab_items := ?) := { successfulOutcome := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { InitialContextSetupResponse := { 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_RABSetupListBearerSURes, criticality := ignore, value_ := {E_RABSetupListCtxtSURes := rab_setup_items} }, { id := S1AP_Constants.id_E_RABFailedToSetupListBearerSURes, criticality := ignore, value_ := {E_RABList := rab_items} } } } } } } /* 9.1.4.4 INITIAL CONTEXT SETUP FAILURE */ template (value) S1AP_PDU ts_S1AP_InitialCtxSetupFail(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) Cause cause) := { unsuccessfulOutcome := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { InitialContextSetupFailure := { 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_Cause, criticality := ignore, value_ := {Cause := cause} } } } } } } template (present) S1AP_PDU tr_S1AP_InitialCtxSetupFail(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) Cause cause := ?) := { unsuccessfulOutcome := { procedureCode := id_InitialContextSetup, criticality := reject, value_ := { InitialContextSetupFailure := { 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_Cause, criticality := ignore, value_ := {Cause := cause} }, * } } } } } /* 9.1.4.5 UE CONTEXT RELEASE REQUEST */ template (value) S1AP_PDU ts_S1AP_UeContextReleaseReq(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id, template (value) Cause cause) := { initiatingMessage := { procedureCode := id_UEContextReleaseRequest, criticality := reject, value_ := { UEContextReleaseRequest := { 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_Cause, criticality := ignore, value_ := {Cause := cause} } } } } } } template (present) S1AP_PDU tr_S1AP_UeContextReleaseReq(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?, template (present) Cause cause := ?) := { initiatingMessage := { procedureCode := id_UEContextReleaseRequest, criticality := reject, value_ := { UEContextReleaseRequest := { 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_Cause, criticality := ignore, value_ := {Cause := cause} }, * } } } } } /* 9.1.4.6 UE CONTEXT RELEASE COMMAND */ template (value) S1AP_PDU ts_S1AP_UeContextReleaseCmd(template (value) UE_S1AP_IDs mme_ids, template (value) Cause cause) := { initiatingMessage := { procedureCode := id_UEContextRelease, criticality := reject, value_ := { UEContextReleaseCommand := { protocolIEs := { { id := S1AP_Constants.id_UE_S1AP_IDs, criticality := ignore, value_ := {UE_S1AP_IDs := mme_ids} }, { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := {Cause := cause} } } } } } } template (present) S1AP_PDU tr_S1AP_UeContextReleaseCmd(template (present) UE_S1AP_IDs ue_ids := ?, template (present) Cause cause := ?) := { initiatingMessage := { procedureCode := id_UEContextRelease, criticality := reject, value_ := { UEContextReleaseCommand := { protocolIEs := { { id := S1AP_Constants.id_UE_S1AP_IDs, criticality := reject, value_ := {UE_S1AP_IDs := ue_ids} }, { id := S1AP_Constants.id_Cause, criticality := ignore, value_ := {Cause := cause} }, * } } } } } /* 9.1.4.7 UE CONTEXT RELEASE COMPLETE */ template (value) S1AP_PDU ts_S1AP_UeContextReleaseCompl(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id) := { successfulOutcome := { procedureCode := id_UEContextRelease, criticality := reject, value_ := { UEContextReleaseComplete := { 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 := ignore, value_ := {ENB_UE_S1AP_ID := enb_id} } } } } } } template (present) S1AP_PDU tr_S1AP_UeContextReleaseCompl(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?) := { successfulOutcome := { procedureCode := id_UEContextRelease, criticality := reject, value_ := { UEContextReleaseComplete := { 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} }, * } } } } } /* 9.1.4.20 CONNECTION ESTABLISHMENT INDICATION */ template (value) S1AP_PDU ts_S1AP_ConnEstInd(template (value) MME_UE_S1AP_ID mme_id, template (value) ENB_UE_S1AP_ID enb_id) := { initiatingMessage := { procedureCode := id_ConnectionEstablishmentIndication, criticality := reject, value_ := { ConnectionEstablishmentIndication := { 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} } } } } } } template (present) S1AP_PDU tr_S1AP_ConnEstInd(template (present) MME_UE_S1AP_ID mme_id := ?, template (present) ENB_UE_S1AP_ID enb_id := ?) := { initiatingMessage := { procedureCode := id_ConnectionEstablishmentIndication, criticality := reject, value_ := { ConnectionEstablishmentIndication := { 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} }, * } } } } } /* all non-UE-related S1AP messages */ template (present) S1AP_PDU tr_S1AP_nonUErelated := (tr_S1AP_SetupReq, tr_S1AP_SetupResp, tr_S1AP_SetupFail, tr_S1AP_Reset, tr_S1AP_ResetAck ); }