pespin submitted this change.

View Change

Approvals: fixeria: Looks good to me, but someone else must approve pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified
NGAP_Templates: Improve InitialContextSetupRequest template

That message has tons of optional fields. Better have 1 big generic
template than dozens of different templates.

Change-Id: Ib87221455ebc9f59ab0810b28a6509cdcecc81c7
---
M 5gc/ConnHdlr.ttcn
M library/ngap/NGAP_Templates.ttcn
2 files changed, 684 insertions(+), 431 deletions(-)

diff --git a/5gc/ConnHdlr.ttcn b/5gc/ConnHdlr.ttcn
index b626cd0..8cc483e 100644
--- a/5gc/ConnHdlr.ttcn
+++ b/5gc/ConnHdlr.ttcn
@@ -331,8 +331,12 @@
private altstep as_ngap_handle_InitialCtxReq_withPDUSessionList() runs on ConnHdlr {
var NGAP_PDU rx_ngap;
var template (present) NGAP_PDU exp_ngap :=
- mw_ngap_initMsg(mw_n2_InitialContextSetupRequest_withPDUSessionList(g_pars.ue_pars.amf_id,
- g_pars.ue_pars.ran_id));
+ mw_ngap_initMsg(f_mw_n2_InitialContextSetupRequest(g_pars.ue_pars.amf_id,
+ g_pars.ue_pars.ran_id,
+ p_uEAggregateMaximumBitRate := ?,
+ p_pDUSessionResourceSetupListCxtReq := ?,
+ p_nextHopNH := ?,
+ p_maskedIMEISV := ?));

[] NGAP.receive(exp_ngap) -> value rx_ngap {
var InitialContextSetupRequest ctx_setup_req := rx_ngap.initiatingMessage.value_.initialContextSetupRequest;
diff --git a/library/ngap/NGAP_Templates.ttcn b/library/ngap/NGAP_Templates.ttcn
index 3b2f953..8748d0f 100644
--- a/library/ngap/NGAP_Templates.ttcn
+++ b/library/ngap/NGAP_Templates.ttcn
@@ -1089,449 +1089,698 @@
/**
* @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST
*/
- template (value) InitiatingMessage m_n2_InitialContextSetupRequest(
- in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
- in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
- in template (value) GUAMI p_gUAMI,
- in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq,
- in template (value) AllowedNSSAI p_allowedNSSAI,
- in template (value) UESecurityCapabilities p_uESecurityCapabilities,
- in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH
- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
-
-
-
-
-
-
-
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_PDUSessionResourceSetupListCxtReq,
- criticality := reject,
- value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
- }
- }
- }
+ function f_m_n2_InitialContextSetupRequest(template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
+ template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
+ template (omit) AMFName p_amfName := omit,
+ template (omit) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate := omit,
+ template (omit) CoreNetworkAssistanceInformationForInactive p_coreNetworkAssistanceInformationForInactive := omit,
+ template (value) GUAMI p_gUAMI,
+ template (omit) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq := omit,
+ template (value) AllowedNSSAI p_allowedNSSAI,
+ template (value) UESecurityCapabilities p_uESecurityCapabilities,
+ template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH,
+ template (omit) TraceActivation p_traceActivation := omit,
+ template (omit) MobilityRestrictionList p_mobilityRestrictionList := omit,
+ template (omit) UERadioCapability p_uERadioCapability := omit,
+ template (omit) IndexToRFSP p_indexToRFSP := PX_Index_to_RAT_Frequency_Selection_Priority,
+ template (omit) MaskedIMEISV p_maskedIMEISV := PX_MaskedIMEISV,
+ template (omit) NAS_PDU p_nAS_PDU := omit,
+ template (omit) EmergencyFallbackIndicator p_emergencyFallbackIndicator := omit,
+ template (omit) RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest := omit,
+ template (omit) RedirectionVoiceFallback p_redirectionVoiceFallback := omit,
+ template (omit) LocationReportingRequestType p_locationReportingRequestType := omit,
+ template (omit) SRVCCOperationPossible p_sRVCCOperationPossible := omit,
+ template (omit) IAB_Authorized p_iAB_Authorized := omit,
+ template (omit) Enhanced_CoverageRestriction p_enhanced_CoverageRestriction := omit,
+ template (omit) Extended_ConnectedTime p_extended_ConnectedTime := PX_EXTENDED_CONNECTED_TIME,
+ template (omit) UE_DifferentiationInfo p_uE_DifferentiationInfo := omit,
+ template (omit) NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate := omit,
+ template (omit) LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate := omit,
+ template (omit) UERadioCapabilityID p_uERadioCapabilityID := omit)
+ return template (value) InitiatingMessage {
+ var template (value) InitiatingMessage pdu := {
+ procedureCode := id_InitialContextSetup,
+ criticality := reject,
+ value_ := {
+ InitialContextSetupRequest := {
+ protocolIEs := {
+ {
+ id := id_AMF_UE_NGAP_ID,
+ criticality := reject,
+ value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
+ },
+ {
+ id := id_RAN_UE_NGAP_ID,
+ criticality := reject,
+ value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
}
- } // End of template m_n2_InitialContextSetupRequest
+ }
+ }
+ }
+ };
+ var integer idx := lengthof(pdu.value_.InitialContextSetupRequest.protocolIEs);

- template (value) InitiatingMessage m_n2_InitialContextSetupRequest_noPDUSessionResourceSetupListCxtReq(
- in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
- in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
- in template (value) GUAMI p_gUAMI,
- in template (value) AllowedNSSAI p_allowedNSSAI,
- in template (value) UESecurityCapabilities p_uESecurityCapabilities,
- in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH
- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_GUAMI,
- criticality := reject,
- value_ := { GUAMI := p_gUAMI }
- },
- {
- id := id_AllowedNSSAI,
- criticality := reject,
- value_ := { AllowedNSSAI := p_allowedNSSAI }
- },
- {
- id := id_UESecurityCapabilities,
- criticality := reject,
- value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
- },
- {
- id := id_SecurityKey,
- criticality := reject,
- value_ := { SecurityKey := p_nextHopNH }
- }
- }
- }
- }
- } // End of template m_n2_InitialContextSetupRequest_noPDUSessionResourceSetupListCxtReq
+ /* Old AMF */
+ if (isvalue(p_amfName)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_AMFName,
+ criticality := reject,
+ value_ := { AMFName := p_amfName }
+ };
+ idx := idx + 1;
+ }

- /**
- * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST
- */
- template (value) InitiatingMessage m_n2_InitialContextSetupRequest_optional_TraceActivation(
- in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
- in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
- in template (value) GUAMI p_gUAMI,
- in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq,
- in template (value) AllowedNSSAI p_allowedNSSAI,
- in template (value) UESecurityCapabilities p_uESecurityCapabilities,
- in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH,
- in template (value) TraceActivation p_traceActivation
- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_GUAMI,
- criticality := reject,
- value_ := { GUAMI := p_gUAMI }
- },
- {
- id := id_PDUSessionResourceSetupListCxtReq,
- criticality := reject,
- value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
- },
- {
- id := id_AllowedNSSAI,
- criticality := reject,
- value_ := { AllowedNSSAI := p_allowedNSSAI }
- },
- {
- id := id_UESecurityCapabilities,
- criticality := reject,
- value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
- },
- {
- id := id_SecurityKey,
- criticality := reject,
- value_ := { SecurityKey := p_nextHopNH }
- },
- {
- id := id_TraceActivation,
- criticality := ignore,
- value_ := { TraceActivation := p_traceActivation }
- }
- }
- }
- }
- } // End of template m_n2_InitialContextSetupRequest_optional_TraceActivation
+ /* UE Aggregate Maximum Bit Rate */
+ if (isvalue(p_uEAggregateMaximumBitRate)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UEAggregateMaximumBitRate,
+ criticality := reject,
+ value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate }
+ };
+ idx := idx + 1;
+ }

- /**
- * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST
- */
- template (value) InitiatingMessage m_n2_InitialContextSetupRequest_optional_MobilityRestriction(
- in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
- in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
- in template (value) GUAMI p_gUAMI,
- in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq,
- in template (value) AllowedNSSAI p_allowedNSSAI,
- in template (value) UESecurityCapabilities p_uESecurityCapabilities,
- in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH,
- in template (value) MobilityRestrictionList p_mobilityRestrictionList
- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_GUAMI,
- criticality := reject,
- value_ := { GUAMI := p_gUAMI }
- },
- {
- id := id_PDUSessionResourceSetupListCxtReq,
- criticality := reject,
- value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
- },
- {
- id := id_AllowedNSSAI,
- criticality := reject,
- value_ := { AllowedNSSAI := p_allowedNSSAI }
- },
- {
- id := id_UESecurityCapabilities,
- criticality := reject,
- value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
- },
- {
- id := id_SecurityKey,
- criticality := reject,
- value_ := { SecurityKey := p_nextHopNH }
- },
- {
- id := id_TraceActivation,
- criticality := ignore,
- value_ := { MobilityRestrictionList := p_mobilityRestrictionList }
- }
- }
- }
- }
- } // End of template m_n2_InitialContextSetupRequest_optional_MobilityRestriction
+ /* Core Network Assistance Information for RRC INACTIVE */
+ if (isvalue(p_coreNetworkAssistanceInformationForInactive)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_CoreNetworkAssistanceInformationForInactive,
+ criticality := ignore,
+ value_ := { CoreNetworkAssistanceInformationForInactive := p_coreNetworkAssistanceInformationForInactive }
+ };
+ idx := idx + 1;
+ }

- /**
- * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST
- */
- template (value) InitiatingMessage m_n2_InitialContextSetupRequest_differentOptionals(
- in template (value) AMF_UE_NGAP_ID p_amfUeNgapID := PX_AMF_UE_NGAP_ID,
- in template (value) RAN_UE_NGAP_ID p_ranUeNgapID := PX_RAN_UE_NGAP_ID,
- in template (value) GUAMI p_gUAMI,
- in template (value) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq,
- in template (value) AllowedNSSAI p_allowedNSSAI,
- in template (value) UESecurityCapabilities p_uESecurityCapabilities,
- in template (value) SecurityKey p_nextHopNH := PX_NEXT_HOP_NH,
- in template (value) UERadioCapability p_uERadioCapability,
- in template (value) IndexToRFSP p_indexToRFSP := PX_Index_to_RAT_Frequency_Selection_Priority,
- in template (value) MaskedIMEISV p_maskedIMEISV := PX_MaskedIMEISV,
- in template (value) NAS_PDU p_nasPdu,
- in template (value) EmergencyFallbackIndicator p_emergencyFallbackIndicator,
- in template (value) RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest,
- in template (value) RedirectionVoiceFallback p_redirectionVoiceFallback,
- in template (value) LocationReportingRequestType p_locationReportingRequestType,
- in template (value) SRVCCOperationPossible p_sRVCCOperationPossible,
- in template (value) IAB_Authorized p_iAB_Authorized,
- in template (value) Enhanced_CoverageRestriction p_enhanced_CoverageRestriction,
- in template (value) Extended_ConnectedTime p_extended_ConnectedTime := PX_EXTENDED_CONNECTED_TIME,
- in template (value) UE_DifferentiationInfo p_uE_DifferentiationInfo,
- in template (value) NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate,
- in template (value) LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate,
- in template (value) UERadioCapabilityID p_uERadioCapabilityID
+ /* GUAMI */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_GUAMI,
+ criticality := reject,
+ value_ := { GUAMI := p_gUAMI }
+ };
+ idx := idx + 1;

- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_GUAMI,
- criticality := reject,
- value_ := { GUAMI := p_gUAMI }
- },
- {
- id := id_PDUSessionResourceSetupListCxtReq,
- criticality := reject,
- value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
- },
- {
- id := id_AllowedNSSAI,
- criticality := reject,
- value_ := { AllowedNSSAI := p_allowedNSSAI }
- },
- {
- id := id_UESecurityCapabilities,
- criticality := reject,
- value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
- },
- {
- id := id_SecurityKey,
- criticality := reject,
- value_ := { SecurityKey := p_nextHopNH }
- },
- {
- id := id_UERadioCapability,
- criticality := ignore,
- value_ := { UERadioCapability := p_uERadioCapability }
- },
- {
- id := id_IndexToRFSP,
- criticality := ignore,
- value_ := { IndexToRFSP := p_indexToRFSP }
- },
- {
- id := id_MaskedIMEISV,
- criticality := ignore,
- value_ := { MaskedIMEISV := p_maskedIMEISV }
- },
- {
- id := id_NAS_PDU,
- criticality := ignore,
- value_ := { NAS_PDU := p_nasPdu }
- },
- {
- id := id_EmergencyFallbackIndicator,
- criticality := reject,
- value_ := { EmergencyFallbackIndicator := p_emergencyFallbackIndicator}
- },
- {
- id := id_RRCInactiveTransitionReportRequest,
- criticality := ignore,
- value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest}
- },
- {
- id := id_RedirectionVoiceFallback,
- criticality := ignore,
- value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback }
- } ,
- {
- id := id_LocationReportingRequestType,
- criticality := ignore,
- value_ := { LocationReportingRequestType := p_locationReportingRequestType }
- },
- {
- id := id_SRVCCOperationPossible,
- criticality := ignore,
- value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible }
- },
- {
- id := id_IAB_Authorized,
- criticality := ignore,
- value_ := { IAB_Authorized := p_iAB_Authorized }
- },
- {
- id := id_Enhanced_CoverageRestriction,
- criticality := ignore,
- value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction }
- },
- {
- id := id_Extended_ConnectedTime,
- criticality := ignore,
- value_ := { Extended_ConnectedTime := p_extended_ConnectedTime }
- },
- {
- id := id_UE_DifferentiationInfo,
- criticality := ignore,
- value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo }
- },
- {
- id := id_NRUESidelinkAggregateMaximumBitrate,
- criticality := ignore,
- value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate }
- },
- {
- id := id_LTEUESidelinkAggregateMaximumBitrate,
- criticality := ignore,
- value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate }
- },
- {
- id := id_UERadioCapabilityID,
- criticality := reject,
- value_ := { UERadioCapabilityID := p_uERadioCapabilityID }
- }
+ /* PDU Session Resource Setup Request List */
+ if (isvalue(p_pDUSessionResourceSetupListCxtReq)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_PDUSessionResourceSetupListCxtReq,
+ criticality := reject,
+ value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
+ };
+ idx := idx + 1;
+ }
+
+ /* Allowed NSSAI */
+ if (isvalue(p_allowedNSSAI)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_AllowedNSSAI,
+ criticality := reject,
+ value_ := { AllowedNSSAI := p_allowedNSSAI }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Security Capabilities */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UESecurityCapabilities,
+ criticality := reject,
+ value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
+ };
+ idx := idx + 1;
+
+ /* Security Key */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_SecurityKey,
+ criticality := reject,
+ value_ := { SecurityKey := p_nextHopNH }
+ };
+ idx := idx + 1;
+
+ /* Trace Activation */
+ if (isvalue(p_traceActivation)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_TraceActivation,
+ criticality := ignore,
+ value_ := { TraceActivation := p_traceActivation }
+ };
+ idx := idx + 1;
+ }
+
+ /* Mobility Restriction List */
+ if (isvalue(p_mobilityRestrictionList)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_MobilityRestrictionList,
+ criticality := ignore,
+ value_ := { MobilityRestrictionList := p_mobilityRestrictionList }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Radio Capability */
+ if (isvalue(p_uERadioCapability)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UERadioCapability,
+ criticality := ignore,
+ value_ := { UERadioCapability := p_uERadioCapability }
+ };
+ idx := idx + 1;
+ }
+
+ /* Index to RAT/Frequency Selection Priority */
+ if (isvalue(p_indexToRFSP)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_IndexToRFSP,
+ criticality := ignore,
+ value_ := { IndexToRFSP := p_indexToRFSP }
+ };
+ idx := idx + 1;
+ }
+
+ /* Masked IMEISV */
+ if (isvalue(p_maskedIMEISV)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_MaskedIMEISV,
+ criticality := ignore,
+ value_ := { MaskedIMEISV := p_maskedIMEISV }
+ };
+ idx := idx + 1;
+ }
+
+ /* NAS-PDU */
+ if (isvalue(p_nAS_PDU)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := { nAS_PDU := p_nAS_PDU }
+ };
+ idx := idx + 1;
+ }
+
+ /* Emergency Fallback Indicator*/
+ if (isvalue(p_emergencyFallbackIndicator)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_EmergencyFallbackIndicator,
+ criticality := reject,
+ value_ := { EmergencyFallbackIndicator := p_emergencyFallbackIndicator}
+ };
+ idx := idx + 1;
+ }
+
+ /* RRC Inactive Transition Report Request */
+ if (isvalue(p_rRCInactiveTransitionReportRequest)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_RRCInactiveTransitionReportRequest,
+ criticality := ignore,
+ value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest}
+ };
+ idx := idx + 1;
+ }
+
+ /* TODO: UE Radio Capability for Paging */
+
+ /* Redirection for Voice EPS Fallback */
+ if (isvalue(p_redirectionVoiceFallback)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_RedirectionVoiceFallback,
+ criticality := ignore,
+ value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback }
+ };
+ idx := idx + 1;
+ }
+
+ /* Location Reporting Request Type */
+ if (isvalue(p_locationReportingRequestType)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_LocationReportingRequestType,
+ criticality := ignore,
+ value_ := { LocationReportingRequestType := p_locationReportingRequestType }
+ };
+ idx := idx + 1;
+ }
+
+ /* SRVCC Operation Possible */
+ if (isvalue(p_sRVCCOperationPossible)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_SRVCCOperationPossible,
+ criticality := ignore,
+ value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible }
+ };
+ idx := idx + 1;
+ }
+
+ /* IAB Authorized */
+ if (isvalue(p_iAB_Authorized)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_IAB_Authorized,
+ criticality := ignore,
+ value_ := { IAB_Authorized := p_iAB_Authorized }
+ };
+ idx := idx + 1;
+ }


- }
- }
- }
- } // End of template m_n2_InitialContextSetupRequest_differentOptionals
+ /* Enhanced Coverage Restriction */
+ if (isvalue(p_enhanced_CoverageRestriction)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_Enhanced_CoverageRestriction,
+ criticality := ignore,
+ value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction }
+ };
+ idx := idx + 1;
+ }
+
+ /* Extended Connected Time */
+ if (isvalue(p_extended_ConnectedTime)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_Extended_ConnectedTime,
+ criticality := ignore,
+ value_ := { Extended_ConnectedTime := p_extended_ConnectedTime }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Differentiation Information */
+ if (isvalue(p_uE_DifferentiationInfo)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UE_DifferentiationInfo,
+ criticality := ignore,
+ value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo }
+ };
+ idx := idx + 1;
+ }
+
+ /* TODO: NR V2X Services Authorized */
+ /* TODO: LTE V2X Services Authorized */
+
+ /* NR UE Sidelink Aggregate Maximum Bit Rate */
+ if (isvalue(p_nRUESidelinkAggregateMaximumBitrate)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_NRUESidelinkAggregateMaximumBitrate,
+ criticality := ignore,
+ value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate }
+ };
+ idx := idx + 1;
+ }
+
+ /* LTE UE Sidelink Aggregate Maximum Bit Rate */
+ if (isvalue(p_lTEUESidelinkAggregateMaximumBitrate)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_LTEUESidelinkAggregateMaximumBitrate,
+ criticality := ignore,
+ value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate }
+ };
+ idx := idx + 1;
+ }
+
+ /* ... TODO: lots other optional IEs ... */
+
+ /* UE Radio Capability ID */
+ if (isvalue(p_uERadioCapabilityID)) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UERadioCapabilityID,
+ criticality := reject,
+ value_ := { UERadioCapabilityID := p_uERadioCapabilityID }
+ };
+ idx := idx + 1;
+ }
+
+ /* ... TODO: lots other optional IEs ... */
+
+ return pdu;
+ } // End of f_m_n2_InitialContextSetupRequest
+

} // End of group Send

group Receive {

- /**
- * @see ETSI TS 138 413 V16.12.0 (2023-05) Clause 9.2.2.1 INITIAL CONTEXT SETUP REQUEST
- */
- template (present) InitiatingMessage mw_n2_InitialContextSetupRequest_withPDUSessionList(
- template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
- template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
- template (present) UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate := ?,
- template (present) GUAMI p_gUAMI := ?,
- template (present) PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq := ?,
- template (present) AllowedNSSAI p_allowedNSSAI := ?,
- template (present) UESecurityCapabilities p_uESecurityCapabilities := ?,
- template (present) SecurityKey p_nextHopNH := ?,
- template (present) MaskedIMEISV p_maskedIMEISV := ?
- ) := {
- procedureCode := id_InitialContextSetup,
- criticality := reject,
- value_ := {
- InitialContextSetupRequest := {
- protocolIEs := {
- {
- id := id_AMF_UE_NGAP_ID,
- criticality := reject,
- value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
- },
- {
- id := id_RAN_UE_NGAP_ID,
- criticality := reject,
- value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
- },
- {
- id := id_UEAggregateMaximumBitRate,
- criticality := reject,
- value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate }
- },
- {
- id := id_GUAMI,
- criticality := reject,
- value_ := { GUAMI := p_gUAMI }
- },
- {
- id := id_PDUSessionResourceSetupListCxtReq,
- criticality := reject,
- value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
- },
- {
- id := id_AllowedNSSAI,
- criticality := reject,
- value_ := { AllowedNSSAI := p_allowedNSSAI }
- },
- {
- id := id_UESecurityCapabilities,
- criticality := reject,
- value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
- },
- {
- id := id_SecurityKey,
- criticality := reject,
- value_ := { SecurityKey := p_nextHopNH }
- },
- { /* Optional: */
- id := id_MaskedIMEISV,
- criticality := ignore,
- value_ := { maskedIMEISV := p_maskedIMEISV }
- }
- }
- }
+ function f_mw_n2_InitialContextSetupRequest(template (present) AMF_UE_NGAP_ID p_amfUeNgapID := ?,
+ template (present) RAN_UE_NGAP_ID p_ranUeNgapID := ?,
+ template AMFName p_amfName := omit,
+ template UEAggregateMaximumBitRate p_uEAggregateMaximumBitRate := omit,
+ template CoreNetworkAssistanceInformationForInactive p_coreNetworkAssistanceInformationForInactive := omit,
+ template (present) GUAMI p_gUAMI := ?,
+ template PDUSessionResourceSetupListCxtReq p_pDUSessionResourceSetupListCxtReq := omit,
+ template (present) AllowedNSSAI p_allowedNSSAI := ?,
+ template (present) UESecurityCapabilities p_uESecurityCapabilities := ?,
+ template (present) SecurityKey p_nextHopNH := ?,
+ template TraceActivation p_traceActivation := omit,
+ template MobilityRestrictionList p_mobilityRestrictionList := omit,
+ template UERadioCapability p_uERadioCapability := omit,
+ template IndexToRFSP p_indexToRFSP := omit,
+ template MaskedIMEISV p_maskedIMEISV := omit,
+ template NAS_PDU p_nAS_PDU := omit,
+ template EmergencyFallbackIndicator p_emergencyFallbackIndicator := omit,
+ template RRCInactiveTransitionReportRequest p_rRCInactiveTransitionReportRequest := omit,
+ template RedirectionVoiceFallback p_redirectionVoiceFallback := omit,
+ template LocationReportingRequestType p_locationReportingRequestType := omit,
+ template SRVCCOperationPossible p_sRVCCOperationPossible := omit,
+ template IAB_Authorized p_iAB_Authorized := omit,
+ template Enhanced_CoverageRestriction p_enhanced_CoverageRestriction := omit,
+ template Extended_ConnectedTime p_extended_ConnectedTime := omit,
+ template UE_DifferentiationInfo p_uE_DifferentiationInfo := omit,
+ template NRUESidelinkAggregateMaximumBitrate p_nRUESidelinkAggregateMaximumBitrate := omit,
+ template LTEUESidelinkAggregateMaximumBitrate p_lTEUESidelinkAggregateMaximumBitrate := omit,
+ template UERadioCapabilityID p_uERadioCapabilityID := omit)
+ return template (present) InitiatingMessage {
+ var template (present) InitiatingMessage pdu := {
+ procedureCode := id_InitialContextSetup,
+ criticality := reject,
+ value_ := {
+ InitialContextSetupRequest := {
+ protocolIEs := {
+ {
+ id := id_AMF_UE_NGAP_ID,
+ criticality := reject,
+ value_ := { AMF_UE_NGAP_ID := p_amfUeNgapID }
+ },
+ {
+ id := id_RAN_UE_NGAP_ID,
+ criticality := reject,
+ value_ := { RAN_UE_NGAP_ID := p_ranUeNgapID }
}
- } // End of template mw_n2_InitialContextSetupRequest
+ }
+ }
+ }
+ };
+ var integer idx := lengthof(pdu.value_.InitialContextSetupRequest.protocolIEs);
+
+ /* Old AMF */
+ if (not istemplatekind(p_amfName, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_AMFName,
+ criticality := reject,
+ value_ := { AMFName := p_amfName }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Aggregate Maximum Bit Rate */
+ if (not istemplatekind(p_uEAggregateMaximumBitRate, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UEAggregateMaximumBitRate,
+ criticality := reject,
+ value_ := { UEAggregateMaximumBitRate := p_uEAggregateMaximumBitRate }
+ };
+ idx := idx + 1;
+ }
+
+ /* Core Network Assistance Information for RRC INACTIVE */
+ if (not istemplatekind(p_coreNetworkAssistanceInformationForInactive, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_CoreNetworkAssistanceInformationForInactive,
+ criticality := ignore,
+ value_ := { CoreNetworkAssistanceInformationForInactive := p_coreNetworkAssistanceInformationForInactive }
+ };
+ idx := idx + 1;
+ }
+
+ /* GUAMI */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_GUAMI,
+ criticality := reject,
+ value_ := { GUAMI := p_gUAMI }
+ };
+ idx := idx + 1;
+
+ /* PDU Session Resource Setup Request List */
+ if (not istemplatekind(p_pDUSessionResourceSetupListCxtReq, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_PDUSessionResourceSetupListCxtReq,
+ criticality := reject,
+ value_ := { PDUSessionResourceSetupListCxtReq := p_pDUSessionResourceSetupListCxtReq }
+ };
+ idx := idx + 1;
+ }
+
+ /* Allowed NSSAI */
+ if (not istemplatekind(p_allowedNSSAI, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_AllowedNSSAI,
+ criticality := reject,
+ value_ := { AllowedNSSAI := p_allowedNSSAI }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Security Capabilities */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UESecurityCapabilities,
+ criticality := reject,
+ value_ := { UESecurityCapabilities := p_uESecurityCapabilities }
+ };
+ idx := idx + 1;
+
+ /* Security Key */
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_SecurityKey,
+ criticality := reject,
+ value_ := { SecurityKey := p_nextHopNH }
+ };
+ idx := idx + 1;
+
+ /* Trace Activation */
+ if (not istemplatekind(p_traceActivation, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_TraceActivation,
+ criticality := ignore,
+ value_ := { TraceActivation := p_traceActivation }
+ };
+ idx := idx + 1;
+ }
+
+ /* Mobility Restriction List */
+ if (not istemplatekind(p_mobilityRestrictionList, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_MobilityRestrictionList,
+ criticality := ignore,
+ value_ := { MobilityRestrictionList := p_mobilityRestrictionList }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Radio Capability */
+ if (not istemplatekind(p_uERadioCapability, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UERadioCapability,
+ criticality := ignore,
+ value_ := { UERadioCapability := p_uERadioCapability }
+ };
+ idx := idx + 1;
+ }
+
+ /* Index to RAT/Frequency Selection Priority */
+ if (not istemplatekind(p_indexToRFSP, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_IndexToRFSP,
+ criticality := ignore,
+ value_ := { IndexToRFSP := p_indexToRFSP }
+ };
+ idx := idx + 1;
+ }
+
+ /* Masked IMEISV */
+ if (not istemplatekind(p_maskedIMEISV, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_MaskedIMEISV,
+ criticality := ignore,
+ value_ := { MaskedIMEISV := p_maskedIMEISV }
+ };
+ idx := idx + 1;
+ }
+
+ /* NAS-PDU */
+ if (not istemplatekind(p_nAS_PDU, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_NAS_PDU,
+ criticality := ignore,
+ value_ := { nAS_PDU := p_nAS_PDU }
+ };
+ idx := idx + 1;
+ }
+
+ /* Emergency Fallback Indicator*/
+ if (not istemplatekind(p_emergencyFallbackIndicator, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_EmergencyFallbackIndicator,
+ criticality := reject,
+ value_ := { EmergencyFallbackIndicator := p_emergencyFallbackIndicator}
+ };
+ idx := idx + 1;
+ }
+
+ /* RRC Inactive Transition Report Request */
+ if (not istemplatekind(p_rRCInactiveTransitionReportRequest, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_RRCInactiveTransitionReportRequest,
+ criticality := ignore,
+ value_ := { RRCInactiveTransitionReportRequest := p_rRCInactiveTransitionReportRequest}
+ };
+ idx := idx + 1;
+ }
+
+ /* TODO: UE Radio Capability for Paging */
+
+ /* Redirection for Voice EPS Fallback */
+ if (not istemplatekind(p_redirectionVoiceFallback, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_RedirectionVoiceFallback,
+ criticality := ignore,
+ value_ := { RedirectionVoiceFallback := p_redirectionVoiceFallback }
+ };
+ idx := idx + 1;
+ }
+
+ /* Location Reporting Request Type */
+ if (not istemplatekind(p_locationReportingRequestType, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_LocationReportingRequestType,
+ criticality := ignore,
+ value_ := { LocationReportingRequestType := p_locationReportingRequestType }
+ };
+ idx := idx + 1;
+ }
+
+ /* SRVCC Operation Possible */
+ if (not istemplatekind(p_sRVCCOperationPossible, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_SRVCCOperationPossible,
+ criticality := ignore,
+ value_ := { SRVCCOperationPossible := p_sRVCCOperationPossible }
+ };
+ idx := idx + 1;
+ }
+
+ /* IAB Authorized */
+ if (not istemplatekind(p_iAB_Authorized, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_IAB_Authorized,
+ criticality := ignore,
+ value_ := { IAB_Authorized := p_iAB_Authorized }
+ };
+ idx := idx + 1;
+ }
+
+
+ /* Enhanced Coverage Restriction */
+ if (not istemplatekind(p_enhanced_CoverageRestriction, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_Enhanced_CoverageRestriction,
+ criticality := ignore,
+ value_ := { Enhanced_CoverageRestriction := p_enhanced_CoverageRestriction }
+ };
+ idx := idx + 1;
+ }
+
+ /* Extended Connected Time */
+ if (not istemplatekind(p_extended_ConnectedTime, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_Extended_ConnectedTime,
+ criticality := ignore,
+ value_ := { Extended_ConnectedTime := p_extended_ConnectedTime }
+ };
+ idx := idx + 1;
+ }
+
+ /* UE Differentiation Information */
+ if (not istemplatekind(p_uE_DifferentiationInfo, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UE_DifferentiationInfo,
+ criticality := ignore,
+ value_ := { UE_DifferentiationInfo := p_uE_DifferentiationInfo }
+ };
+ idx := idx + 1;
+ }
+
+ /* TODO: NR V2X Services Authorized */
+ /* TODO: LTE V2X Services Authorized */
+
+ /* NR UE Sidelink Aggregate Maximum Bit Rate */
+ if (not istemplatekind(p_nRUESidelinkAggregateMaximumBitrate, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_NRUESidelinkAggregateMaximumBitrate,
+ criticality := ignore,
+ value_ := { NRUESidelinkAggregateMaximumBitrate := p_nRUESidelinkAggregateMaximumBitrate }
+ };
+ idx := idx + 1;
+ }
+
+ /* LTE UE Sidelink Aggregate Maximum Bit Rate */
+ if (not istemplatekind(p_lTEUESidelinkAggregateMaximumBitrate, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_LTEUESidelinkAggregateMaximumBitrate,
+ criticality := ignore,
+ value_ := { LTEUESidelinkAggregateMaximumBitrate := p_lTEUESidelinkAggregateMaximumBitrate }
+ };
+ idx := idx + 1;
+ }
+
+ /* ... TODO: lots other optional IEs ... */
+
+ /* UE Radio Capability ID */
+ if (not istemplatekind(p_uERadioCapabilityID, "omit")) {
+ pdu.value_.InitialContextSetupRequest.protocolIEs[idx] :=
+ {
+ id := id_UERadioCapabilityID,
+ criticality := reject,
+ value_ := { UERadioCapabilityID := p_uERadioCapabilityID }
+ };
+ idx := idx + 1;
+ }
+
+ /* ... TODO: lots other optional IEs ... */
+
+ return pdu;
+ } // End of f_mw_n2_InitialContextSetupRequest

} // End of group Receive


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

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