pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40915?usp=email )
Change subject: NGAP_Templates: Improve InitialContextSetupRequest template ......................................................................
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(-)
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
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