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
--
To view, visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40915?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
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(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>