- Prefix-ed Informations Elements for S1AP to avoid types redefinitions with RRC
EPC/eNB builds OK git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4373 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -12,16 +12,16 @@ DEFINITIONS AUTOMATIC TAGS ::=
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
Criticality ::= ENUMERATED { reject, ignore, notify }
|
S1ap-Criticality ::= ENUMERATED { reject, ignore, notify }
|
||||||
|
|
||||||
Presence ::= ENUMERATED { optional, conditional, mandatory }
|
S1ap-Presence ::= ENUMERATED { optional, conditional, mandatory }
|
||||||
|
|
||||||
PrivateIE-ID ::= CHOICE {
|
S1ap-PrivateIE-ID ::= CHOICE {
|
||||||
local INTEGER (0..65535),
|
local INTEGER (0..65535),
|
||||||
global OBJECT IDENTIFIER
|
global OBJECT IDENTIFIER
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcedureCode ::= INTEGER {
|
S1ap-ProcedureCode ::= INTEGER {
|
||||||
id-HandoverPreparation(0),
|
id-HandoverPreparation(0),
|
||||||
id-HandoverResourceAllocation(1),
|
id-HandoverResourceAllocation(1),
|
||||||
id-HandoverNotification(2),
|
id-HandoverNotification(2),
|
||||||
@@ -72,9 +72,9 @@ ProcedureCode ::= INTEGER {
|
|||||||
id-uplinkNonUEAssociatedLPPaTransport(47)
|
id-uplinkNonUEAssociatedLPPaTransport(47)
|
||||||
} (0..255)
|
} (0..255)
|
||||||
|
|
||||||
ProtocolExtensionID ::= INTEGER (0..65535)
|
S1ap-ProtocolExtensionID ::= INTEGER (0..65535)
|
||||||
|
|
||||||
ProtocolIE-ID ::= INTEGER {
|
S1ap-ProtocolIE-ID ::= INTEGER {
|
||||||
id-MME-UE-S1AP-ID (0),
|
id-MME-UE-S1AP-ID (0),
|
||||||
id-HandoverType (1),
|
id-HandoverType (1),
|
||||||
id-Cause (2),
|
id-Cause (2),
|
||||||
@@ -227,6 +227,6 @@ ProtocolIE-ID ::= INTEGER {
|
|||||||
id-PrivacyIndicator (166)
|
id-PrivacyIndicator (166)
|
||||||
} (0..65535)
|
} (0..65535)
|
||||||
|
|
||||||
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
|
S1ap-TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome }
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ BEGIN
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
IMPORTS
|
IMPORTS
|
||||||
ProcedureCode,
|
S1ap-ProcedureCode,
|
||||||
ProtocolIE-ID
|
S1ap-ProtocolIE-ID
|
||||||
|
|
||||||
FROM S1AP-CommonDataTypes;
|
FROM S1AP-CommonDataTypes;
|
||||||
|
|
||||||
@@ -31,54 +31,54 @@ FROM S1AP-CommonDataTypes;
|
|||||||
--
|
--
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
id-HandoverPreparation ProcedureCode ::= 0
|
id-HandoverPreparation S1ap-ProcedureCode ::= 0
|
||||||
id-HandoverResourceAllocation ProcedureCode ::= 1
|
id-HandoverResourceAllocation S1ap-ProcedureCode ::= 1
|
||||||
id-HandoverNotification ProcedureCode ::= 2
|
id-HandoverNotification S1ap-ProcedureCode ::= 2
|
||||||
id-PathSwitchRequest ProcedureCode ::= 3
|
id-PathSwitchRequest S1ap-ProcedureCode ::= 3
|
||||||
id-HandoverCancel ProcedureCode ::= 4
|
id-HandoverCancel S1ap-ProcedureCode ::= 4
|
||||||
id-E-RABSetup ProcedureCode ::= 5
|
id-E-RABSetup S1ap-ProcedureCode ::= 5
|
||||||
id-E-RABModify ProcedureCode ::= 6
|
id-E-RABModify S1ap-ProcedureCode ::= 6
|
||||||
id-E-RABRelease ProcedureCode ::= 7
|
id-E-RABRelease S1ap-ProcedureCode ::= 7
|
||||||
id-E-RABReleaseIndication ProcedureCode ::= 8
|
id-E-RABReleaseIndication S1ap-ProcedureCode ::= 8
|
||||||
id-InitialContextSetup ProcedureCode ::= 9
|
id-InitialContextSetup S1ap-ProcedureCode ::= 9
|
||||||
id-Paging ProcedureCode ::= 10
|
id-Paging S1ap-ProcedureCode ::= 10
|
||||||
id-downlinkNASTransport ProcedureCode ::= 11
|
id-downlinkNASTransport S1ap-ProcedureCode ::= 11
|
||||||
id-initialUEMessage ProcedureCode ::= 12
|
id-initialUEMessage S1ap-ProcedureCode ::= 12
|
||||||
id-uplinkNASTransport ProcedureCode ::= 13
|
id-uplinkNASTransport S1ap-ProcedureCode ::= 13
|
||||||
id-Reset ProcedureCode::= 14
|
id-Reset S1ap-ProcedureCode::= 14
|
||||||
id-ErrorIndication ProcedureCode ::= 15
|
id-ErrorIndication S1ap-ProcedureCode ::= 15
|
||||||
id-NASNonDeliveryIndication ProcedureCode ::= 16
|
id-NASNonDeliveryIndication S1ap-ProcedureCode ::= 16
|
||||||
id-S1Setup ProcedureCode ::= 17
|
id-S1Setup S1ap-ProcedureCode ::= 17
|
||||||
id-UEContextReleaseRequest ProcedureCode ::= 18
|
id-UEContextReleaseRequest S1ap-ProcedureCode ::= 18
|
||||||
id-DownlinkS1cdma2000tunneling ProcedureCode ::= 19
|
id-DownlinkS1cdma2000tunneling S1ap-ProcedureCode ::= 19
|
||||||
id-UplinkS1cdma2000tunneling ProcedureCode ::= 20
|
id-UplinkS1cdma2000tunneling S1ap-ProcedureCode ::= 20
|
||||||
id-UEContextModification ProcedureCode ::= 21
|
id-UEContextModification S1ap-ProcedureCode ::= 21
|
||||||
id-UECapabilityInfoIndication ProcedureCode ::= 22
|
id-UECapabilityInfoIndication S1ap-ProcedureCode ::= 22
|
||||||
id-UEContextRelease ProcedureCode ::= 23
|
id-UEContextRelease S1ap-ProcedureCode ::= 23
|
||||||
id-eNBStatusTransfer ProcedureCode ::= 24
|
id-eNBStatusTransfer S1ap-ProcedureCode ::= 24
|
||||||
id-MMEStatusTransfer ProcedureCode ::= 25
|
id-MMEStatusTransfer S1ap-ProcedureCode ::= 25
|
||||||
id-DeactivateTrace ProcedureCode ::= 26
|
id-DeactivateTrace S1ap-ProcedureCode ::= 26
|
||||||
id-TraceStart ProcedureCode ::= 27
|
id-TraceStart S1ap-ProcedureCode ::= 27
|
||||||
id-TraceFailureIndication ProcedureCode ::= 28
|
id-TraceFailureIndication S1ap-ProcedureCode ::= 28
|
||||||
id-ENBConfigurationUpdate ProcedureCode ::= 29
|
id-ENBConfigurationUpdate S1ap-ProcedureCode ::= 29
|
||||||
id-MMEConfigurationUpdate ProcedureCode ::= 30
|
id-MMEConfigurationUpdate S1ap-ProcedureCode ::= 30
|
||||||
id-LocationReportingControl ProcedureCode ::= 31
|
id-LocationReportingControl S1ap-ProcedureCode ::= 31
|
||||||
id-LocationReportingFailureIndication ProcedureCode ::= 32
|
id-LocationReportingFailureIndication S1ap-ProcedureCode ::= 32
|
||||||
id-LocationReport ProcedureCode ::= 33
|
id-LocationReport S1ap-ProcedureCode ::= 33
|
||||||
id-OverloadStart ProcedureCode ::= 34
|
id-OverloadStart S1ap-ProcedureCode ::= 34
|
||||||
id-OverloadStop ProcedureCode ::= 35
|
id-OverloadStop S1ap-ProcedureCode ::= 35
|
||||||
id-WriteReplaceWarning ProcedureCode ::= 36
|
id-WriteReplaceWarning S1ap-ProcedureCode ::= 36
|
||||||
id-eNBDirectInformationTransfer ProcedureCode ::= 37
|
id-eNBDirectInformationTransfer S1ap-ProcedureCode ::= 37
|
||||||
id-MMEDirectInformationTransfer ProcedureCode ::= 38
|
id-MMEDirectInformationTransfer S1ap-ProcedureCode ::= 38
|
||||||
id-PrivateMessage ProcedureCode ::= 39
|
id-PrivateMessage S1ap-ProcedureCode ::= 39
|
||||||
id-eNBConfigurationTransfer ProcedureCode ::= 40
|
id-eNBConfigurationTransfer S1ap-ProcedureCode ::= 40
|
||||||
id-MMEConfigurationTransfer ProcedureCode ::= 41
|
id-MMEConfigurationTransfer S1ap-ProcedureCode ::= 41
|
||||||
id-CellTrafficTrace ProcedureCode ::= 42
|
id-CellTrafficTrace S1ap-ProcedureCode ::= 42
|
||||||
id-Kill ProcedureCode ::= 43
|
id-Kill S1ap-ProcedureCode ::= 43
|
||||||
id-downlinkUEAssociatedLPPaTransport ProcedureCode ::= 44
|
id-downlinkUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 44
|
||||||
id-uplinkUEAssociatedLPPaTransport ProcedureCode ::= 45
|
id-uplinkUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 45
|
||||||
id-downlinkNonUEAssociatedLPPaTransport ProcedureCode ::= 46
|
id-downlinkNonUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 46
|
||||||
id-uplinkNonUEAssociatedLPPaTransport ProcedureCode ::= 47
|
id-uplinkNonUEAssociatedLPPaTransport S1ap-ProcedureCode ::= 47
|
||||||
|
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
--
|
--
|
||||||
@@ -86,41 +86,41 @@ id-uplinkNonUEAssociatedLPPaTransport ProcedureCode ::= 47
|
|||||||
--
|
--
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
maxPrivateIEs INTEGER ::= 65535
|
s1ap-maxPrivateIEs INTEGER ::= 65535
|
||||||
maxProtocolExtensions INTEGER ::= 65535
|
s1ap-maxProtocolExtensions INTEGER ::= 65535
|
||||||
maxProtocolIEs INTEGER ::= 65535
|
s1ap-maxProtocolIEs INTEGER ::= 65535
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
--
|
--
|
||||||
-- Lists
|
-- Lists
|
||||||
--
|
--
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
maxNrOfCSGs INTEGER ::= 256
|
s1ap-maxNrOfCSGs INTEGER ::= 256
|
||||||
maxNrOfE-RABs INTEGER ::= 256
|
s1ap-maxNrOfE-RABs INTEGER ::= 256
|
||||||
maxnoofTAIs INTEGER ::= 256
|
s1ap-maxnoofTAIs INTEGER ::= 256
|
||||||
maxnoofTACs INTEGER ::= 256
|
s1ap-maxnoofTACs INTEGER ::= 256
|
||||||
maxNrOfErrors INTEGER ::= 256
|
s1ap-maxNrOfErrors INTEGER ::= 256
|
||||||
maxnoofBPLMNs INTEGER ::= 6
|
s1ap-maxnoofBPLMNs INTEGER ::= 6
|
||||||
maxnoofPLMNsPerMME INTEGER ::= 32
|
s1ap-maxnoofPLMNsPerMME INTEGER ::= 32
|
||||||
maxnoofEPLMNs INTEGER ::= 15
|
s1ap-maxnoofEPLMNs INTEGER ::= 15
|
||||||
maxnoofEPLMNsPlusOne INTEGER ::= 16
|
s1ap-maxnoofEPLMNsPlusOne INTEGER ::= 16
|
||||||
maxnoofForbLACs INTEGER ::= 4096
|
s1ap-maxnoofForbLACs INTEGER ::= 4096
|
||||||
maxnoofForbTACs INTEGER ::= 4096
|
s1ap-maxnoofForbTACs INTEGER ::= 4096
|
||||||
maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256
|
s1ap-maxNrOfIndividualS1ConnectionsToReset INTEGER ::= 256
|
||||||
maxnoofCells INTEGER ::= 16
|
s1ap-maxnoofCells INTEGER ::= 16
|
||||||
maxnoofTAIforWarning INTEGER ::= 65535
|
s1ap-maxnoofTAIforWarning INTEGER ::= 65535
|
||||||
maxnoofCellID INTEGER ::= 65535
|
s1ap-maxnoofCellID INTEGER ::= 65535
|
||||||
maxnoofEmergencyAreaID INTEGER ::= 65535
|
s1ap-maxnoofEmergencyAreaID INTEGER ::= 65535
|
||||||
maxnoofCellinTAI INTEGER ::= 65535
|
s1ap-maxnoofCellinTAI INTEGER ::= 65535
|
||||||
maxnoofCellinEAI INTEGER ::= 65535
|
s1ap-maxnoofCellinEAI INTEGER ::= 65535
|
||||||
maxnoofeNBX2TLAs INTEGER ::= 2
|
s1ap-maxnoofeNBX2TLAs INTEGER ::= 2
|
||||||
maxnoofeNBX2ExtTLAs INTEGER ::= 16
|
s1ap-maxnoofeNBX2ExtTLAs INTEGER ::= 16
|
||||||
maxnoofeNBX2GTPTLAs INTEGER ::= 16
|
s1ap-maxnoofeNBX2GTPTLAs INTEGER ::= 16
|
||||||
maxnoofRATs INTEGER ::= 8
|
s1ap-maxnoofRATs INTEGER ::= 8
|
||||||
maxnoofGroupIDs INTEGER ::= 65535
|
s1ap-maxnoofGroupIDs INTEGER ::= 65535
|
||||||
maxnoofMMECs INTEGER ::= 256
|
s1ap-maxnoofMMECs INTEGER ::= 256
|
||||||
maxnoofCellIDforMDT INTEGER ::= 32
|
s1ap-maxnoofCellIDforMDT INTEGER ::= 32
|
||||||
maxnoofTAforMDT INTEGER ::= 8
|
s1ap-maxnoofTAforMDT INTEGER ::= 8
|
||||||
|
|
||||||
|
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
@@ -129,155 +129,155 @@ maxnoofTAforMDT INTEGER ::= 8
|
|||||||
--
|
--
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
id-MME-UE-S1AP-ID ProtocolIE-ID ::= 0
|
id-MME-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 0
|
||||||
id-HandoverType ProtocolIE-ID ::= 1
|
id-HandoverType S1ap-ProtocolIE-ID ::= 1
|
||||||
id-Cause ProtocolIE-ID ::= 2
|
id-Cause S1ap-ProtocolIE-ID ::= 2
|
||||||
id-SourceID ProtocolIE-ID ::= 3
|
id-SourceID S1ap-ProtocolIE-ID ::= 3
|
||||||
id-TargetID ProtocolIE-ID ::= 4
|
id-TargetID S1ap-ProtocolIE-ID ::= 4
|
||||||
id-eNB-UE-S1AP-ID ProtocolIE-ID ::= 8
|
id-eNB-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 8
|
||||||
id-E-RABSubjecttoDataForwardingList ProtocolIE-ID ::= 12
|
id-E-RABSubjecttoDataForwardingList S1ap-ProtocolIE-ID ::= 12
|
||||||
id-E-RABtoReleaseListHOCmd ProtocolIE-ID ::= 13
|
id-E-RABtoReleaseListHOCmd S1ap-ProtocolIE-ID ::= 13
|
||||||
id-E-RABDataForwardingItem ProtocolIE-ID ::= 14
|
id-E-RABDataForwardingItem S1ap-ProtocolIE-ID ::= 14
|
||||||
id-E-RABReleaseItemBearerRelComp ProtocolIE-ID ::= 15
|
id-E-RABReleaseItemBearerRelComp S1ap-ProtocolIE-ID ::= 15
|
||||||
id-E-RABToBeSetupListBearerSUReq ProtocolIE-ID ::= 16
|
id-E-RABToBeSetupListBearerSUReq S1ap-ProtocolIE-ID ::= 16
|
||||||
id-E-RABToBeSetupItemBearerSUReq ProtocolIE-ID ::= 17
|
id-E-RABToBeSetupItemBearerSUReq S1ap-ProtocolIE-ID ::= 17
|
||||||
id-E-RABAdmittedList ProtocolIE-ID ::= 18
|
id-E-RABAdmittedList S1ap-ProtocolIE-ID ::= 18
|
||||||
id-E-RABFailedToSetupListHOReqAck ProtocolIE-ID ::= 19
|
id-E-RABFailedToSetupListHOReqAck S1ap-ProtocolIE-ID ::= 19
|
||||||
id-E-RABAdmittedItem ProtocolIE-ID ::= 20
|
id-E-RABAdmittedItem S1ap-ProtocolIE-ID ::= 20
|
||||||
id-E-RABFailedtoSetupItemHOReqAck ProtocolIE-ID ::= 21
|
id-E-RABFailedtoSetupItemHOReqAck S1ap-ProtocolIE-ID ::= 21
|
||||||
id-E-RABToBeSwitchedDLList ProtocolIE-ID ::= 22
|
id-E-RABToBeSwitchedDLList S1ap-ProtocolIE-ID ::= 22
|
||||||
id-E-RABToBeSwitchedDLItem ProtocolIE-ID ::= 23
|
id-E-RABToBeSwitchedDLItem S1ap-ProtocolIE-ID ::= 23
|
||||||
id-E-RABToBeSetupListCtxtSUReq ProtocolIE-ID ::= 24
|
id-E-RABToBeSetupListCtxtSUReq S1ap-ProtocolIE-ID ::= 24
|
||||||
id-TraceActivation ProtocolIE-ID ::= 25
|
id-TraceActivation S1ap-ProtocolIE-ID ::= 25
|
||||||
id-NAS-PDU ProtocolIE-ID ::= 26
|
id-NAS-PDU S1ap-ProtocolIE-ID ::= 26
|
||||||
id-E-RABToBeSetupItemHOReq ProtocolIE-ID ::= 27
|
id-E-RABToBeSetupItemHOReq S1ap-ProtocolIE-ID ::= 27
|
||||||
id-E-RABSetupListBearerSURes ProtocolIE-ID ::= 28
|
id-E-RABSetupListBearerSURes S1ap-ProtocolIE-ID ::= 28
|
||||||
id-E-RABFailedToSetupListBearerSURes ProtocolIE-ID ::= 29
|
id-E-RABFailedToSetupListBearerSURes S1ap-ProtocolIE-ID ::= 29
|
||||||
id-E-RABToBeModifiedListBearerModReq ProtocolIE-ID ::= 30
|
id-E-RABToBeModifiedListBearerModReq S1ap-ProtocolIE-ID ::= 30
|
||||||
id-E-RABModifyListBearerModRes ProtocolIE-ID ::= 31
|
id-E-RABModifyListBearerModRes S1ap-ProtocolIE-ID ::= 31
|
||||||
id-E-RABFailedToModifyList ProtocolIE-ID ::= 32
|
id-E-RABFailedToModifyList S1ap-ProtocolIE-ID ::= 32
|
||||||
id-E-RABToBeReleasedList ProtocolIE-ID ::= 33
|
id-E-RABToBeReleasedList S1ap-ProtocolIE-ID ::= 33
|
||||||
id-E-RABFailedToReleaseList ProtocolIE-ID ::= 34
|
id-E-RABFailedToReleaseList S1ap-ProtocolIE-ID ::= 34
|
||||||
id-E-RABItem ProtocolIE-ID ::= 35
|
id-E-RABItem S1ap-ProtocolIE-ID ::= 35
|
||||||
id-E-RABToBeModifiedItemBearerModReq ProtocolIE-ID ::= 36
|
id-E-RABToBeModifiedItemBearerModReq S1ap-ProtocolIE-ID ::= 36
|
||||||
id-E-RABModifyItemBearerModRes ProtocolIE-ID ::= 37
|
id-E-RABModifyItemBearerModRes S1ap-ProtocolIE-ID ::= 37
|
||||||
id-E-RABReleaseItem ProtocolIE-ID ::= 38
|
id-E-RABReleaseItem S1ap-ProtocolIE-ID ::= 38
|
||||||
id-E-RABSetupItemBearerSURes ProtocolIE-ID ::= 39
|
id-E-RABSetupItemBearerSURes S1ap-ProtocolIE-ID ::= 39
|
||||||
id-SecurityContext ProtocolIE-ID ::= 40
|
id-SecurityContext S1ap-ProtocolIE-ID ::= 40
|
||||||
id-HandoverRestrictionList ProtocolIE-ID ::= 41
|
id-HandoverRestrictionList S1ap-ProtocolIE-ID ::= 41
|
||||||
id-UEPagingID ProtocolIE-ID ::= 43
|
id-UEPagingID S1ap-ProtocolIE-ID ::= 43
|
||||||
id-pagingDRX ProtocolIE-ID ::= 44
|
id-pagingDRX S1ap-ProtocolIE-ID ::= 44
|
||||||
id-TAIList ProtocolIE-ID ::= 46
|
id-TAIList S1ap-ProtocolIE-ID ::= 46
|
||||||
id-TAIItem ProtocolIE-ID ::= 47
|
id-TAIItem S1ap-ProtocolIE-ID ::= 47
|
||||||
id-E-RABFailedToSetupListCtxtSURes ProtocolIE-ID ::= 48
|
id-E-RABFailedToSetupListCtxtSURes S1ap-ProtocolIE-ID ::= 48
|
||||||
id-E-RABReleaseItemHOCmd ProtocolIE-ID ::= 49
|
id-E-RABReleaseItemHOCmd S1ap-ProtocolIE-ID ::= 49
|
||||||
id-E-RABSetupItemCtxtSURes ProtocolIE-ID ::= 50
|
id-E-RABSetupItemCtxtSURes S1ap-ProtocolIE-ID ::= 50
|
||||||
id-E-RABSetupListCtxtSURes ProtocolIE-ID ::= 51
|
id-E-RABSetupListCtxtSURes S1ap-ProtocolIE-ID ::= 51
|
||||||
id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-ID ::= 52
|
id-E-RABToBeSetupItemCtxtSUReq S1ap-ProtocolIE-ID ::= 52
|
||||||
id-E-RABToBeSetupListHOReq ProtocolIE-ID ::= 53
|
id-E-RABToBeSetupListHOReq S1ap-ProtocolIE-ID ::= 53
|
||||||
id-GERANtoLTEHOInformationRes ProtocolIE-ID ::= 55
|
id-GERANtoLTEHOInformationRes S1ap-ProtocolIE-ID ::= 55
|
||||||
id-UTRANtoLTEHOInformationRes ProtocolIE-ID ::= 57
|
id-UTRANtoLTEHOInformationRes S1ap-ProtocolIE-ID ::= 57
|
||||||
id-CriticalityDiagnostics ProtocolIE-ID ::= 58
|
id-CriticalityDiagnostics S1ap-ProtocolIE-ID ::= 58
|
||||||
id-Global-ENB-ID ProtocolIE-ID ::= 59
|
id-Global-ENB-ID S1ap-ProtocolIE-ID ::= 59
|
||||||
id-eNBname ProtocolIE-ID ::= 60
|
id-eNBname S1ap-ProtocolIE-ID ::= 60
|
||||||
id-MMEname ProtocolIE-ID ::= 61
|
id-MMEname S1ap-ProtocolIE-ID ::= 61
|
||||||
id-ServedPLMNs ProtocolIE-ID ::= 63
|
id-ServedPLMNs S1ap-ProtocolIE-ID ::= 63
|
||||||
id-SupportedTAs ProtocolIE-ID ::= 64
|
id-SupportedTAs S1ap-ProtocolIE-ID ::= 64
|
||||||
id-TimeToWait ProtocolIE-ID ::= 65
|
id-TimeToWait S1ap-ProtocolIE-ID ::= 65
|
||||||
id-uEaggregateMaximumBitrate ProtocolIE-ID ::= 66
|
id-uEaggregateMaximumBitrate S1ap-ProtocolIE-ID ::= 66
|
||||||
id-TAI ProtocolIE-ID ::= 67
|
id-TAI S1ap-ProtocolIE-ID ::= 67
|
||||||
id-E-RABReleaseListBearerRelComp ProtocolIE-ID ::= 69
|
id-E-RABReleaseListBearerRelComp S1ap-ProtocolIE-ID ::= 69
|
||||||
id-cdma2000PDU ProtocolIE-ID ::= 70
|
id-cdma2000PDU S1ap-ProtocolIE-ID ::= 70
|
||||||
id-cdma2000RATType ProtocolIE-ID ::= 71
|
id-cdma2000RATType S1ap-ProtocolIE-ID ::= 71
|
||||||
id-cdma2000SectorID ProtocolIE-ID ::= 72
|
id-cdma2000SectorID S1ap-ProtocolIE-ID ::= 72
|
||||||
id-SecurityKey ProtocolIE-ID ::= 73
|
id-SecurityKey S1ap-ProtocolIE-ID ::= 73
|
||||||
id-UERadioCapability ProtocolIE-ID ::= 74
|
id-UERadioCapability S1ap-ProtocolIE-ID ::= 74
|
||||||
id-GUMMEI-ID ProtocolIE-ID ::= 75
|
id-GUMMEI-ID S1ap-ProtocolIE-ID ::= 75
|
||||||
id-E-RABInformationListItem ProtocolIE-ID ::= 78
|
id-E-RABInformationListItem S1ap-ProtocolIE-ID ::= 78
|
||||||
id-Direct-Forwarding-Path-Availability ProtocolIE-ID ::= 79
|
id-Direct-Forwarding-Path-Availability S1ap-ProtocolIE-ID ::= 79
|
||||||
id-UEIdentityIndexValue ProtocolIE-ID ::= 80
|
id-UEIdentityIndexValue S1ap-ProtocolIE-ID ::= 80
|
||||||
id-cdma2000HOStatus ProtocolIE-ID ::= 83
|
id-cdma2000HOStatus S1ap-ProtocolIE-ID ::= 83
|
||||||
id-cdma2000HORequiredIndication ProtocolIE-ID ::= 84
|
id-cdma2000HORequiredIndication S1ap-ProtocolIE-ID ::= 84
|
||||||
id-E-UTRAN-Trace-ID ProtocolIE-ID ::= 86
|
id-E-UTRAN-Trace-ID S1ap-ProtocolIE-ID ::= 86
|
||||||
id-RelativeMMECapacity ProtocolIE-ID ::= 87
|
id-RelativeMMECapacity S1ap-ProtocolIE-ID ::= 87
|
||||||
id-SourceMME-UE-S1AP-ID ProtocolIE-ID ::= 88
|
id-SourceMME-UE-S1AP-ID S1ap-ProtocolIE-ID ::= 88
|
||||||
id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 89
|
id-Bearers-SubjectToStatusTransfer-Item S1ap-ProtocolIE-ID ::= 89
|
||||||
id-eNB-StatusTransfer-TransparentContainer ProtocolIE-ID ::= 90
|
id-eNB-StatusTransfer-TransparentContainer S1ap-ProtocolIE-ID ::= 90
|
||||||
id-UE-associatedLogicalS1-ConnectionItem ProtocolIE-ID ::= 91
|
id-UE-associatedLogicalS1-ConnectionItem S1ap-ProtocolIE-ID ::= 91
|
||||||
id-ResetType ProtocolIE-ID ::= 92
|
id-ResetType S1ap-ProtocolIE-ID ::= 92
|
||||||
id-UE-associatedLogicalS1-ConnectionListResAck ProtocolIE-ID ::= 93
|
id-UE-associatedLogicalS1-ConnectionListResAck S1ap-ProtocolIE-ID ::= 93
|
||||||
id-E-RABToBeSwitchedULItem ProtocolIE-ID ::= 94
|
id-E-RABToBeSwitchedULItem S1ap-ProtocolIE-ID ::= 94
|
||||||
id-E-RABToBeSwitchedULList ProtocolIE-ID ::= 95
|
id-E-RABToBeSwitchedULList S1ap-ProtocolIE-ID ::= 95
|
||||||
id-S-TMSI ProtocolIE-ID ::= 96
|
id-S-TMSI S1ap-ProtocolIE-ID ::= 96
|
||||||
id-cdma2000OneXRAND ProtocolIE-ID ::= 97
|
id-cdma2000OneXRAND S1ap-ProtocolIE-ID ::= 97
|
||||||
id-RequestType ProtocolIE-ID ::= 98
|
id-RequestType S1ap-ProtocolIE-ID ::= 98
|
||||||
id-UE-S1AP-IDs ProtocolIE-ID ::= 99
|
id-UE-S1AP-IDs S1ap-ProtocolIE-ID ::= 99
|
||||||
id-EUTRAN-CGI ProtocolIE-ID ::= 100
|
id-EUTRAN-CGI S1ap-ProtocolIE-ID ::= 100
|
||||||
id-OverloadResponse ProtocolIE-ID ::= 101
|
id-OverloadResponse S1ap-ProtocolIE-ID ::= 101
|
||||||
id-cdma2000OneXSRVCCInfo ProtocolIE-ID ::= 102
|
id-cdma2000OneXSRVCCInfo S1ap-ProtocolIE-ID ::= 102
|
||||||
id-E-RABFailedToBeReleasedList ProtocolIE-ID ::= 103
|
id-E-RABFailedToBeReleasedList S1ap-ProtocolIE-ID ::= 103
|
||||||
id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 104
|
id-Source-ToTarget-TransparentContainer S1ap-ProtocolIE-ID ::= 104
|
||||||
id-ServedGUMMEIs ProtocolIE-ID ::= 105
|
id-ServedGUMMEIs S1ap-ProtocolIE-ID ::= 105
|
||||||
id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 106
|
id-SubscriberProfileIDforRFP S1ap-ProtocolIE-ID ::= 106
|
||||||
id-UESecurityCapabilities ProtocolIE-ID ::= 107
|
id-UESecurityCapabilities S1ap-ProtocolIE-ID ::= 107
|
||||||
id-CSFallbackIndicator ProtocolIE-ID ::= 108
|
id-CSFallbackIndicator S1ap-ProtocolIE-ID ::= 108
|
||||||
id-CNDomain ProtocolIE-ID ::= 109
|
id-CNDomain S1ap-ProtocolIE-ID ::= 109
|
||||||
id-E-RABReleasedList ProtocolIE-ID ::= 110
|
id-E-RABReleasedList S1ap-ProtocolIE-ID ::= 110
|
||||||
id-MessageIdentifier ProtocolIE-ID ::= 111
|
id-MessageIdentifier S1ap-ProtocolIE-ID ::= 111
|
||||||
id-SerialNumber ProtocolIE-ID ::= 112
|
id-SerialNumber S1ap-ProtocolIE-ID ::= 112
|
||||||
id-WarningAreaList ProtocolIE-ID ::= 113
|
id-WarningAreaList S1ap-ProtocolIE-ID ::= 113
|
||||||
id-RepetitionPeriod ProtocolIE-ID ::= 114
|
id-RepetitionPeriod S1ap-ProtocolIE-ID ::= 114
|
||||||
id-NumberofBroadcastRequest ProtocolIE-ID ::= 115
|
id-NumberofBroadcastRequest S1ap-ProtocolIE-ID ::= 115
|
||||||
id-WarningType ProtocolIE-ID ::= 116
|
id-WarningType S1ap-ProtocolIE-ID ::= 116
|
||||||
id-WarningSecurityInfo ProtocolIE-ID ::= 117
|
id-WarningSecurityInfo S1ap-ProtocolIE-ID ::= 117
|
||||||
id-DataCodingScheme ProtocolIE-ID ::= 118
|
id-DataCodingScheme S1ap-ProtocolIE-ID ::= 118
|
||||||
id-WarningMessageContents ProtocolIE-ID ::= 119
|
id-WarningMessageContents S1ap-ProtocolIE-ID ::= 119
|
||||||
id-BroadcastCompletedAreaList ProtocolIE-ID ::= 120
|
id-BroadcastCompletedAreaList S1ap-ProtocolIE-ID ::= 120
|
||||||
id-Inter-SystemInformationTransferTypeEDT ProtocolIE-ID ::= 121
|
id-Inter-SystemInformationTransferTypeEDT S1ap-ProtocolIE-ID ::= 121
|
||||||
id-Inter-SystemInformationTransferTypeMDT ProtocolIE-ID ::= 122
|
id-Inter-SystemInformationTransferTypeMDT S1ap-ProtocolIE-ID ::= 122
|
||||||
id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 123
|
id-Target-ToSource-TransparentContainer S1ap-ProtocolIE-ID ::= 123
|
||||||
id-SRVCCOperationPossible ProtocolIE-ID ::= 124
|
id-SRVCCOperationPossible S1ap-ProtocolIE-ID ::= 124
|
||||||
id-SRVCCHOIndication ProtocolIE-ID ::= 125
|
id-SRVCCHOIndication S1ap-ProtocolIE-ID ::= 125
|
||||||
id-NAS-DownlinkCount ProtocolIE-ID ::= 126
|
id-NAS-DownlinkCount S1ap-ProtocolIE-ID ::= 126
|
||||||
id-CSG-Id ProtocolIE-ID ::= 127
|
id-CSG-Id S1ap-ProtocolIE-ID ::= 127
|
||||||
id-CSG-IdList ProtocolIE-ID ::= 128
|
id-CSG-IdList S1ap-ProtocolIE-ID ::= 128
|
||||||
id-SONConfigurationTransferECT ProtocolIE-ID ::= 129
|
id-SONConfigurationTransferECT S1ap-ProtocolIE-ID ::= 129
|
||||||
id-SONConfigurationTransferMCT ProtocolIE-ID ::= 130
|
id-SONConfigurationTransferMCT S1ap-ProtocolIE-ID ::= 130
|
||||||
id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 131
|
id-TraceCollectionEntityIPAddress S1ap-ProtocolIE-ID ::= 131
|
||||||
id-MSClassmark2 ProtocolIE-ID ::= 132
|
id-MSClassmark2 S1ap-ProtocolIE-ID ::= 132
|
||||||
id-MSClassmark3 ProtocolIE-ID ::= 133
|
id-MSClassmark3 S1ap-ProtocolIE-ID ::= 133
|
||||||
id-RRC-Establishment-Cause ProtocolIE-ID ::= 134
|
id-RRC-Establishment-Cause S1ap-ProtocolIE-ID ::= 134
|
||||||
id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135
|
id-NASSecurityParametersfromE-UTRAN S1ap-ProtocolIE-ID ::= 135
|
||||||
id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136
|
id-NASSecurityParameterstoE-UTRAN S1ap-ProtocolIE-ID ::= 136
|
||||||
id-DefaultPagingDRX ProtocolIE-ID ::= 137
|
id-DefaultPagingDRX S1ap-ProtocolIE-ID ::= 137
|
||||||
id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138
|
id-Source-ToTarget-TransparentContainer-Secondary S1ap-ProtocolIE-ID ::= 138
|
||||||
id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139
|
id-Target-ToSource-TransparentContainer-Secondary S1ap-ProtocolIE-ID ::= 139
|
||||||
id-EUTRANRoundTripDelayEstimationInfo ProtocolIE-ID ::= 140
|
id-EUTRANRoundTripDelayEstimationInfo S1ap-ProtocolIE-ID ::= 140
|
||||||
id-BroadcastCancelledAreaList ProtocolIE-ID ::= 141
|
id-BroadcastCancelledAreaList S1ap-ProtocolIE-ID ::= 141
|
||||||
id-ConcurrentWarningMessageIndicator ProtocolIE-ID ::= 142
|
id-ConcurrentWarningMessageIndicator S1ap-ProtocolIE-ID ::= 142
|
||||||
id-Data-Forwarding-Not-Possible ProtocolIE-ID ::= 143
|
id-Data-Forwarding-Not-Possible S1ap-ProtocolIE-ID ::= 143
|
||||||
id-ExtendedRepetitionPeriod ProtocolIE-ID ::= 144
|
id-ExtendedRepetitionPeriod S1ap-ProtocolIE-ID ::= 144
|
||||||
id-CellAccessMode ProtocolIE-ID ::= 145
|
id-CellAccessMode S1ap-ProtocolIE-ID ::= 145
|
||||||
id-CSGMembershipStatus ProtocolIE-ID ::= 146
|
id-CSGMembershipStatus S1ap-ProtocolIE-ID ::= 146
|
||||||
id-LPPa-PDU ProtocolIE-ID ::= 147
|
id-LPPa-PDU S1ap-ProtocolIE-ID ::= 147
|
||||||
id-Routing-ID ProtocolIE-ID ::= 148
|
id-Routing-ID S1ap-ProtocolIE-ID ::= 148
|
||||||
id-Time-Synchronization-Info ProtocolIE-ID ::= 149
|
id-Time-Synchronization-Info S1ap-ProtocolIE-ID ::= 149
|
||||||
id-PS-ServiceNotAvailable ProtocolIE-ID ::= 150
|
id-PS-ServiceNotAvailable S1ap-ProtocolIE-ID ::= 150
|
||||||
id-PagingPriority ProtocolIE-ID ::= 151
|
id-PagingPriority S1ap-ProtocolIE-ID ::= 151
|
||||||
id-x2TNLConfigurationInfo ProtocolIE-ID ::= 152
|
id-x2TNLConfigurationInfo S1ap-ProtocolIE-ID ::= 152
|
||||||
id-eNBX2ExtendedTransportLayerAddresses ProtocolIE-ID ::= 153
|
id-eNBX2ExtendedTransportLayerAddresses S1ap-ProtocolIE-ID ::= 153
|
||||||
id-GUMMEIList ProtocolIE-ID ::= 154
|
id-GUMMEIList S1ap-ProtocolIE-ID ::= 154
|
||||||
id-GW-TransportLayerAddress ProtocolIE-ID ::= 155
|
id-GW-TransportLayerAddress S1ap-ProtocolIE-ID ::= 155
|
||||||
id-Correlation-ID ProtocolIE-ID ::= 156
|
id-Correlation-ID S1ap-ProtocolIE-ID ::= 156
|
||||||
id-SourceMME-GUMMEI ProtocolIE-ID ::= 157
|
id-SourceMME-GUMMEI S1ap-ProtocolIE-ID ::= 157
|
||||||
id-MME-UE-S1AP-ID-2 ProtocolIE-ID ::= 158
|
id-MME-UE-S1AP-ID-2 S1ap-ProtocolIE-ID ::= 158
|
||||||
id-RegisteredLAI ProtocolIE-ID ::= 159
|
id-RegisteredLAI S1ap-ProtocolIE-ID ::= 159
|
||||||
id-RelayNode-Indicator ProtocolIE-ID ::= 160
|
id-RelayNode-Indicator S1ap-ProtocolIE-ID ::= 160
|
||||||
id-TrafficLoadReductionIndication ProtocolIE-ID ::= 161
|
id-TrafficLoadReductionIndication S1ap-ProtocolIE-ID ::= 161
|
||||||
id-MDTConfiguration ProtocolIE-ID ::= 162
|
id-MDTConfiguration S1ap-ProtocolIE-ID ::= 162
|
||||||
id-MMERelaySupportIndicator ProtocolIE-ID ::= 163
|
id-MMERelaySupportIndicator S1ap-ProtocolIE-ID ::= 163
|
||||||
id-GWContextReleaseIndication ProtocolIE-ID ::= 164
|
id-GWContextReleaseIndication S1ap-ProtocolIE-ID ::= 164
|
||||||
id-ManagementBasedMDTAllowed ProtocolIE-ID ::= 165
|
id-ManagementBasedMDTAllowed S1ap-ProtocolIE-ID ::= 165
|
||||||
id-PrivacyIndicator ProtocolIE-ID ::= 166
|
id-PrivacyIndicator S1ap-ProtocolIE-ID ::= 166
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|||||||
@@ -19,16 +19,16 @@ BEGIN
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
IMPORTS
|
IMPORTS
|
||||||
Criticality,
|
S1ap-Criticality,
|
||||||
Presence,
|
S1ap-Presence,
|
||||||
PrivateIE-ID,
|
S1ap-PrivateIE-ID,
|
||||||
ProtocolExtensionID,
|
S1ap-ProtocolExtensionID,
|
||||||
ProtocolIE-ID
|
S1ap-ProtocolIE-ID
|
||||||
FROM S1AP-CommonDataTypes
|
FROM S1AP-CommonDataTypes
|
||||||
|
|
||||||
maxPrivateIEs,
|
s1ap-maxPrivateIEs,
|
||||||
maxProtocolExtensions,
|
s1ap-maxProtocolExtensions,
|
||||||
maxProtocolIEs
|
s1ap-maxProtocolIEs
|
||||||
FROM S1AP-Constants;
|
FROM S1AP-Constants;
|
||||||
|
|
||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
@@ -38,10 +38,10 @@ FROM S1AP-Constants;
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
S1AP-PROTOCOL-IES ::= CLASS {
|
S1AP-PROTOCOL-IES ::= CLASS {
|
||||||
&id ProtocolIE-ID UNIQUE,
|
&id S1ap-ProtocolIE-ID UNIQUE,
|
||||||
&criticality Criticality,
|
&criticality S1ap-Criticality,
|
||||||
&Value,
|
&Value,
|
||||||
&presence Presence
|
&presence S1ap-Presence
|
||||||
}
|
}
|
||||||
WITH SYNTAX {
|
WITH SYNTAX {
|
||||||
ID &id
|
ID &id
|
||||||
@@ -57,12 +57,12 @@ WITH SYNTAX {
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
S1AP-PROTOCOL-IES-PAIR ::= CLASS {
|
S1AP-PROTOCOL-IES-PAIR ::= CLASS {
|
||||||
&id ProtocolIE-ID UNIQUE,
|
&id S1ap-ProtocolIE-ID UNIQUE,
|
||||||
&firstCriticality Criticality,
|
&firstCriticality S1ap-Criticality,
|
||||||
&FirstValue,
|
&FirstValue,
|
||||||
&secondCriticality Criticality,
|
&secondCriticality S1ap-Criticality,
|
||||||
&SecondValue,
|
&SecondValue,
|
||||||
&presence Presence
|
&presence S1ap-Presence
|
||||||
}
|
}
|
||||||
WITH SYNTAX {
|
WITH SYNTAX {
|
||||||
ID &id
|
ID &id
|
||||||
@@ -80,10 +80,10 @@ WITH SYNTAX {
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
S1AP-PROTOCOL-EXTENSION ::= CLASS {
|
S1AP-PROTOCOL-EXTENSION ::= CLASS {
|
||||||
&id ProtocolExtensionID UNIQUE,
|
&id S1ap-ProtocolExtensionID UNIQUE,
|
||||||
&criticality Criticality,
|
&criticality S1ap-Criticality,
|
||||||
&Extension,
|
&Extension,
|
||||||
&presence Presence
|
&presence S1ap-Presence
|
||||||
}
|
}
|
||||||
WITH SYNTAX {
|
WITH SYNTAX {
|
||||||
ID &id
|
ID &id
|
||||||
@@ -99,10 +99,10 @@ WITH SYNTAX {
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
S1AP-PRIVATE-IES ::= CLASS {
|
S1AP-PRIVATE-IES ::= CLASS {
|
||||||
&id PrivateIE-ID,
|
&id S1ap-PrivateIE-ID,
|
||||||
&criticality Criticality,
|
&criticality S1ap-Criticality,
|
||||||
&Value,
|
&Value,
|
||||||
&presence Presence
|
&presence S1ap-Presence
|
||||||
}
|
}
|
||||||
WITH SYNTAX {
|
WITH SYNTAX {
|
||||||
ID &id
|
ID &id
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -19,83 +19,82 @@ BEGIN
|
|||||||
-- **************************************************************
|
-- **************************************************************
|
||||||
|
|
||||||
IMPORTS
|
IMPORTS
|
||||||
Criticality,
|
S1ap-Criticality,
|
||||||
ProcedureCode
|
S1ap-ProcedureCode
|
||||||
FROM S1AP-CommonDataTypes
|
FROM S1AP-CommonDataTypes
|
||||||
|
|
||||||
CellTrafficTrace,
|
S1ap-CellTrafficTrace,
|
||||||
DeactivateTrace,
|
S1ap-DeactivateTrace,
|
||||||
DownlinkUEAssociatedLPPaTransport,
|
S1ap-DownlinkUEAssociatedLPPaTransport,
|
||||||
DownlinkNASTransport,
|
S1ap-DownlinkNASTransport,
|
||||||
DownlinkNonUEAssociatedLPPaTransport,
|
S1ap-DownlinkNonUEAssociatedLPPaTransport,
|
||||||
DownlinkS1cdma2000tunneling,
|
S1ap-DownlinkS1cdma2000tunneling,
|
||||||
ENBDirectInformationTransfer,
|
S1ap-ENBDirectInformationTransfer,
|
||||||
ENBStatusTransfer,
|
S1ap-ENBStatusTransfer,
|
||||||
ENBConfigurationUpdate,
|
S1ap-ENBConfigurationUpdate,
|
||||||
ENBConfigurationUpdateAcknowledge,
|
S1ap-ENBConfigurationUpdateAcknowledge,
|
||||||
ENBConfigurationUpdateFailure,
|
S1ap-ENBConfigurationUpdateFailure,
|
||||||
ErrorIndication,
|
S1ap-ErrorIndication,
|
||||||
HandoverCancel,
|
S1ap-HandoverCancel,
|
||||||
HandoverCancelAcknowledge,
|
S1ap-HandoverCancelAcknowledge,
|
||||||
HandoverCommand,
|
S1ap-HandoverCommand,
|
||||||
HandoverFailure,
|
S1ap-HandoverFailure,
|
||||||
HandoverNotify,
|
S1ap-HandoverNotify,
|
||||||
HandoverPreparationFailure,
|
S1ap-HandoverPreparationFailure,
|
||||||
HandoverRequest,
|
S1ap-HandoverRequest,
|
||||||
HandoverRequestAcknowledge,
|
S1ap-HandoverRequestAcknowledge,
|
||||||
HandoverRequired,
|
S1ap-HandoverRequired,
|
||||||
InitialContextSetupFailure,
|
S1ap-InitialContextSetupFailure,
|
||||||
InitialContextSetupRequest,
|
S1ap-InitialContextSetupRequest,
|
||||||
InitialContextSetupResponse,
|
S1ap-InitialContextSetupResponse,
|
||||||
InitialUEMessage,
|
S1ap-InitialUEMessage,
|
||||||
KillRequest,
|
S1ap-KillRequest,
|
||||||
KillResponse,
|
S1ap-KillResponse,
|
||||||
LocationReportingControl,
|
S1ap-LocationReportingControl,
|
||||||
LocationReportingFailureIndication,
|
S1ap-LocationReportingFailureIndication,
|
||||||
LocationReport,
|
S1ap-LocationReport,
|
||||||
MMEConfigurationUpdate,
|
S1ap-MMEConfigurationUpdate,
|
||||||
MMEConfigurationUpdateAcknowledge,
|
S1ap-MMEConfigurationUpdateAcknowledge,
|
||||||
MMEConfigurationUpdateFailure,
|
S1ap-MMEConfigurationUpdateFailure,
|
||||||
MMEDirectInformationTransfer,
|
S1ap-MMEDirectInformationTransfer,
|
||||||
MMEStatusTransfer,
|
S1ap-MMEStatusTransfer,
|
||||||
NASNonDeliveryIndication,
|
S1ap-NASNonDeliveryIndication,
|
||||||
OverloadStart,
|
S1ap-OverloadStart,
|
||||||
OverloadStop,
|
S1ap-OverloadStop,
|
||||||
Paging,
|
S1ap-Paging,
|
||||||
PathSwitchRequest,
|
S1ap-PathSwitchRequest,
|
||||||
PathSwitchRequestAcknowledge,
|
S1ap-PathSwitchRequestAcknowledge,
|
||||||
PathSwitchRequestFailure,
|
S1ap-PathSwitchRequestFailure,
|
||||||
PrivateMessage,
|
S1ap-PrivateMessage,
|
||||||
Reset,
|
S1ap-Reset,
|
||||||
ResetAcknowledge,
|
S1ap-ResetAcknowledge,
|
||||||
S1SetupFailure,
|
S1ap-S1SetupFailure,
|
||||||
S1SetupRequest,
|
S1ap-S1SetupRequest,
|
||||||
S1SetupResponse,
|
S1ap-S1SetupResponse,
|
||||||
E-RABModifyRequest,
|
E-S1ap-RABModifyRequest,
|
||||||
E-RABModifyResponse,
|
E-S1ap-RABModifyResponse,
|
||||||
E-RABReleaseCommand,
|
E-S1ap-RABReleaseCommand,
|
||||||
E-RABReleaseResponse,
|
E-S1ap-RABReleaseResponse,
|
||||||
E-RABReleaseIndication,
|
E-S1ap-RABReleaseIndication,
|
||||||
E-RABSetupRequest,
|
E-S1ap-RABSetupRequest,
|
||||||
E-RABSetupResponse,
|
E-S1ap-RABSetupResponse,
|
||||||
TraceFailureIndication,
|
S1ap-TraceFailureIndication,
|
||||||
TraceStart,
|
S1ap-TraceStart,
|
||||||
UECapabilityInfoIndication,
|
S1ap-UECapabilityInfoIndication,
|
||||||
UEContextModificationFailure,
|
S1ap-UEContextModificationFailure,
|
||||||
UEContextModificationRequest,
|
S1ap-UEContextModificationRequest,
|
||||||
UEContextModificationResponse,
|
S1ap-UEContextModificationResponse,
|
||||||
UEContextReleaseCommand,
|
S1ap-UEContextReleaseCommand,
|
||||||
UEContextReleaseComplete,
|
S1ap-UEContextReleaseComplete,
|
||||||
UEContextReleaseRequest,
|
S1ap-UEContextReleaseRequest,
|
||||||
UplinkUEAssociatedLPPaTransport,
|
S1ap-UplinkUEAssociatedLPPaTransport,
|
||||||
UplinkNASTransport,
|
S1ap-UplinkNASTransport,
|
||||||
UplinkNonUEAssociatedLPPaTransport,
|
S1ap-UplinkNonUEAssociatedLPPaTransport,
|
||||||
UplinkS1cdma2000tunneling,
|
S1ap-UplinkS1cdma2000tunneling,
|
||||||
WriteReplaceWarningRequest,
|
S1ap-WriteReplaceWarningRequest,
|
||||||
WriteReplaceWarningResponse,
|
S1ap-WriteReplaceWarningResponse,
|
||||||
ENBConfigurationTransfer,
|
S1ap-ENBConfigurationTransfer,
|
||||||
MMEConfigurationTransfer
|
S1ap-MMEConfigurationTransfer
|
||||||
|
|
||||||
|
|
||||||
FROM S1AP-PDU-Contents
|
FROM S1AP-PDU-Contents
|
||||||
|
|
||||||
|
|||||||
@@ -8,405 +8,404 @@ DEFINITIONS AUTOMATIC TAGS ::=
|
|||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
IMPORTS
|
IMPORTS
|
||||||
Criticality,
|
S1ap-Criticality,
|
||||||
ProcedureCode,
|
S1ap-ProcedureCode,
|
||||||
ProtocolIE-ID
|
S1ap-ProtocolIE-ID
|
||||||
|
|
||||||
FROM S1AP-CommonDataTypes
|
FROM S1AP-CommonDataTypes
|
||||||
|
|
||||||
maxProtocolIEs
|
s1ap-maxProtocolIEs
|
||||||
|
|
||||||
FROM S1AP-Constants;
|
FROM S1AP-Constants;
|
||||||
|
|
||||||
S1AP-PDU ::= CHOICE {
|
S1AP-PDU ::= CHOICE {
|
||||||
initiatingMessage InitiatingMessage,
|
initiatingMessage S1ap-InitiatingMessage,
|
||||||
successfulOutcome SuccessfulOutcome,
|
successfulOutcome S1ap-SuccessfulOutcome,
|
||||||
unsuccessfulOutcome UnsuccessfulOutcome,
|
unsuccessfulOutcome S1ap-UnsuccessfulOutcome,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
InitiatingMessage ::= SEQUENCE {
|
S1ap-InitiatingMessage ::= SEQUENCE {
|
||||||
procedureCode ProcedureCode,
|
procedureCode S1ap-ProcedureCode,
|
||||||
criticality Criticality,
|
criticality S1ap-Criticality,
|
||||||
value ANY
|
value ANY
|
||||||
}
|
}
|
||||||
|
|
||||||
SuccessfulOutcome ::= SEQUENCE {
|
S1ap-SuccessfulOutcome ::= SEQUENCE {
|
||||||
procedureCode ProcedureCode,
|
procedureCode S1ap-ProcedureCode,
|
||||||
criticality Criticality,
|
criticality S1ap-Criticality,
|
||||||
value ANY
|
value ANY
|
||||||
}
|
}
|
||||||
|
|
||||||
UnsuccessfulOutcome ::= SEQUENCE {
|
S1ap-UnsuccessfulOutcome ::= SEQUENCE {
|
||||||
procedureCode ProcedureCode,
|
procedureCode S1ap-ProcedureCode,
|
||||||
criticality Criticality,
|
criticality S1ap-Criticality,
|
||||||
value ANY
|
value ANY
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverRequired ::= SEQUENCE {
|
S1ap-HandoverRequired ::= SEQUENCE {
|
||||||
handoverRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverRequired-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverCommand ::= SEQUENCE {
|
S1ap-HandoverCommand ::= SEQUENCE {
|
||||||
handoverCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverPreparationFailure ::= SEQUENCE {
|
S1ap-HandoverPreparationFailure ::= SEQUENCE {
|
||||||
handoverPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverPreparationFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverRequest ::= SEQUENCE {
|
S1ap-HandoverRequest ::= SEQUENCE {
|
||||||
handoverRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverRequestAcknowledge ::= SEQUENCE {
|
S1ap-HandoverRequestAcknowledge ::= SEQUENCE {
|
||||||
handoverRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverRequestAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverFailure ::= SEQUENCE {
|
S1ap-HandoverFailure ::= SEQUENCE {
|
||||||
handoverFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverNotify ::= SEQUENCE {
|
S1ap-HandoverNotify ::= SEQUENCE {
|
||||||
handoverNotify-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverNotify-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
PathSwitchRequest ::= SEQUENCE {
|
S1ap-PathSwitchRequest ::= SEQUENCE {
|
||||||
pathSwitchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-PathSwitchRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
PathSwitchRequestAcknowledge ::= SEQUENCE {
|
S1ap-PathSwitchRequestAcknowledge ::= SEQUENCE {
|
||||||
pathSwitchRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-PathSwitchRequestAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
PathSwitchRequestFailure ::= SEQUENCE {
|
S1ap-PathSwitchRequestFailure ::= SEQUENCE {
|
||||||
pathSwitchRequestFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-PathSwitchRequestFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABSetupRequest ::= SEQUENCE {
|
S1ap-E-RABSetupRequest ::= SEQUENCE {
|
||||||
e-RABSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABSetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABSetupResponse ::= SEQUENCE {
|
S1ap-E-RABSetupResponse ::= SEQUENCE {
|
||||||
e-RABSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABSetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABModifyRequest ::= SEQUENCE {
|
S1ap-E-RABModifyRequest ::= SEQUENCE {
|
||||||
e-RABModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABModifyRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABModifyResponse ::= SEQUENCE {
|
S1ap-E-RABModifyResponse ::= SEQUENCE {
|
||||||
e-RABModifyResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABModifyResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABReleaseIndication ::= SEQUENCE {
|
S1ap-E-RABReleaseIndication ::= SEQUENCE {
|
||||||
e-RABReleaseIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABReleaseIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABReleaseCommand ::= SEQUENCE {
|
S1ap-E-RABReleaseCommand ::= SEQUENCE {
|
||||||
e-RABReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABReleaseCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
E-RABReleaseResponse ::= SEQUENCE {
|
S1ap-E-RABReleaseResponse ::= SEQUENCE {
|
||||||
e-RABReleaseResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-E-RABReleaseResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
InitialContextSetupRequest ::= SEQUENCE {
|
S1ap-InitialContextSetupRequest ::= SEQUENCE {
|
||||||
initialContextSetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-InitialContextSetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
InitialContextSetupResponse ::= SEQUENCE {
|
S1ap-InitialContextSetupResponse ::= SEQUENCE {
|
||||||
initialContextSetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-InitialContextSetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
InitialContextSetupFailure ::= SEQUENCE {
|
S1ap-InitialContextSetupFailure ::= SEQUENCE {
|
||||||
initialContextSetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-InitialContextSetupFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextReleaseRequest ::= SEQUENCE {
|
S1ap-UEContextReleaseRequest ::= SEQUENCE {
|
||||||
ueContextReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextReleaseRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
Paging ::= SEQUENCE {
|
S1ap-Paging ::= SEQUENCE {
|
||||||
paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-Paging-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
DownlinkNASTransport ::= SEQUENCE {
|
S1ap-DownlinkNASTransport ::= SEQUENCE {
|
||||||
downlinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-DownlinkNASTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
InitialUEMessage ::= SEQUENCE {
|
S1ap-InitialUEMessage ::= SEQUENCE {
|
||||||
initialUEMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-InitialUEMessage-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UplinkNASTransport ::= SEQUENCE {
|
S1ap-UplinkNASTransport ::= SEQUENCE {
|
||||||
uplinkNASTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UplinkNASTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
NASNonDeliveryIndication ::= SEQUENCE {
|
S1ap-NASNonDeliveryIndication ::= SEQUENCE {
|
||||||
nasNonDeliveryIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-NASNonDeliveryIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverCancel ::= SEQUENCE {
|
S1ap-HandoverCancel ::= SEQUENCE {
|
||||||
handoverCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverCancel-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
HandoverCancelAcknowledge ::= SEQUENCE {
|
S1ap-HandoverCancelAcknowledge ::= SEQUENCE {
|
||||||
handoverCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-HandoverCancelAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
Reset ::= SEQUENCE {
|
S1ap-Reset ::= SEQUENCE {
|
||||||
reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-Reset-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetAcknowledge ::= SEQUENCE {
|
S1ap-ResetAcknowledge ::= SEQUENCE {
|
||||||
resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ResetAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
S1SetupResponse ::= SEQUENCE {
|
S1ap-S1SetupResponse ::= SEQUENCE {
|
||||||
s1SetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-S1SetupResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
S1SetupRequest ::= SEQUENCE {
|
S1ap-S1SetupRequest ::= SEQUENCE {
|
||||||
s1SetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-S1SetupRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
S1SetupFailure ::= SEQUENCE
|
S1ap-S1SetupFailure ::= SEQUENCE {
|
||||||
{
|
s1ap-S1SetupFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
s1SetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorIndication ::= SEQUENCE {
|
S1ap-ErrorIndication ::= SEQUENCE {
|
||||||
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ErrorIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBConfigurationUpdate ::= SEQUENCE {
|
S1ap-ENBConfigurationUpdate ::= SEQUENCE {
|
||||||
eNBConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBConfigurationUpdate-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
|
S1ap-ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||||
eNBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBConfigurationUpdateFailure ::= SEQUENCE {
|
S1ap-ENBConfigurationUpdateFailure ::= SEQUENCE {
|
||||||
eNBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEConfigurationUpdate ::= SEQUENCE {
|
S1ap-MMEConfigurationUpdate ::= SEQUENCE {
|
||||||
mmeConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEConfigurationUpdate-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEConfigurationUpdateAcknowledge ::= SEQUENCE {
|
S1ap-MMEConfigurationUpdateAcknowledge ::= SEQUENCE {
|
||||||
mmeConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEConfigurationUpdateFailure ::= SEQUENCE {
|
S1ap-MMEConfigurationUpdateFailure ::= SEQUENCE {
|
||||||
mmeConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
DownlinkS1cdma2000tunneling ::= SEQUENCE {
|
S1ap-DownlinkS1cdma2000tunneling ::= SEQUENCE {
|
||||||
downlinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-DownlinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UplinkS1cdma2000tunneling ::= SEQUENCE {
|
S1ap-UplinkS1cdma2000tunneling ::= SEQUENCE {
|
||||||
uplinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UplinkS1cdma2000tunneling-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextModificationRequest ::= SEQUENCE {
|
S1ap-UEContextModificationRequest ::= SEQUENCE {
|
||||||
ueContextModificationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextModificationRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextModificationResponse ::= SEQUENCE {
|
S1ap-UEContextModificationResponse ::= SEQUENCE {
|
||||||
ueContextModificationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextModificationResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextModificationFailure ::= SEQUENCE {
|
S1ap-UEContextModificationFailure ::= SEQUENCE {
|
||||||
ueContextModificationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextModificationFailure-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UECapabilityInfoIndication ::= SEQUENCE {
|
S1ap-UECapabilityInfoIndication ::= SEQUENCE {
|
||||||
ueCapabilityInfoIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UECapabilityInfoIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextReleaseCommand ::= SEQUENCE {
|
S1ap-UEContextReleaseCommand ::= SEQUENCE {
|
||||||
ueContextReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextReleaseCommand-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UEContextReleaseComplete ::= SEQUENCE {
|
S1ap-UEContextReleaseComplete ::= SEQUENCE {
|
||||||
ueContextReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UEContextReleaseComplete-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBStatusTransfer ::= SEQUENCE {
|
S1ap-ENBStatusTransfer ::= SEQUENCE {
|
||||||
eNBStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBStatusTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEStatusTransfer ::= SEQUENCE {
|
S1ap-MMEStatusTransfer ::= SEQUENCE {
|
||||||
mmeStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEStatusTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
DeactivateTrace ::= SEQUENCE {
|
S1ap-DeactivateTrace ::= SEQUENCE {
|
||||||
deactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-DeactivateTrace-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
TraceStart ::= SEQUENCE {
|
S1ap-TraceStart ::= SEQUENCE {
|
||||||
traceStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-TraceStart-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
TraceFailureIndication ::= SEQUENCE {
|
S1ap-TraceFailureIndication ::= SEQUENCE {
|
||||||
traceFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-TraceFailureIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
CellTrafficTrace ::= SEQUENCE {
|
S1ap-CellTrafficTrace ::= SEQUENCE {
|
||||||
cellTrafficTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-CellTrafficTrace-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
LocationReportingControl ::= SEQUENCE {
|
S1ap-LocationReportingControl ::= SEQUENCE {
|
||||||
locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-LocationReportingControl-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
LocationReportingFailureIndication ::= SEQUENCE {
|
S1ap-LocationReportingFailureIndication ::= SEQUENCE {
|
||||||
locationReportingFailureIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-LocationReportingFailureIndication-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
LocationReport ::= SEQUENCE {
|
S1ap-LocationReport ::= SEQUENCE {
|
||||||
locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-LocationReport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
OverloadStart ::= SEQUENCE {
|
S1ap-OverloadStart ::= SEQUENCE {
|
||||||
overloadStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-OverloadStart-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
OverloadStop ::= SEQUENCE {
|
S1ap-OverloadStop ::= SEQUENCE {
|
||||||
overloadStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-OverloadStop-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteReplaceWarningRequest ::= SEQUENCE {
|
S1ap-WriteReplaceWarningRequest ::= SEQUENCE {
|
||||||
writeReplaceWarningRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-WriteReplaceWarningRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteReplaceWarningResponse ::= SEQUENCE {
|
S1ap-WriteReplaceWarningResponse ::= SEQUENCE {
|
||||||
writeReplaceWarningResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-WriteReplaceWarningResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBDirectInformationTransfer ::= SEQUENCE {
|
S1ap-ENBDirectInformationTransfer ::= SEQUENCE {
|
||||||
eNBDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBDirectInformationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEDirectInformationTransfer ::= SEQUENCE {
|
S1ap-MMEDirectInformationTransfer ::= SEQUENCE {
|
||||||
mmeDirectInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEDirectInformationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
ENBConfigurationTransfer ::= SEQUENCE {
|
S1ap-ENBConfigurationTransfer ::= SEQUENCE {
|
||||||
eNBConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-ENBConfigurationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
MMEConfigurationTransfer ::= SEQUENCE {
|
S1ap-MMEConfigurationTransfer ::= SEQUENCE {
|
||||||
mmeConfigurationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-MMEConfigurationTransfer-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
PrivateMessage ::= SEQUENCE {
|
S1ap-PrivateMessage ::= SEQUENCE {
|
||||||
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-PrivateMessage-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
KillRequest ::= SEQUENCE {
|
S1ap-KillRequest ::= SEQUENCE {
|
||||||
killRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-KillRequest-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
KillResponse ::= SEQUENCE {
|
S1ap-KillResponse ::= SEQUENCE {
|
||||||
killResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-KillResponse-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
DownlinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
S1ap-DownlinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||||
downlinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-DownlinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UplinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
S1ap-UplinkUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||||
uplinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UplinkUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
S1ap-DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||||
downlinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-DownlinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
S1ap-UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE {
|
||||||
uplinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
|
s1ap-UplinkNonUEAssociatedLPPaTransport-ies SEQUENCE (SIZE (0..s1ap-maxProtocolIEs)) OF S1ap-IE,
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
|
||||||
IE ::= SEQUENCE {
|
S1ap-IE ::= SEQUENCE {
|
||||||
id ProtocolIE-ID,
|
id S1ap-ProtocolIE-ID,
|
||||||
criticality Criticality,
|
criticality S1ap-Criticality,
|
||||||
value ANY
|
value ANY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import datetime
|
|||||||
import getopt
|
import getopt
|
||||||
import getpass
|
import getpass
|
||||||
|
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
|
|
||||||
lines = ""
|
lines = ""
|
||||||
iesDefs = {}
|
iesDefs = {}
|
||||||
@@ -19,6 +19,7 @@ WARN = '\033[93m'
|
|||||||
ENDC = '\033[0m'
|
ENDC = '\033[0m'
|
||||||
|
|
||||||
fileprefix = ""
|
fileprefix = ""
|
||||||
|
fileprefix_first_upper = ""
|
||||||
|
|
||||||
def printFail(string):
|
def printFail(string):
|
||||||
sys.stderr.write(FAIL + string + ENDC + "\n")
|
sys.stderr.write(FAIL + string + ENDC + "\n")
|
||||||
@@ -164,6 +165,8 @@ if len(iesDefs) == 0:
|
|||||||
printFail("No Information Element parsed, exiting")
|
printFail("No Information Element parsed, exiting")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
fileprefix_first_upper = fileprefix[0].upper() + fileprefix[1:]
|
||||||
|
|
||||||
f = open(outdir + fileprefix + '_ies_defs.h', 'w')
|
f = open(outdir + fileprefix + '_ies_defs.h', 'w')
|
||||||
outputHeaderToFile(f, filename)
|
outputHeaderToFile(f, filename)
|
||||||
f.write("#include \"%s_common.h\"\n\n" % (fileprefix))
|
f.write("#include \"%s_common.h\"\n\n" % (fileprefix))
|
||||||
@@ -223,8 +226,8 @@ for key in iesDefs:
|
|||||||
f.write("} %s_t;\n\n" % (re.sub('-', '_', key)))
|
f.write("} %s_t;\n\n" % (re.sub('-', '_', key)))
|
||||||
|
|
||||||
f.write("typedef struct %s_message_s {\n" % (fileprefix))
|
f.write("typedef struct %s_message_s {\n" % (fileprefix))
|
||||||
f.write(" ProcedureCode_t procedureCode;\n")
|
f.write(" %s_ProcedureCode_t procedureCode;\n" % (fileprefix_first_upper))
|
||||||
f.write(" Criticality_t criticality;\n")
|
f.write(" %s_Criticality_t criticality;\n" % (fileprefix_first_upper))
|
||||||
f.write(" uint8_t direction;\n")
|
f.write(" uint8_t direction;\n")
|
||||||
f.write(" union {\n")
|
f.write(" union {\n")
|
||||||
|
|
||||||
@@ -353,7 +356,7 @@ for key in iesDefs:
|
|||||||
f.write(" %s_DEBUG(\"Decoding message %s (%%s:%%d)\\n\", __FILE__, __LINE__);\n\n" % (fileprefix.upper(), re.sub('-', '_', keyName)))
|
f.write(" %s_DEBUG(\"Decoding message %s (%%s:%%d)\\n\", __FILE__, __LINE__);\n\n" % (fileprefix.upper(), re.sub('-', '_', keyName)))
|
||||||
f.write(" ANY_to_type_aper(any_p, &asn_DEF_%s, (void**)&%s_p);\n\n" % (asn1cStruct, asn1cStructfirstlower))
|
f.write(" ANY_to_type_aper(any_p, &asn_DEF_%s, (void**)&%s_p);\n\n" % (asn1cStruct, asn1cStructfirstlower))
|
||||||
f.write(" for (i = 0; i < %s_p->%slist.count; i++) {\n" % (asn1cStructfirstlower, iesaccess))
|
f.write(" for (i = 0; i < %s_p->%slist.count; i++) {\n" % (asn1cStructfirstlower, iesaccess))
|
||||||
f.write(" IE_t *ie_p;\n")
|
f.write(" %s_IE_t *ie_p;\n" % (fileprefix[0].upper() + fileprefix[1:]))
|
||||||
f.write(" ie_p = %s_p->%slist.array[i];\n" % (asn1cStructfirstlower, iesaccess))
|
f.write(" ie_p = %s_p->%slist.array[i];\n" % (asn1cStructfirstlower, iesaccess))
|
||||||
f.write(" switch(ie_p->id) {\n")
|
f.write(" switch(ie_p->id) {\n")
|
||||||
for ie in iesDefs[key]["ies"]:
|
for ie in iesDefs[key]["ies"]:
|
||||||
@@ -368,7 +371,7 @@ for key in iesDefs:
|
|||||||
f.write(" /* Optional field */\n")
|
f.write(" /* Optional field */\n")
|
||||||
elif ie[3] == "conditional":
|
elif ie[3] == "conditional":
|
||||||
f.write(" /* Conditional field */\n")
|
f.write(" /* Conditional field */\n")
|
||||||
f.write(" case ProtocolIE_ID_%s:\n" % (re.sub('-', '_', ie[0])))
|
f.write(" case %s_ProtocolIE_ID_%s:\n" % (fileprefix_first_upper, re.sub('-', '_', ie[0])))
|
||||||
f.write(" {\n")
|
f.write(" {\n")
|
||||||
f.write(" %s_t *%s_p = NULL;\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
f.write(" %s_t *%s_p = NULL;\n" % (ietypeunderscore, lowerFirstCamelWord(ietypesubst)))
|
||||||
if ie[3] != "mandatory":
|
if ie[3] != "mandatory":
|
||||||
@@ -416,12 +419,12 @@ for key in iesDefs:
|
|||||||
f.write(" assert(%sIEs != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))));
|
f.write(" assert(%sIEs != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))));
|
||||||
|
|
||||||
f.write(" for (i = 0; i < %s->list.count; i++) {\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
f.write(" for (i = 0; i < %s->list.count; i++) {\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||||
f.write(" IE_t *ie_p = %s->list.array[i];\n" % (lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
f.write(" %s_IE_t *ie_p = %s->list.array[i];\n" % (fileprefix[0].upper() + fileprefix[1:], lowerFirstCamelWord(re.sub('-', '_', keyname))))
|
||||||
f.write(" switch (ie_p->id) {\n")
|
f.write(" switch (ie_p->id) {\n")
|
||||||
for ie in iesDefs[key]["ies"]:
|
for ie in iesDefs[key]["ies"]:
|
||||||
iename = re.sub('id-', '', ie[0])
|
iename = re.sub('id-', '', ie[0])
|
||||||
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
ienameunderscore = lowerFirstCamelWord(re.sub('-', '_', iename))
|
||||||
f.write(" case ProtocolIE_ID_%s:\n" % (re.sub('-', '_', ie[0])))
|
f.write(" case %s_ProtocolIE_ID_%s:\n" % (fileprefix_first_upper, re.sub('-', '_', ie[0])))
|
||||||
f.write(" {\n")
|
f.write(" {\n")
|
||||||
f.write(" %s_t *%s_p = NULL;\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
f.write(" %s_t *%s_p = NULL;\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||||
f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
f.write(" tempDecoded = ANY_to_type_aper(&ie_p->value, &asn_DEF_%s, (void**)&%s_p);\n" % (re.sub('-', '_', ie[2]), lowerFirstCamelWord(re.sub('-', '', ie[2]))))
|
||||||
@@ -478,7 +481,7 @@ for key in iesDefs:
|
|||||||
f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
|
f.write(" %s_t *%s,\n" % (asn1cStruct, firstwordlower))
|
||||||
f.write(" %s_t *%s) {\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
f.write(" %s_t *%s) {\n\n" % (re.sub('-', '_', key), lowerFirstCamelWord(re.sub('-', '_', key))))
|
||||||
|
|
||||||
f.write(" IE_t *ie;\n\n")
|
f.write(" %s_IE_t *ie;\n\n" % (fileprefix_first_upper))
|
||||||
|
|
||||||
f.write(" assert(%s != NULL);\n" % (firstwordlower));
|
f.write(" assert(%s != NULL);\n" % (firstwordlower));
|
||||||
f.write(" assert(%s != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', key))));
|
f.write(" assert(%s != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', key))));
|
||||||
@@ -497,8 +500,8 @@ for key in iesDefs:
|
|||||||
f.write(" /* Conditional field */\n")
|
f.write(" /* Conditional field */\n")
|
||||||
f.write(" if (%s->presenceMask & %s_%s_PRESENT) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
|
f.write(" if (%s->presenceMask & %s_%s_PRESENT) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), keyupperunderscore, ieupperunderscore))
|
||||||
#f.write(" == %s_%s_PRESENT) {\n" % (keyupperunderscore, ieupperunderscore))
|
#f.write(" == %s_%s_PRESENT) {\n" % (keyupperunderscore, ieupperunderscore))
|
||||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
f.write(" if ((ie = %s_new_ie(%s_ProtocolIE_ID_%s,\n" % (fileprefix, fileprefix_first_upper, re.sub('-', '_', ie[0])))
|
||||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
f.write(" %s_Criticality_%s,\n" % (fileprefix_first_upper, ie[1]))
|
||||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||||
f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
f.write(" &%s->%s)) == NULL) {\n" % (lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
||||||
f.write(" return -1;\n")
|
f.write(" return -1;\n")
|
||||||
@@ -511,8 +514,8 @@ for key in iesDefs:
|
|||||||
f.write(" memset(&%s, 0, sizeof(%s_t));\n" % (ienamefirstwordlower, ietypeunderscore))
|
f.write(" memset(&%s, 0, sizeof(%s_t));\n" % (ienamefirstwordlower, ietypeunderscore))
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.write(" if (%s_encode_%s(&%s, &%s->%s) < 0) return -1;\n" % (fileprefix, ietypeunderscore.lower(), ienamefirstwordlower, lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
f.write(" if (%s_encode_%s(&%s, &%s->%s) < 0) return -1;\n" % (fileprefix, ietypeunderscore.lower(), ienamefirstwordlower, lowerFirstCamelWord(re.sub('-', '_', key)), ienamefirstwordlower))
|
||||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
f.write(" if ((ie = %s_new_ie(%s_ProtocolIE_ID_%s,\n" % (fileprefix, fileprefix_first_upper, re.sub('-', '_', ie[0])))
|
||||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
f.write(" %s_Criticality_%s,\n" % (fileprefix_first_upper, ie[1]))
|
||||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||||
if ie[2] in ieofielist.keys():
|
if ie[2] in ieofielist.keys():
|
||||||
f.write(" &%s)) == NULL) {\n" % (ienamefirstwordlower))
|
f.write(" &%s)) == NULL) {\n" % (ienamefirstwordlower))
|
||||||
@@ -546,14 +549,14 @@ for (key, value) in iesDefs.items():
|
|||||||
f.write(" %sIEs_t *%sIEs) {\n\n" % (re.sub('-', '_', i), lowerFirstCamelWord(re.sub('-', '_', i))))
|
f.write(" %sIEs_t *%sIEs) {\n\n" % (re.sub('-', '_', i), lowerFirstCamelWord(re.sub('-', '_', i))))
|
||||||
f.write(" int i;\n")
|
f.write(" int i;\n")
|
||||||
|
|
||||||
f.write(" IE_t *ie;\n\n")
|
f.write(" %s_IE_t *ie;\n\n" % (fileprefix_first_upper))
|
||||||
|
|
||||||
f.write(" assert(%s != NULL);\n" % (firstwordlower));
|
f.write(" assert(%s != NULL);\n" % (firstwordlower));
|
||||||
f.write(" assert(%sIEs != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', i))));
|
f.write(" assert(%sIEs != NULL);\n\n" % (lowerFirstCamelWord(re.sub('-', '_', i))));
|
||||||
|
|
||||||
f.write(" for (i = 0; i < %sIEs->%s.count; i++) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
f.write(" for (i = 0; i < %sIEs->%s.count; i++) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
||||||
f.write(" if ((ie = %s_new_ie(ProtocolIE_ID_%s,\n" % (fileprefix, re.sub('-', '_', ie[0])))
|
f.write(" if ((ie = %s_new_ie(%s_ProtocolIE_ID_%s,\n" % (fileprefix, fileprefix_first_upper, re.sub('-', '_', ie[0])))
|
||||||
f.write(" Criticality_%s,\n" % (ie[1]))
|
f.write(" %s_Criticality_%s,\n" % (fileprefix_first_upper, ie[1]))
|
||||||
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
f.write(" &asn_DEF_%s,\n" % (ietypeunderscore))
|
||||||
f.write(" %sIEs->%s.array[i])) == NULL) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
f.write(" %sIEs->%s.array[i])) == NULL) {\n" % (firstwordlower, re.sub('IEs', '', lowerFirstCamelWord(re.sub('-', '_', key)))))
|
||||||
f.write(" return -1;\n")
|
f.write(" return -1;\n")
|
||||||
@@ -644,8 +647,8 @@ for (key, value) in iesDefs.items():
|
|||||||
f.write(" }\n")
|
f.write(" }\n")
|
||||||
else:
|
else:
|
||||||
f.write(" fprintf(file, \"<%s-PDU>\\n\");\n" % (fileprefix.upper()))
|
f.write(" fprintf(file, \"<%s-PDU>\\n\");\n" % (fileprefix.upper()))
|
||||||
f.write(" xer_encode_local(&asn_DEF_Criticality, &message_p->criticality, cb, app_key, 1);\n")
|
f.write(" xer_encode_local(&asn_DEF_%s_Criticality, &message_p->criticality, cb, app_key, 1);\n" % fileprefix_first_upper)
|
||||||
f.write(" xer_encode_local(&asn_DEF_ProcedureCode, &message_p->procedureCode, cb, app_key, 1);\n")
|
f.write(" xer_encode_local(&asn_DEF_%s_ProcedureCode, &message_p->procedureCode, cb, app_key, 1);\n" % fileprefix_first_upper)
|
||||||
f.write(" fprintf(file, \" <%s>\\n\");\n" % (key))
|
f.write(" fprintf(file, \" <%s>\\n\");\n" % (key))
|
||||||
|
|
||||||
for ie in iesDefs[key]["ies"]:
|
for ie in iesDefs[key]["ies"]:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -73,6 +73,8 @@ $(S1AP_OBJDIR)/s1ap_asn1regen.stamp: $(ASN1DIR)/$(ASN1RELDIR)/S1AP-CommonDataTyp
|
|||||||
(cd $(ASN1MESSAGESDIR) && asn1c -fhave_native64 -gen-PER $^)
|
(cd $(ASN1MESSAGESDIR) && asn1c -fhave_native64 -gen-PER $^)
|
||||||
echo Timestamp > $@
|
echo Timestamp > $@
|
||||||
|
|
||||||
|
.INTERMEDIATE = $(S1AP_OBJDIR)/s1ap_ieregen.stamp $(S1AP_OBJDIR)/s1ap_asn1regen.stamp
|
||||||
|
|
||||||
libs1ap.a: $(S1AP_OBJDIR)/s1ap_ieregen.stamp $(S1AP_OBJDIR)/s1ap_asn1regen.stamp $(libs1ap_OBJECTS)
|
libs1ap.a: $(S1AP_OBJDIR)/s1ap_ieregen.stamp $(S1AP_OBJDIR)/s1ap_asn1regen.stamp $(libs1ap_OBJECTS)
|
||||||
@echo Creating S1AP archive
|
@echo Creating S1AP archive
|
||||||
@$(AR) rcs $@ $(libs1ap_OBJECTS)
|
@$(AR) rcs $@ $(libs1ap_OBJECTS)
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ inline void ASN_DEBUG(const char *fmt, ...)
|
|||||||
ssize_t s1ap_generate_initiating_message(
|
ssize_t s1ap_generate_initiating_message(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr)
|
void *sptr)
|
||||||
{
|
{
|
||||||
@@ -96,8 +96,8 @@ ssize_t s1ap_generate_initiating_message(
|
|||||||
ssize_t s1ap_generate_successfull_outcome(
|
ssize_t s1ap_generate_successfull_outcome(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr)
|
void *sptr)
|
||||||
{
|
{
|
||||||
@@ -131,8 +131,8 @@ ssize_t s1ap_generate_successfull_outcome(
|
|||||||
ssize_t s1ap_generate_unsuccessfull_outcome(
|
ssize_t s1ap_generate_unsuccessfull_outcome(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr)
|
void *sptr)
|
||||||
{
|
{
|
||||||
@@ -163,19 +163,19 @@ ssize_t s1ap_generate_unsuccessfull_outcome(
|
|||||||
return encoded;
|
return encoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
IE_t *s1ap_new_ie(
|
S1ap_IE_t *s1ap_new_ie(
|
||||||
ProtocolIE_ID_t id,
|
S1ap_ProtocolIE_ID_t id,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *type,
|
asn_TYPE_descriptor_t *type,
|
||||||
void *sptr)
|
void *sptr)
|
||||||
{
|
{
|
||||||
IE_t *buff;
|
S1ap_IE_t *buff;
|
||||||
|
|
||||||
if ((buff = malloc(sizeof(IE_t))) == NULL) {
|
if ((buff = malloc(sizeof(S1ap_IE_t))) == NULL) {
|
||||||
// Possible error on malloc
|
// Possible error on malloc
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
memset((void *)buff, 0, sizeof(IE_t));
|
memset((void *)buff, 0, sizeof(S1ap_IE_t));
|
||||||
|
|
||||||
buff->id = id;
|
buff->id = id;
|
||||||
buff->criticality = criticality;
|
buff->criticality = criticality;
|
||||||
@@ -187,7 +187,7 @@ IE_t *s1ap_new_ie(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (asn1_xer_print)
|
if (asn1_xer_print)
|
||||||
if (xer_fprint(stdout, &asn_DEF_IE, buff) < 0) {
|
if (xer_fprint(stdout, &asn_DEF_S1ap_IE, buff) < 0) {
|
||||||
free(buff);
|
free(buff);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ IE_t *s1ap_new_ie(
|
|||||||
return buff;
|
return buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
void s1ap_handle_criticality(e_Criticality criticality)
|
void s1ap_handle_criticality(S1ap_Criticality_t criticality)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+339
-339
@@ -48,342 +48,342 @@ extern int asn_debug;
|
|||||||
inline void ASN_DEBUG(const char *fmt, ...);
|
inline void ASN_DEBUG(const char *fmt, ...);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "Criticality.h"
|
#include "S1ap-Criticality.h"
|
||||||
#include "Presence.h"
|
#include "S1ap-Presence.h"
|
||||||
#include "PrivateIE-ID.h"
|
#include "S1ap-PrivateIE-ID.h"
|
||||||
#include "ProcedureCode.h"
|
#include "S1ap-ProcedureCode.h"
|
||||||
#include "ProtocolExtensionID.h"
|
#include "S1ap-ProtocolExtensionID.h"
|
||||||
#include "ProtocolIE-ID.h"
|
#include "S1ap-ProtocolIE-ID.h"
|
||||||
#include "TriggeringMessage.h"
|
#include "S1ap-TriggeringMessage.h"
|
||||||
#include "AllocationAndRetentionPriority.h"
|
#include "S1ap-AllocationAndRetentionPriority.h"
|
||||||
#include "Bearers-SubjectToStatusTransfer-List.h"
|
#include "S1ap-Bearers-SubjectToStatusTransfer-List.h"
|
||||||
#include "Bearers-SubjectToStatusTransfer-Item.h"
|
#include "S1ap-Bearers-SubjectToStatusTransfer-Item.h"
|
||||||
#include "BitRate.h"
|
#include "S1ap-BitRate.h"
|
||||||
#include "BPLMNs.h"
|
#include "S1ap-BPLMNs.h"
|
||||||
#include "BroadcastCompletedAreaList.h"
|
#include "S1ap-BroadcastCompletedAreaList.h"
|
||||||
#include "Cause.h"
|
#include "S1ap-Cause.h"
|
||||||
#include "CauseMisc.h"
|
#include "S1ap-CauseMisc.h"
|
||||||
#include "CauseProtocol.h"
|
#include "S1ap-CauseProtocol.h"
|
||||||
#include "CauseRadioNetwork.h"
|
#include "S1ap-CauseRadioNetwork.h"
|
||||||
#include "CauseTransport.h"
|
#include "S1ap-CauseTransport.h"
|
||||||
#include "CauseNas.h"
|
#include "S1ap-CauseNas.h"
|
||||||
#include "CellIdentity.h"
|
#include "S1ap-CellIdentity.h"
|
||||||
#include "CellID-Broadcast.h"
|
#include "S1ap-CellID-Broadcast.h"
|
||||||
#include "CellID-Broadcast-Item.h"
|
#include "S1ap-CellID-Broadcast-Item.h"
|
||||||
#include "Cdma2000PDU.h"
|
#include "S1ap-Cdma2000PDU.h"
|
||||||
#include "Cdma2000RATType.h"
|
#include "S1ap-Cdma2000RATType.h"
|
||||||
#include "Cdma2000SectorID.h"
|
#include "S1ap-Cdma2000SectorID.h"
|
||||||
#include "Cdma2000HOStatus.h"
|
#include "S1ap-Cdma2000HOStatus.h"
|
||||||
#include "Cdma2000HORequiredIndication.h"
|
#include "S1ap-Cdma2000HORequiredIndication.h"
|
||||||
#include "Cdma2000OneXSRVCCInfo.h"
|
#include "S1ap-Cdma2000OneXSRVCCInfo.h"
|
||||||
#include "Cdma2000OneXMEID.h"
|
#include "S1ap-Cdma2000OneXMEID.h"
|
||||||
#include "Cdma2000OneXMSI.h"
|
#include "S1ap-Cdma2000OneXMSI.h"
|
||||||
#include "Cdma2000OneXPilot.h"
|
#include "S1ap-Cdma2000OneXPilot.h"
|
||||||
#include "Cdma2000OneXRAND.h"
|
#include "S1ap-Cdma2000OneXRAND.h"
|
||||||
#include "Cell-Size.h"
|
#include "S1ap-Cell-Size.h"
|
||||||
#include "CellType.h"
|
#include "S1ap-CellType.h"
|
||||||
#include "CGI.h"
|
#include "S1ap-CGI.h"
|
||||||
#include "CI.h"
|
#include "S1ap-CI.h"
|
||||||
#include "CNDomain.h"
|
#include "S1ap-CNDomain.h"
|
||||||
#include "CSFallbackIndicator.h"
|
#include "S1ap-CSFallbackIndicator.h"
|
||||||
#include "CSG-Id.h"
|
#include "S1ap-CSG-Id.h"
|
||||||
#include "CSG-IdList.h"
|
#include "S1ap-CSG-IdList.h"
|
||||||
#include "CSG-IdList-Item.h"
|
#include "S1ap-CSG-IdList-Item.h"
|
||||||
#include "COUNTvalue.h"
|
#include "S1ap-COUNTvalue.h"
|
||||||
#include "CriticalityDiagnostics.h"
|
#include "S1ap-DataCodingScheme.h"
|
||||||
#include "CriticalityDiagnostics-IE-List.h"
|
#include "S1ap-DL-Forwarding.h"
|
||||||
#include "CriticalityDiagnostics-IE-Item.h"
|
#include "S1ap-Direct-Forwarding-Path-Availability.h"
|
||||||
#include "DataCodingScheme.h"
|
#include "S1ap-ECGIList.h"
|
||||||
#include "DL-Forwarding.h"
|
#include "S1ap-EmergencyAreaIDList.h"
|
||||||
#include "Direct-Forwarding-Path-Availability.h"
|
#include "S1ap-EmergencyAreaID.h"
|
||||||
#include "ECGIList.h"
|
#include "S1ap-EmergencyAreaID-Broadcast.h"
|
||||||
#include "EmergencyAreaIDList.h"
|
#include "S1ap-EmergencyAreaID-Broadcast-Item.h"
|
||||||
#include "EmergencyAreaID.h"
|
#include "S1ap-CompletedCellinEAI.h"
|
||||||
#include "EmergencyAreaID-Broadcast.h"
|
#include "S1ap-CompletedCellinEAI-Item.h"
|
||||||
#include "EmergencyAreaID-Broadcast-Item.h"
|
#include "S1ap-ENB-ID.h"
|
||||||
#include "CompletedCellinEAI.h"
|
#include "S1ap-GERAN-Cell-ID.h"
|
||||||
#include "CompletedCellinEAI-Item.h"
|
#include "S1ap-Global-ENB-ID.h"
|
||||||
#include "ENB-ID.h"
|
#include "S1ap-ENB-StatusTransfer-TransparentContainer.h"
|
||||||
#include "GERAN-Cell-ID.h"
|
#include "S1ap-ENBname.h"
|
||||||
#include "Global-ENB-ID.h"
|
#include "S1ap-ENBX2TLAs.h"
|
||||||
#include "ENB-StatusTransfer-TransparentContainer.h"
|
#include "S1ap-EncryptionAlgorithms.h"
|
||||||
#include "ENB-UE-S1AP-ID.h"
|
#include "S1ap-EPLMNs.h"
|
||||||
#include "ENBname.h"
|
#include "S1ap-EventType.h"
|
||||||
#include "ENBX2TLAs.h"
|
#include "S1ap-E-RAB-ID.h"
|
||||||
#include "EncryptionAlgorithms.h"
|
#include "S1ap-E-RABInformationList.h"
|
||||||
#include "EPLMNs.h"
|
#include "S1ap-E-RABInformationListItem.h"
|
||||||
#include "EventType.h"
|
#include "S1ap-E-RABList.h"
|
||||||
#include "E-RAB-ID.h"
|
#include "S1ap-E-RABItem.h"
|
||||||
#include "E-RABInformationList.h"
|
#include "S1ap-E-RABLevelQoSParameters.h"
|
||||||
#include "E-RABInformationListItem.h"
|
#include "S1ap-EUTRAN-CGI.h"
|
||||||
#include "E-RABList.h"
|
#include "S1ap-ExtendedRNC-ID.h"
|
||||||
#include "E-RABItem.h"
|
#include "S1ap-ForbiddenInterRATs.h"
|
||||||
#include "E-RABLevelQoSParameters.h"
|
#include "S1ap-ForbiddenTAs.h"
|
||||||
#include "EUTRAN-CGI.h"
|
#include "S1ap-ForbiddenTAs-Item.h"
|
||||||
#include "ExtendedRNC-ID.h"
|
#include "S1ap-ForbiddenTACs.h"
|
||||||
#include "ForbiddenInterRATs.h"
|
#include "S1ap-ForbiddenLAs.h"
|
||||||
#include "ForbiddenTAs.h"
|
#include "S1ap-ForbiddenLAs-Item.h"
|
||||||
#include "ForbiddenTAs-Item.h"
|
#include "S1ap-ForbiddenLACs.h"
|
||||||
#include "ForbiddenTACs.h"
|
#include "S1ap-GBR-QosInformation.h"
|
||||||
#include "ForbiddenLAs.h"
|
#include "S1ap-GTP-TEID.h"
|
||||||
#include "ForbiddenLAs-Item.h"
|
#include "S1ap-GUMMEI.h"
|
||||||
#include "ForbiddenLACs.h"
|
#include "S1ap-HandoverRestrictionList.h"
|
||||||
#include "GBR-QosInformation.h"
|
#include "S1ap-HandoverType.h"
|
||||||
#include "GTP-TEID.h"
|
#include "S1ap-HFN.h"
|
||||||
#include "GUMMEI.h"
|
#include "S1ap-IMSI.h"
|
||||||
#include "HandoverRestrictionList.h"
|
#include "S1ap-IntegrityProtectionAlgorithms.h"
|
||||||
#include "HandoverType.h"
|
#include "S1ap-InterfacesToTrace.h"
|
||||||
#include "HFN.h"
|
#include "S1ap-LAC.h"
|
||||||
#include "IMSI.h"
|
#include "S1ap-LAI.h"
|
||||||
#include "IntegrityProtectionAlgorithms.h"
|
#include "S1ap-LastVisitedCell-Item.h"
|
||||||
#include "InterfacesToTrace.h"
|
#include "S1ap-LastVisitedEUTRANCellInformation.h"
|
||||||
#include "LAC.h"
|
#include "S1ap-LastVisitedUTRANCellInformation.h"
|
||||||
#include "LAI.h"
|
#include "S1ap-LastVisitedGERANCellInformation.h"
|
||||||
#include "LastVisitedCell-Item.h"
|
#include "S1ap-L3-Information.h"
|
||||||
#include "LastVisitedEUTRANCellInformation.h"
|
#include "S1ap-MessageIdentifier.h"
|
||||||
#include "LastVisitedUTRANCellInformation.h"
|
#include "S1ap-MMEname.h"
|
||||||
#include "LastVisitedGERANCellInformation.h"
|
#include "S1ap-MME-Group-ID.h"
|
||||||
#include "L3-Information.h"
|
#include "S1ap-MME-Code.h"
|
||||||
#include "MessageIdentifier.h"
|
#include "S1ap-M-TMSI.h"
|
||||||
#include "MMEname.h"
|
#include "S1ap-MSClassmark2.h"
|
||||||
#include "MME-Group-ID.h"
|
#include "S1ap-MSClassmark3.h"
|
||||||
#include "MME-Code.h"
|
#include "S1ap-NAS-PDU.h"
|
||||||
#include "MME-UE-S1AP-ID.h"
|
#include "S1ap-NASSecurityParametersfromE-UTRAN.h"
|
||||||
#include "M-TMSI.h"
|
#include "S1ap-NASSecurityParameterstoE-UTRAN.h"
|
||||||
#include "MSClassmark2.h"
|
#include "S1ap-NumberofBroadcastRequest.h"
|
||||||
#include "MSClassmark3.h"
|
#include "S1ap-NumberOfBroadcasts.h"
|
||||||
#include "NAS-PDU.h"
|
#include "S1ap-OldBSS-ToNewBSS-Information.h"
|
||||||
#include "NASSecurityParametersfromE-UTRAN.h"
|
#include "S1ap-OverloadAction.h"
|
||||||
#include "NASSecurityParameterstoE-UTRAN.h"
|
#include "S1ap-OverloadResponse.h"
|
||||||
#include "NumberofBroadcastRequest.h"
|
#include "S1ap-PagingDRX.h"
|
||||||
#include "NumberOfBroadcasts.h"
|
#include "S1ap-PDCP-SN.h"
|
||||||
#include "OldBSS-ToNewBSS-Information.h"
|
#include "S1ap-PLMNidentity.h"
|
||||||
#include "OverloadAction.h"
|
#include "S1ap-Pre-emptionCapability.h"
|
||||||
#include "OverloadResponse.h"
|
#include "S1ap-Pre-emptionVulnerability.h"
|
||||||
#include "PagingDRX.h"
|
#include "S1ap-PriorityLevel.h"
|
||||||
#include "PDCP-SN.h"
|
#include "S1ap-QCI.h"
|
||||||
#include "PLMNidentity.h"
|
#include "S1ap-ReceiveStatusofULPDCPSDUs.h"
|
||||||
#include "Pre-emptionCapability.h"
|
#include "S1ap-RelativeMMECapacity.h"
|
||||||
#include "Pre-emptionVulnerability.h"
|
#include "S1ap-RAC.h"
|
||||||
#include "PriorityLevel.h"
|
#include "S1ap-RequestType.h"
|
||||||
#include "QCI.h"
|
#include "S1ap-RIMTransfer.h"
|
||||||
#include "ReceiveStatusofULPDCPSDUs.h"
|
#include "S1ap-RIMInformation.h"
|
||||||
#include "RelativeMMECapacity.h"
|
#include "S1ap-RIMRoutingAddress.h"
|
||||||
#include "RAC.h"
|
#include "S1ap-ReportArea.h"
|
||||||
#include "RequestType.h"
|
#include "S1ap-RepetitionPeriod.h"
|
||||||
#include "RIMTransfer.h"
|
#include "S1ap-RNC-ID.h"
|
||||||
#include "RIMInformation.h"
|
#include "S1ap-RRC-Container.h"
|
||||||
#include "RIMRoutingAddress.h"
|
#include "S1ap-RRC-Establishment-Cause.h"
|
||||||
#include "ReportArea.h"
|
#include "S1ap-SecurityKey.h"
|
||||||
#include "RepetitionPeriod.h"
|
#include "S1ap-SecurityContext.h"
|
||||||
#include "RNC-ID.h"
|
#include "S1ap-SerialNumber.h"
|
||||||
#include "RRC-Container.h"
|
#include "S1ap-SONInformation.h"
|
||||||
#include "RRC-Establishment-Cause.h"
|
#include "S1ap-SONInformationRequest.h"
|
||||||
#include "SecurityKey.h"
|
#include "S1ap-SONInformationReply.h"
|
||||||
#include "SecurityContext.h"
|
#include "S1ap-SONConfigurationTransfer.h"
|
||||||
#include "SerialNumber.h"
|
#include "S1ap-Source-ToTarget-TransparentContainer.h"
|
||||||
#include "SONInformation.h"
|
#include "S1ap-SourceBSS-ToTargetBSS-TransparentContainer.h"
|
||||||
#include "SONInformationRequest.h"
|
#include "S1ap-SourceeNB-ID.h"
|
||||||
#include "SONInformationReply.h"
|
#include "S1ap-SRVCCOperationPossible.h"
|
||||||
#include "SONConfigurationTransfer.h"
|
#include "S1ap-SRVCCHOIndication.h"
|
||||||
#include "Source-ToTarget-TransparentContainer.h"
|
#include "S1ap-SourceeNB-ToTargeteNB-TransparentContainer.h"
|
||||||
#include "SourceBSS-ToTargetBSS-TransparentContainer.h"
|
#include "S1ap-SourceRNC-ToTargetRNC-TransparentContainer.h"
|
||||||
#include "SourceeNB-ID.h"
|
#include "S1ap-ServedGUMMEIs.h"
|
||||||
#include "SRVCCOperationPossible.h"
|
#include "S1ap-ServedGUMMEIsItem.h"
|
||||||
#include "SRVCCHOIndication.h"
|
#include "S1ap-ServedGroupIDs.h"
|
||||||
#include "SourceeNB-ToTargeteNB-TransparentContainer.h"
|
#include "S1ap-ServedMMECs.h"
|
||||||
#include "SourceRNC-ToTargetRNC-TransparentContainer.h"
|
#include "S1ap-ServedPLMNs.h"
|
||||||
#include "ServedGUMMEIs.h"
|
#include "S1ap-SubscriberProfileIDforRFP.h"
|
||||||
#include "ServedGUMMEIsItem.h"
|
#include "S1ap-SupportedTAs.h"
|
||||||
#include "ServedGroupIDs.h"
|
#include "S1ap-SupportedTAs-Item.h"
|
||||||
#include "ServedMMECs.h"
|
#include "S1ap-S-TMSI.h"
|
||||||
#include "ServedPLMNs.h"
|
#include "S1ap-TAC.h"
|
||||||
#include "SubscriberProfileIDforRFP.h"
|
#include "S1ap-TAIItem.h"
|
||||||
#include "SupportedTAs.h"
|
#include "S1ap-TAIList.h"
|
||||||
#include "SupportedTAs-Item.h"
|
#include "S1ap-TAIListforWarning.h"
|
||||||
#include "S-TMSI.h"
|
#include "S1ap-TAI.h"
|
||||||
#include "TAC.h"
|
#include "S1ap-TAI-Broadcast.h"
|
||||||
#include "TAIItem.h"
|
#include "S1ap-TAI-Broadcast-Item.h"
|
||||||
#include "TAIList.h"
|
#include "S1ap-CompletedCellinTAI.h"
|
||||||
#include "TAIListforWarning.h"
|
#include "S1ap-CompletedCellinTAI-Item.h"
|
||||||
#include "TAI.h"
|
#include "S1ap-TargetID.h"
|
||||||
#include "TAI-Broadcast.h"
|
#include "S1ap-TargeteNB-ID.h"
|
||||||
#include "TAI-Broadcast-Item.h"
|
#include "S1ap-TargetRNC-ID.h"
|
||||||
#include "CompletedCellinTAI.h"
|
#include "S1ap-TargeteNB-ToSourceeNB-TransparentContainer.h"
|
||||||
#include "CompletedCellinTAI-Item.h"
|
#include "S1ap-Target-ToSource-TransparentContainer.h"
|
||||||
#include "TBCD-STRING.h"
|
#include "S1ap-TargetRNC-ToSourceRNC-TransparentContainer.h"
|
||||||
#include "TargetID.h"
|
#include "S1ap-TargetBSS-ToSourceBSS-TransparentContainer.h"
|
||||||
#include "TargeteNB-ID.h"
|
#include "S1ap-TimeToWait.h"
|
||||||
#include "TargetRNC-ID.h"
|
#include "S1ap-Time-UE-StayedInCell.h"
|
||||||
#include "TargeteNB-ToSourceeNB-TransparentContainer.h"
|
#include "S1ap-TransportLayerAddress.h"
|
||||||
#include "Target-ToSource-TransparentContainer.h"
|
#include "S1ap-TraceActivation.h"
|
||||||
#include "TargetRNC-ToSourceRNC-TransparentContainer.h"
|
#include "S1ap-TraceDepth.h"
|
||||||
#include "TargetBSS-ToSourceBSS-TransparentContainer.h"
|
#include "S1ap-E-UTRAN-Trace-ID.h"
|
||||||
#include "TimeToWait.h"
|
#include "S1ap-TypeOfError.h"
|
||||||
#include "Time-UE-StayedInCell.h"
|
#include "S1ap-UEAggregateMaximumBitrate.h"
|
||||||
#include "TransportLayerAddress.h"
|
#include "S1ap-UE-associatedLogicalS1-ConnectionItem.h"
|
||||||
#include "TraceActivation.h"
|
#include "S1ap-UEIdentityIndexValue.h"
|
||||||
#include "TraceDepth.h"
|
#include "S1ap-UE-HistoryInformation.h"
|
||||||
#include "E-UTRAN-Trace-ID.h"
|
#include "S1ap-UEPagingID.h"
|
||||||
#include "TypeOfError.h"
|
#include "S1ap-UERadioCapability.h"
|
||||||
#include "UEAggregateMaximumBitrate.h"
|
#include "S1ap-UESecurityCapabilities.h"
|
||||||
#include "UE-S1AP-IDs.h"
|
#include "S1ap-WarningAreaList.h"
|
||||||
#include "UE-S1AP-ID-pair.h"
|
#include "S1ap-WarningType.h"
|
||||||
#include "UE-associatedLogicalS1-ConnectionItem.h"
|
#include "S1ap-WarningSecurityInfo.h"
|
||||||
#include "UEIdentityIndexValue.h"
|
#include "S1ap-WarningMessageContents.h"
|
||||||
#include "UE-HistoryInformation.h"
|
#include "S1ap-X2TNLConfigurationInfo.h"
|
||||||
#include "UEPagingID.h"
|
#include "S1ap-CriticalityDiagnostics.h"
|
||||||
#include "UERadioCapability.h"
|
#include "S1ap-CriticalityDiagnostics-IE-List.h"
|
||||||
#include "UESecurityCapabilities.h"
|
#include "S1ap-CriticalityDiagnostics-IE-Item.h"
|
||||||
#include "WarningAreaList.h"
|
#include "S1ap-ResetType.h"
|
||||||
#include "WarningType.h"
|
#include "S1ap-Inter-SystemInformationTransferType.h"
|
||||||
#include "WarningSecurityInfo.h"
|
#include "S1ap-UE-S1AP-IDs.h"
|
||||||
#include "WarningMessageContents.h"
|
#include "S1ap-UE-S1AP-ID-pair.h"
|
||||||
#include "X2TNLConfigurationInfo.h"
|
#include "S1ap-MME-UE-S1AP-ID.h"
|
||||||
|
#include "S1ap-ENB-UE-S1AP-ID.h"
|
||||||
|
#include "S1ap-TBCD-STRING.h"
|
||||||
|
#include "S1ap-InitiatingMessage.h"
|
||||||
|
#include "S1ap-SuccessfulOutcome.h"
|
||||||
|
#include "S1ap-UnsuccessfulOutcome.h"
|
||||||
|
#include "S1ap-HandoverRequired.h"
|
||||||
|
#include "S1ap-HandoverCommand.h"
|
||||||
|
#include "S1ap-HandoverNotify.h"
|
||||||
|
#include "S1ap-HandoverPreparationFailure.h"
|
||||||
|
#include "S1ap-HandoverRequest.h"
|
||||||
|
#include "S1ap-HandoverRequestAcknowledge.h"
|
||||||
|
#include "S1ap-HandoverFailure.h"
|
||||||
|
#include "S1ap-PathSwitchRequest.h"
|
||||||
|
#include "S1ap-PathSwitchRequestAcknowledge.h"
|
||||||
|
#include "S1ap-PathSwitchRequestFailure.h"
|
||||||
|
#include "S1ap-E-RABSetupRequest.h"
|
||||||
|
#include "S1ap-E-RABSetupResponse.h"
|
||||||
|
#include "S1ap-E-RABModifyRequest.h"
|
||||||
|
#include "S1ap-E-RABModifyResponse.h"
|
||||||
|
#include "S1ap-E-RABReleaseIndication.h"
|
||||||
|
#include "S1ap-E-RABReleaseCommand.h"
|
||||||
|
#include "S1ap-E-RABReleaseResponse.h"
|
||||||
|
#include "S1ap-InitialContextSetupRequest.h"
|
||||||
|
#include "S1ap-InitialContextSetupResponse.h"
|
||||||
|
#include "S1ap-InitialContextSetupFailure.h"
|
||||||
|
#include "S1ap-UEContextReleaseRequest.h"
|
||||||
|
#include "S1ap-Paging.h"
|
||||||
|
#include "S1ap-DownlinkNASTransport.h"
|
||||||
|
#include "S1ap-InitialUEMessage.h"
|
||||||
|
#include "S1ap-UplinkNASTransport.h"
|
||||||
|
#include "S1ap-NASNonDeliveryIndication.h"
|
||||||
|
#include "S1ap-HandoverCancel.h"
|
||||||
|
#include "S1ap-HandoverCancelAcknowledge.h"
|
||||||
|
#include "S1ap-Reset.h"
|
||||||
|
#include "S1ap-ResetAcknowledge.h"
|
||||||
|
#include "S1ap-S1SetupResponse.h"
|
||||||
|
#include "S1ap-S1SetupRequest.h"
|
||||||
|
#include "S1ap-S1SetupFailure.h"
|
||||||
|
#include "S1ap-ErrorIndication.h"
|
||||||
|
#include "S1ap-ENBConfigurationUpdate.h"
|
||||||
|
#include "S1ap-ENBConfigurationUpdateAcknowledge.h"
|
||||||
|
#include "S1ap-ENBConfigurationUpdateFailure.h"
|
||||||
|
#include "S1ap-MMEConfigurationUpdate.h"
|
||||||
|
#include "S1ap-MMEConfigurationUpdateAcknowledge.h"
|
||||||
|
#include "S1ap-MMEConfigurationUpdateFailure.h"
|
||||||
|
#include "S1ap-DownlinkS1cdma2000tunneling.h"
|
||||||
|
#include "S1ap-UplinkS1cdma2000tunneling.h"
|
||||||
|
#include "S1ap-UEContextModificationRequest.h"
|
||||||
|
#include "S1ap-UEContextModificationResponse.h"
|
||||||
|
#include "S1ap-UEContextModificationFailure.h"
|
||||||
|
#include "S1ap-UECapabilityInfoIndication.h"
|
||||||
|
#include "S1ap-UEContextReleaseCommand.h"
|
||||||
|
#include "S1ap-UEContextReleaseComplete.h"
|
||||||
|
#include "S1ap-ENBStatusTransfer.h"
|
||||||
|
#include "S1ap-MMEStatusTransfer.h"
|
||||||
|
#include "S1ap-DeactivateTrace.h"
|
||||||
|
#include "S1ap-TraceStart.h"
|
||||||
|
#include "S1ap-TraceFailureIndication.h"
|
||||||
|
#include "S1ap-CellTrafficTrace.h"
|
||||||
|
#include "S1ap-LocationReportingControl.h"
|
||||||
|
#include "S1ap-LocationReportingFailureIndication.h"
|
||||||
|
#include "S1ap-LocationReport.h"
|
||||||
|
#include "S1ap-OverloadStart.h"
|
||||||
|
#include "S1ap-OverloadStop.h"
|
||||||
|
#include "S1ap-WriteReplaceWarningRequest.h"
|
||||||
|
#include "S1ap-WriteReplaceWarningResponse.h"
|
||||||
|
#include "S1ap-ENBDirectInformationTransfer.h"
|
||||||
|
#include "S1ap-MMEDirectInformationTransfer.h"
|
||||||
|
#include "S1ap-ENBConfigurationTransfer.h"
|
||||||
|
#include "S1ap-MMEConfigurationTransfer.h"
|
||||||
|
#include "S1ap-PrivateMessage.h"
|
||||||
|
#include "S1ap-E-RABReleaseItemBearerRelComp.h"
|
||||||
|
#include "S1ap-E-RABToBeSwitchedDLList.h"
|
||||||
|
#include "S1ap-E-RABToBeSwitchedDLItem.h"
|
||||||
|
#include "S1ap-E-RABToBeSwitchedULList.h"
|
||||||
|
#include "S1ap-E-RABToBeSwitchedULItem.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupListBearerSUReq.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupItemBearerSUReq.h"
|
||||||
|
#include "S1ap-E-RABDataForwardingList.h"
|
||||||
|
#include "S1ap-E-RABDataForwardingItem.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupListHOReq.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupItemHOReq.h"
|
||||||
|
#include "S1ap-E-RABAdmittedList.h"
|
||||||
|
#include "S1ap-E-RABAdmittedItem.h"
|
||||||
|
#include "S1ap-E-RABFailedToSetupListHOReqAck.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupItemCtxtSUReq.h"
|
||||||
|
#include "S1ap-E-RABToBeSetupListCtxtSUReq.h"
|
||||||
|
#include "S1ap-E-RABSetupItemBearerSURes.h"
|
||||||
|
#include "S1ap-E-RABSetupListBearerSURes.h"
|
||||||
|
#include "S1ap-E-RABSetupItemCtxtSURes.h"
|
||||||
|
#include "S1ap-E-RABSetupListCtxtSURes.h"
|
||||||
|
#include "S1ap-E-RABReleaseListBearerRelComp.h"
|
||||||
|
#include "S1ap-E-RABModifyItemBearerModRes.h"
|
||||||
|
#include "S1ap-E-RABModifyListBearerModRes.h"
|
||||||
|
#include "S1ap-E-RABFailedToSetupItemHOReqAck.h"
|
||||||
|
#include "S1ap-E-RABFailedToSetupListHOReqAck.h"
|
||||||
|
#include "S1ap-E-RABToBeModifiedItemBearerModReq.h"
|
||||||
|
#include "S1ap-E-RABToBeModifiedListBearerModReq.h"
|
||||||
|
#include "S1ap-UE-associatedLogicalS1-ConnectionListResAck.h"
|
||||||
|
#include "S1ap-IE.h"
|
||||||
#include "S1AP-PDU.h"
|
#include "S1AP-PDU.h"
|
||||||
#include "InitiatingMessage.h"
|
|
||||||
#include "SuccessfulOutcome.h"
|
|
||||||
#include "UnsuccessfulOutcome.h"
|
|
||||||
#include "HandoverRequired.h"
|
|
||||||
#include "HandoverCommand.h"
|
|
||||||
#include "HandoverNotify.h"
|
|
||||||
#include "HandoverPreparationFailure.h"
|
|
||||||
#include "HandoverRequest.h"
|
|
||||||
#include "HandoverRequestAcknowledge.h"
|
|
||||||
#include "HandoverFailure.h"
|
|
||||||
#include "PathSwitchRequest.h"
|
|
||||||
#include "PathSwitchRequestAcknowledge.h"
|
|
||||||
#include "PathSwitchRequestFailure.h"
|
|
||||||
#include "E-RABSetupRequest.h"
|
|
||||||
#include "E-RABSetupResponse.h"
|
|
||||||
#include "E-RABModifyRequest.h"
|
|
||||||
#include "E-RABModifyResponse.h"
|
|
||||||
#include "E-RABReleaseIndication.h"
|
|
||||||
#include "E-RABReleaseCommand.h"
|
|
||||||
#include "E-RABReleaseResponse.h"
|
|
||||||
#include "InitialContextSetupRequest.h"
|
|
||||||
#include "InitialContextSetupResponse.h"
|
|
||||||
#include "InitialContextSetupFailure.h"
|
|
||||||
#include "UEContextReleaseRequest.h"
|
|
||||||
#include "Paging.h"
|
|
||||||
#include "DownlinkNASTransport.h"
|
|
||||||
#include "InitialUEMessage.h"
|
|
||||||
#include "UplinkNASTransport.h"
|
|
||||||
#include "NASNonDeliveryIndication.h"
|
|
||||||
#include "HandoverCancel.h"
|
|
||||||
#include "HandoverCancelAcknowledge.h"
|
|
||||||
#include "Reset.h"
|
|
||||||
#include "ResetType.h"
|
|
||||||
#include "ResetAcknowledge.h"
|
|
||||||
#include "S1SetupResponse.h"
|
|
||||||
#include "S1SetupRequest.h"
|
|
||||||
#include "S1SetupFailure.h"
|
|
||||||
#include "ErrorIndication.h"
|
|
||||||
#include "ENBConfigurationUpdate.h"
|
|
||||||
#include "ENBConfigurationUpdateAcknowledge.h"
|
|
||||||
#include "ENBConfigurationUpdateFailure.h"
|
|
||||||
#include "MMEConfigurationUpdate.h"
|
|
||||||
#include "MMEConfigurationUpdateAcknowledge.h"
|
|
||||||
#include "MMEConfigurationUpdateFailure.h"
|
|
||||||
#include "DownlinkS1cdma2000tunneling.h"
|
|
||||||
#include "UplinkS1cdma2000tunneling.h"
|
|
||||||
#include "UEContextModificationRequest.h"
|
|
||||||
#include "UEContextModificationResponse.h"
|
|
||||||
#include "UEContextModificationFailure.h"
|
|
||||||
#include "UECapabilityInfoIndication.h"
|
|
||||||
#include "UEContextReleaseCommand.h"
|
|
||||||
#include "UEContextReleaseComplete.h"
|
|
||||||
#include "ENBStatusTransfer.h"
|
|
||||||
#include "MMEStatusTransfer.h"
|
|
||||||
#include "DeactivateTrace.h"
|
|
||||||
#include "TraceStart.h"
|
|
||||||
#include "TraceFailureIndication.h"
|
|
||||||
#include "CellTrafficTrace.h"
|
|
||||||
#include "LocationReportingControl.h"
|
|
||||||
#include "LocationReportingFailureIndication.h"
|
|
||||||
#include "LocationReport.h"
|
|
||||||
#include "OverloadStart.h"
|
|
||||||
#include "OverloadStop.h"
|
|
||||||
#include "WriteReplaceWarningRequest.h"
|
|
||||||
#include "WriteReplaceWarningResponse.h"
|
|
||||||
#include "ENBDirectInformationTransfer.h"
|
|
||||||
#include "MMEDirectInformationTransfer.h"
|
|
||||||
#include "ENBConfigurationTransfer.h"
|
|
||||||
#include "MMEConfigurationTransfer.h"
|
|
||||||
#include "PrivateMessage.h"
|
|
||||||
#include "Inter-SystemInformationTransferType.h"
|
|
||||||
#include "E-RABReleaseItemBearerRelComp.h"
|
|
||||||
#include "E-RABToBeSwitchedDLList.h"
|
|
||||||
#include "E-RABToBeSwitchedDLItem.h"
|
|
||||||
#include "E-RABToBeSwitchedULList.h"
|
|
||||||
#include "E-RABToBeSwitchedULItem.h"
|
|
||||||
#include "E-RABToBeSetupListBearerSUReq.h"
|
|
||||||
#include "E-RABToBeSetupItemBearerSUReq.h"
|
|
||||||
#include "E-RABDataForwardingList.h"
|
|
||||||
#include "E-RABDataForwardingItem.h"
|
|
||||||
#include "E-RABToBeSetupListHOReq.h"
|
|
||||||
#include "E-RABToBeSetupItemHOReq.h"
|
|
||||||
#include "E-RABAdmittedList.h"
|
|
||||||
#include "E-RABAdmittedItem.h"
|
|
||||||
#include "E-RABFailedToSetupListHOReqAck.h"
|
|
||||||
#include "E-RABToBeSetupItemCtxtSUReq.h"
|
|
||||||
#include "E-RABToBeSetupListCtxtSUReq.h"
|
|
||||||
#include "E-RABSetupItemBearerSURes.h"
|
|
||||||
#include "E-RABSetupListBearerSURes.h"
|
|
||||||
#include "E-RABSetupItemCtxtSURes.h"
|
|
||||||
#include "E-RABSetupListCtxtSURes.h"
|
|
||||||
#include "E-RABReleaseListBearerRelComp.h"
|
|
||||||
#include "E-RABModifyItemBearerModRes.h"
|
|
||||||
#include "E-RABModifyListBearerModRes.h"
|
|
||||||
#include "E-RABFailedToSetupItemHOReqAck.h"
|
|
||||||
#include "E-RABFailedToSetupListHOReqAck.h"
|
|
||||||
#include "E-RABToBeModifiedItemBearerModReq.h"
|
|
||||||
#include "E-RABToBeModifiedListBearerModReq.h"
|
|
||||||
#include "UE-associatedLogicalS1-ConnectionListResAck.h"
|
|
||||||
#include "IE.h"
|
|
||||||
|
|
||||||
#if defined (UPDATE_RELEASE_9)
|
#if defined (UPDATE_RELEASE_9)
|
||||||
# include "BroadcastCancelledAreaList.h"
|
# include "S1ap-BroadcastCancelledAreaList.h"
|
||||||
# include "CancelledCellinEAI.h"
|
# include "S1ap-CancelledCellinEAI.h"
|
||||||
# include "CancelledCellinEAI-Item.h"
|
# include "S1ap-CancelledCellinEAI-Item.h"
|
||||||
# include "CancelledCellinTAI.h"
|
# include "S1ap-CancelledCellinTAI.h"
|
||||||
# include "CancelledCellinTAI-Item.h"
|
# include "S1ap-CancelledCellinTAI-Item.h"
|
||||||
# include "CellAccessMode.h"
|
# include "S1ap-CellAccessMode.h"
|
||||||
# include "CellID-Cancelled.h"
|
# include "S1ap-CellID-Cancelled.h"
|
||||||
# include "CellID-Cancelled-Item.h"
|
# include "S1ap-CellID-Cancelled-Item.h"
|
||||||
# include "ConcurrentWarningMessageIndicator.h"
|
# include "S1ap-ConcurrentWarningMessageIndicator.h"
|
||||||
# include "CSGMembershipStatus.h"
|
# include "S1ap-CSGMembershipStatus.h"
|
||||||
# include "Data-Forwarding-Not-Possible.h"
|
# include "S1ap-Data-Forwarding-Not-Possible.h"
|
||||||
# include "EmergencyAreaID-Cancelled.h"
|
# include "S1ap-EmergencyAreaID-Cancelled.h"
|
||||||
# include "EmergencyAreaID-Cancelled-Item.h"
|
# include "S1ap-EmergencyAreaID-Cancelled-Item.h"
|
||||||
# include "E-RABList.h"
|
# include "S1ap-E-RABList.h"
|
||||||
# include "EUTRANRoundTripDelayEstimationInfo.h"
|
# include "S1ap-EUTRANRoundTripDelayEstimationInfo.h"
|
||||||
# include "ExtendedRepetitionPeriod.h"
|
# include "S1ap-ExtendedRepetitionPeriod.h"
|
||||||
# include "LPPa-PDU.h"
|
# include "S1ap-LPPa-PDU.h"
|
||||||
# include "PS-ServiceNotAvailable.h"
|
# include "S1ap-PS-ServiceNotAvailable.h"
|
||||||
# include "Routing-ID.h"
|
# include "S1ap-Routing-ID.h"
|
||||||
# include "StratumLevel.h"
|
# include "S1ap-StratumLevel.h"
|
||||||
# include "SynchronizationStatus.h"
|
# include "S1ap-SynchronizationStatus.h"
|
||||||
# include "TimeSynchronizationInfo.h"
|
# include "S1ap-TimeSynchronizationInfo.h"
|
||||||
# include "TAI-Cancelled.h"
|
# include "S1ap-TAI-Cancelled.h"
|
||||||
# include "TAI-Cancelled-Item.h"
|
# include "S1ap-TAI-Cancelled-Item.h"
|
||||||
# include "KillRequest.h"
|
# include "S1ap-KillRequest.h"
|
||||||
# include "KillResponse.h"
|
# include "S1ap-KillResponse.h"
|
||||||
# include "DownlinkUEAssociatedLPPaTransport.h"
|
# include "S1ap-DownlinkUEAssociatedLPPaTransport.h"
|
||||||
# include "UplinkUEAssociatedLPPaTransport.h"
|
# include "S1ap-UplinkUEAssociatedLPPaTransport.h"
|
||||||
# include "DownlinkNonUEAssociatedLPPaTransport.h"
|
# include "S1ap-DownlinkNonUEAssociatedLPPaTransport.h"
|
||||||
# include "UplinkNonUEAssociatedLPPaTransport.h"
|
# include "S1ap-UplinkNonUEAssociatedLPPaTransport.h"
|
||||||
#endif /* (UPDATE_RELEASE_9) */
|
#endif /* (UPDATE_RELEASE_9) */
|
||||||
|
|
||||||
#if defined(UPDATE_RELEASE_10)
|
#if defined(UPDATE_RELEASE_10)
|
||||||
# include "PagingPriority.h"
|
# include "S1ap-PagingPriority.h"
|
||||||
# include "RelayNode-Indicator.h"
|
# include "S1ap-RelayNode-Indicator.h"
|
||||||
# include "GWContextReleaseIndication.h"
|
# include "S1ap-GWContextReleaseIndication.h"
|
||||||
# include "MMERelaySupportIndicator.h"
|
# include "S1ap-MMERelaySupportIndicator.h"
|
||||||
# include "ManagementBasedMDTAllowed.h"
|
# include "S1ap-ManagementBasedMDTAllowed.h"
|
||||||
# include "PrivacyIndicator.h"
|
# include "S1ap-PrivacyIndicator.h"
|
||||||
# include "TrafficLoadReductionIndication.h"
|
# include "S1ap-TrafficLoadReductionIndication.h"
|
||||||
# include "GUMMEIList.h"
|
# include "S1ap-GUMMEIList.h"
|
||||||
#endif /* (UPDATE_RELEASE_10) */
|
#endif /* (UPDATE_RELEASE_10) */
|
||||||
|
|
||||||
/* Checking version of ASN1C compiler */
|
/* Checking version of ASN1C compiler */
|
||||||
@@ -439,8 +439,8 @@ typedef int (*s1ap_message_decoded_callback)(
|
|||||||
ssize_t s1ap_generate_successfull_outcome(
|
ssize_t s1ap_generate_successfull_outcome(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr);
|
void *sptr);
|
||||||
|
|
||||||
@@ -456,8 +456,8 @@ ssize_t s1ap_generate_successfull_outcome(
|
|||||||
ssize_t s1ap_generate_initiating_message(
|
ssize_t s1ap_generate_initiating_message(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr);
|
void *sptr);
|
||||||
|
|
||||||
@@ -473,8 +473,8 @@ ssize_t s1ap_generate_initiating_message(
|
|||||||
ssize_t s1ap_generate_unsuccessfull_outcome(
|
ssize_t s1ap_generate_unsuccessfull_outcome(
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length,
|
uint32_t *length,
|
||||||
e_ProcedureCode procedureCode,
|
e_S1ap_ProcedureCode procedureCode,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *td,
|
asn_TYPE_descriptor_t *td,
|
||||||
void *sptr);
|
void *sptr);
|
||||||
|
|
||||||
@@ -485,8 +485,8 @@ ssize_t s1ap_generate_unsuccessfull_outcome(
|
|||||||
\param sptr Structure to be encoded in the value field
|
\param sptr Structure to be encoded in the value field
|
||||||
@returns a pointer to the newly created IE structure or NULL in case of failure
|
@returns a pointer to the newly created IE structure or NULL in case of failure
|
||||||
**/
|
**/
|
||||||
IE_t *s1ap_new_ie(ProtocolIE_ID_t id,
|
S1ap_IE_t *s1ap_new_ie(S1ap_ProtocolIE_ID_t id,
|
||||||
Criticality_t criticality,
|
S1ap_Criticality_t criticality,
|
||||||
asn_TYPE_descriptor_t *type,
|
asn_TYPE_descriptor_t *type,
|
||||||
void *sptr);
|
void *sptr);
|
||||||
|
|
||||||
@@ -494,6 +494,6 @@ IE_t *s1ap_new_ie(ProtocolIE_ID_t id,
|
|||||||
\param criticality Criticality of the IE
|
\param criticality Criticality of the IE
|
||||||
@returns void
|
@returns void
|
||||||
**/
|
**/
|
||||||
void s1ap_handle_criticality(e_Criticality criticality);
|
void s1ap_handle_criticality(S1ap_Criticality_t criticality);
|
||||||
|
|
||||||
#endif /* S1AP_COMMON_H_ */
|
#endif /* S1AP_COMMON_H_ */
|
||||||
|
|||||||
+12
-10
@@ -260,9 +260,11 @@ static int s1ap_eNB_generate_s1_setup_request(
|
|||||||
s1ap_eNB_instance_t *instance_p, s1ap_eNB_mme_data_t *s1ap_mme_data_p)
|
s1ap_eNB_instance_t *instance_p, s1ap_eNB_mme_data_t *s1ap_mme_data_p)
|
||||||
{
|
{
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
S1SetupRequestIEs_t *s1SetupRequest_p;
|
|
||||||
PLMNidentity_t plmnIdentity;
|
S1ap_S1SetupRequestIEs_t *s1SetupRequest_p;
|
||||||
SupportedTAs_Item_t ta;
|
S1ap_PLMNidentity_t plmnIdentity;
|
||||||
|
S1ap_SupportedTAs_Item_t ta;
|
||||||
|
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -273,17 +275,17 @@ static int s1ap_eNB_generate_s1_setup_request(
|
|||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
message.procedureCode = ProcedureCode_id_S1Setup;
|
message.procedureCode = S1ap_ProcedureCode_id_S1Setup;
|
||||||
message.criticality = Criticality_reject;
|
message.criticality = S1ap_Criticality_reject;
|
||||||
|
|
||||||
s1SetupRequest_p = &message.msg.s1SetupRequestIEs;
|
s1SetupRequest_p = &message.msg.s1ap_S1SetupRequestIEs;
|
||||||
memset((void *)&plmnIdentity, 0, sizeof(PLMNidentity_t));
|
memset((void *)&plmnIdentity, 0, sizeof(S1ap_PLMNidentity_t));
|
||||||
|
|
||||||
memset((void *)&ta, 0, sizeof(SupportedTAs_Item_t));
|
memset((void *)&ta, 0, sizeof(S1ap_SupportedTAs_Item_t));
|
||||||
|
|
||||||
s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
|
s1ap_mme_data_p->state = S1AP_ENB_STATE_WAITING;
|
||||||
|
|
||||||
s1SetupRequest_p->global_ENB_ID.eNB_ID.present = ENB_ID_PR_macroENB_ID;
|
s1SetupRequest_p->global_ENB_ID.eNB_ID.present = S1ap_ENB_ID_PR_macroENB_ID;
|
||||||
MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
|
MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
|
||||||
&s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID);
|
&s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.macroENB_ID);
|
||||||
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc,
|
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc,
|
||||||
@@ -298,7 +300,7 @@ static int s1ap_eNB_generate_s1_setup_request(
|
|||||||
s1SetupRequest_p->defaultPagingDRX = instance_p->default_drx;
|
s1SetupRequest_p->defaultPagingDRX = instance_p->default_drx;
|
||||||
|
|
||||||
if (instance_p->eNB_name != NULL) {
|
if (instance_p->eNB_name != NULL) {
|
||||||
s1SetupRequest_p->presenceMask |= S1SETUPREQUESTIES_ENBNAME_PRESENT;
|
s1SetupRequest_p->presenceMask |= S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT;
|
||||||
OCTET_STRING_fromBuf(&s1SetupRequest_p->eNBname, instance_p->eNB_name,
|
OCTET_STRING_fromBuf(&s1SetupRequest_p->eNBname, instance_p->eNB_name,
|
||||||
strlen(instance_p->eNB_name));
|
strlen(instance_p->eNB_name));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
#include "s1ap_eNB_decoder.h"
|
#include "s1ap_eNB_decoder.h"
|
||||||
|
|
||||||
static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
|
static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
|
||||||
InitiatingMessage_t *initiating_p)
|
S1ap_InitiatingMessage_t *initiating_p)
|
||||||
{
|
{
|
||||||
DevAssert(initiating_p != NULL);
|
DevAssert(initiating_p != NULL);
|
||||||
|
|
||||||
@@ -52,12 +52,14 @@ static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
|
|||||||
message->criticality = initiating_p->criticality;
|
message->criticality = initiating_p->criticality;
|
||||||
|
|
||||||
switch(initiating_p->procedureCode) {
|
switch(initiating_p->procedureCode) {
|
||||||
case ProcedureCode_id_downlinkNASTransport:
|
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||||
return s1ap_decode_downlinknastransporties(&message->msg.downlinkNASTransportIEs,
|
return s1ap_decode_s1ap_downlinknastransporties(
|
||||||
&initiating_p->value);
|
&message->msg.s1ap_DownlinkNASTransportIEs, &initiating_p->value);
|
||||||
case ProcedureCode_id_InitialContextSetup:
|
|
||||||
return s1ap_decode_initialcontextsetuprequesties(
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
&message->msg.initialContextSetupRequestIEs, &initiating_p->value);
|
return s1ap_decode_s1ap_initialcontextsetuprequesties(
|
||||||
|
&message->msg.s1ap_InitialContextSetupRequestIEs, &initiating_p->value);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
|
||||||
(int)initiating_p->procedureCode);
|
(int)initiating_p->procedureCode);
|
||||||
@@ -67,7 +69,7 @@ static int s1ap_eNB_decode_initiating_message(s1ap_message *message,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int s1ap_eNB_decode_successful_outcome(s1ap_message *message,
|
static int s1ap_eNB_decode_successful_outcome(s1ap_message *message,
|
||||||
SuccessfulOutcome_t *successfullOutcome_p)
|
S1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||||
{
|
{
|
||||||
DevAssert(successfullOutcome_p != NULL);
|
DevAssert(successfullOutcome_p != NULL);
|
||||||
|
|
||||||
@@ -75,9 +77,10 @@ static int s1ap_eNB_decode_successful_outcome(s1ap_message *message,
|
|||||||
message->criticality = successfullOutcome_p->criticality;
|
message->criticality = successfullOutcome_p->criticality;
|
||||||
|
|
||||||
switch(successfullOutcome_p->procedureCode) {
|
switch(successfullOutcome_p->procedureCode) {
|
||||||
case ProcedureCode_id_S1Setup:
|
case S1ap_ProcedureCode_id_S1Setup:
|
||||||
return s1ap_decode_s1setupresponseies(&message->msg.s1SetupResponseIEs,
|
return s1ap_decode_s1ap_s1setupresponseies(
|
||||||
&successfullOutcome_p->value);
|
&message->msg.s1ap_S1SetupResponseIEs, &successfullOutcome_p->value);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message\n",
|
||||||
(int)successfullOutcome_p->procedureCode);
|
(int)successfullOutcome_p->procedureCode);
|
||||||
@@ -87,7 +90,7 @@ static int s1ap_eNB_decode_successful_outcome(s1ap_message *message,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int s1ap_eNB_decode_unsuccessful_outcome(s1ap_message *message,
|
static int s1ap_eNB_decode_unsuccessful_outcome(s1ap_message *message,
|
||||||
UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
|
S1ap_UnsuccessfulOutcome_t *unSuccessfullOutcome_p)
|
||||||
{
|
{
|
||||||
DevAssert(unSuccessfullOutcome_p != NULL);
|
DevAssert(unSuccessfullOutcome_p != NULL);
|
||||||
|
|
||||||
@@ -95,9 +98,10 @@ static int s1ap_eNB_decode_unsuccessful_outcome(s1ap_message *message,
|
|||||||
message->criticality = unSuccessfullOutcome_p->criticality;
|
message->criticality = unSuccessfullOutcome_p->criticality;
|
||||||
|
|
||||||
switch(unSuccessfullOutcome_p->procedureCode) {
|
switch(unSuccessfullOutcome_p->procedureCode) {
|
||||||
case ProcedureCode_id_S1Setup:
|
case S1ap_ProcedureCode_id_S1Setup:
|
||||||
return s1ap_decode_s1setupfailureies(&message->msg.s1SetupFailureIEs,
|
return s1ap_decode_s1ap_s1setupfailureies(
|
||||||
&unSuccessfullOutcome_p->value);
|
&message->msg.s1ap_S1SetupFailureIEs, &unSuccessfullOutcome_p->value);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
||||||
(int)unSuccessfullOutcome_p->procedureCode);
|
(int)unSuccessfullOutcome_p->procedureCode);
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ typedef struct s1ap_eNB_mme_data_s {
|
|||||||
uint16_t in_streams;
|
uint16_t in_streams;
|
||||||
uint16_t out_streams;
|
uint16_t out_streams;
|
||||||
|
|
||||||
/* Connexion id used when SCTP association is not established yet */
|
/* Connexion id used between SCTP/S1AP */
|
||||||
uint16_t cnx_id;
|
uint16_t cnx_id;
|
||||||
|
|
||||||
/* SCTP association id */
|
/* SCTP association id */
|
||||||
@@ -270,10 +270,6 @@ inline int s1ap_eNB_compare_assoc_id(
|
|||||||
RB_PROTOTYPE(s1ap_mme_map, s1ap_eNB_mme_data_s, entry,
|
RB_PROTOTYPE(s1ap_mme_map, s1ap_eNB_mme_data_s, entry,
|
||||||
s1ap_eNB_compare_assoc_id);
|
s1ap_eNB_compare_assoc_id);
|
||||||
|
|
||||||
inline struct s1ap_eNB_mme_data_s *s1ap_eNB_get_MME(
|
|
||||||
s1ap_eNB_instance_t *instance_p,
|
|
||||||
int32_t assoc_id, uint16_t cnx_id);
|
|
||||||
|
|
||||||
int s1ap_eNB_init(s1ap_eNB_instance_t *eNB_desc_p,
|
int s1ap_eNB_init(s1ap_eNB_instance_t *eNB_desc_p,
|
||||||
char *local_ip_addr[], int nb_local_ip,
|
char *local_ip_addr[], int nb_local_ip,
|
||||||
char *remote_ip_addr[], int nb_remote_ip);
|
char *remote_ip_addr[], int nb_remote_ip);
|
||||||
|
|||||||
@@ -48,28 +48,36 @@
|
|||||||
static inline int s1ap_eNB_encode_initiating(s1ap_message *message,
|
static inline int s1ap_eNB_encode_initiating(s1ap_message *message,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *len);
|
uint32_t *len);
|
||||||
|
|
||||||
static inline int s1ap_eNB_encode_successfull_outcome(s1ap_message *message,
|
static inline int s1ap_eNB_encode_successfull_outcome(s1ap_message *message,
|
||||||
uint8_t **buffer, uint32_t *len);
|
uint8_t **buffer, uint32_t *len);
|
||||||
|
|
||||||
static inline int s1ap_eNB_encode_unsuccessfull_outcome(s1ap_message *message,
|
static inline int s1ap_eNB_encode_unsuccessfull_outcome(s1ap_message *message,
|
||||||
uint8_t **buffer, uint32_t *len);
|
uint8_t **buffer, uint32_t *len);
|
||||||
static inline int s1ap_eNB_encode_s1_setup_request(S1SetupRequestIEs_t
|
|
||||||
*s1SetupRequestIEs, uint8_t **buffer, uint32_t *length);
|
static inline int s1ap_eNB_encode_s1_setup_request(
|
||||||
static inline int s1ap_eNB_encode_trace_failure(TraceFailureIndicationIEs_t
|
S1ap_S1SetupRequestIEs_t *s1SetupRequestIEs, uint8_t **buffer, uint32_t *length);
|
||||||
|
|
||||||
|
static inline int s1ap_eNB_encode_trace_failure(S1ap_TraceFailureIndicationIEs_t
|
||||||
*trace_failure_ies_p, uint8_t **buffer,
|
*trace_failure_ies_p, uint8_t **buffer,
|
||||||
uint32_t *length);
|
uint32_t *length);
|
||||||
static inline int s1ap_eNB_encode_initial_ue_message(InitialUEMessageIEs_t
|
|
||||||
|
static inline int s1ap_eNB_encode_initial_ue_message(S1ap_InitialUEMessageIEs_t
|
||||||
*initialUEmessageIEs_p, uint8_t **buffer,
|
*initialUEmessageIEs_p, uint8_t **buffer,
|
||||||
uint32_t *length);
|
uint32_t *length);
|
||||||
static inline int s1ap_eNB_encode_uplink_nas_transport(UplinkNASTransportIEs_t
|
|
||||||
|
static inline int s1ap_eNB_encode_uplink_nas_transport(S1ap_UplinkNASTransportIEs_t
|
||||||
*uplinkNASTransportIEs,
|
*uplinkNASTransportIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length);
|
uint32_t *length);
|
||||||
|
|
||||||
static inline int s1ap_eNB_encode_ue_capability_info_indication(
|
static inline int s1ap_eNB_encode_ue_capability_info_indication(
|
||||||
UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
|
S1ap_UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length);
|
uint32_t *length);
|
||||||
|
|
||||||
static inline int s1ap_eNB_encode_initial_context_setup_response(
|
static inline int s1ap_eNB_encode_initial_context_setup_response(
|
||||||
InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
S1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length);
|
uint32_t *length);
|
||||||
|
|
||||||
@@ -96,24 +104,25 @@ int s1ap_eNB_encode_pdu(s1ap_message *message, uint8_t **buffer, uint32_t *len)
|
|||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_initiating(s1ap_message *message,
|
int s1ap_eNB_encode_initiating(s1ap_message *message,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer, uint32_t *len)
|
||||||
uint32_t *len)
|
|
||||||
{
|
{
|
||||||
switch(message->procedureCode) {
|
switch(message->procedureCode) {
|
||||||
case ProcedureCode_id_S1Setup:
|
case S1ap_ProcedureCode_id_S1Setup:
|
||||||
return s1ap_eNB_encode_s1_setup_request(&message->msg.s1SetupRequestIEs,
|
return s1ap_eNB_encode_s1_setup_request(
|
||||||
buffer, len);
|
&message->msg.s1ap_S1SetupRequestIEs, buffer, len);
|
||||||
case ProcedureCode_id_uplinkNASTransport:
|
|
||||||
return s1ap_eNB_encode_uplink_nas_transport(&message->msg.uplinkNASTransportIEs,
|
case S1ap_ProcedureCode_id_uplinkNASTransport:
|
||||||
buffer, len);
|
return s1ap_eNB_encode_uplink_nas_transport(
|
||||||
case ProcedureCode_id_UECapabilityInfoIndication:
|
&message->msg.s1ap_UplinkNASTransportIEs, buffer, len);
|
||||||
|
|
||||||
|
case S1ap_ProcedureCode_id_UECapabilityInfoIndication:
|
||||||
return s1ap_eNB_encode_ue_capability_info_indication(
|
return s1ap_eNB_encode_ue_capability_info_indication(
|
||||||
&message->msg.ueCapabilityInfoIndicationIEs,
|
&message->msg.s1ap_UECapabilityInfoIndicationIEs, buffer, len);
|
||||||
buffer, len);
|
|
||||||
case ProcedureCode_id_initialUEMessage:
|
case S1ap_ProcedureCode_id_initialUEMessage:
|
||||||
return s1ap_eNB_encode_initial_ue_message(
|
return s1ap_eNB_encode_initial_ue_message(
|
||||||
&message->msg.initialUEMessageIEs,
|
&message->msg.s1ap_InitialUEMessageIEs, buffer, len);
|
||||||
buffer, len);
|
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message\n",
|
||||||
(int)message->procedureCode);
|
(int)message->procedureCode);
|
||||||
@@ -127,10 +136,9 @@ int s1ap_eNB_encode_successfull_outcome(s1ap_message *message,
|
|||||||
uint8_t **buffer, uint32_t *len)
|
uint8_t **buffer, uint32_t *len)
|
||||||
{
|
{
|
||||||
switch(message->procedureCode) {
|
switch(message->procedureCode) {
|
||||||
case ProcedureCode_id_InitialContextSetup:
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
return s1ap_eNB_encode_initial_context_setup_response(
|
return s1ap_eNB_encode_initial_context_setup_response(
|
||||||
&message->msg.initialContextSetupResponseIEs,
|
&message->msg.s1ap_InitialContextSetupResponseIEs, buffer, len);
|
||||||
buffer, len);
|
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message\n",
|
||||||
(int)message->procedureCode);
|
(int)message->procedureCode);
|
||||||
@@ -154,147 +162,151 @@ int s1ap_eNB_encode_unsuccessfull_outcome(s1ap_message *message,
|
|||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_ue_capability_info_indication(
|
int s1ap_eNB_encode_ue_capability_info_indication(
|
||||||
UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
|
S1ap_UECapabilityInfoIndicationIEs_t *ueCapabilityInfoIndicationIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
UECapabilityInfoIndication_t ueCapabilityInfoIndication;
|
S1ap_UECapabilityInfoIndication_t ueCapabilityInfoIndication;
|
||||||
UECapabilityInfoIndication_t *ueCapabilityInfoIndication_p =
|
S1ap_UECapabilityInfoIndication_t *ueCapabilityInfoIndication_p =
|
||||||
&ueCapabilityInfoIndication;
|
&ueCapabilityInfoIndication;
|
||||||
|
|
||||||
memset((void *)ueCapabilityInfoIndication_p, 0,
|
memset((void *)ueCapabilityInfoIndication_p, 0, sizeof(ueCapabilityInfoIndication));
|
||||||
sizeof(UECapabilityInfoIndication_t));
|
|
||||||
|
|
||||||
if (s1ap_encode_uecapabilityinfoindicationies(ueCapabilityInfoIndication_p,
|
if (s1ap_encode_s1ap_uecapabilityinfoindicationies(
|
||||||
ueCapabilityInfoIndicationIEs) < 0) {
|
ueCapabilityInfoIndication_p, ueCapabilityInfoIndicationIEs) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_UECapabilityInfoIndication,
|
S1ap_ProcedureCode_id_UECapabilityInfoIndication,
|
||||||
Criticality_ignore,
|
S1ap_Criticality_ignore,
|
||||||
&asn_DEF_UECapabilityInfoIndication,
|
&asn_DEF_S1ap_UECapabilityInfoIndication,
|
||||||
ueCapabilityInfoIndication_p);
|
ueCapabilityInfoIndication_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_uplink_nas_transport(UplinkNASTransportIEs_t
|
int s1ap_eNB_encode_uplink_nas_transport(
|
||||||
*uplinkNASTransportIEs,
|
S1ap_UplinkNASTransportIEs_t *uplinkNASTransportIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
UplinkNASTransport_t uplinkNASTransport;
|
S1ap_UplinkNASTransport_t uplinkNASTransport;
|
||||||
UplinkNASTransport_t *uplinkNASTransport_p = &uplinkNASTransport;
|
S1ap_UplinkNASTransport_t *uplinkNASTransport_p = &uplinkNASTransport;
|
||||||
|
|
||||||
memset((void *)uplinkNASTransport_p, 0, sizeof(UplinkNASTransport_t));
|
memset((void *)uplinkNASTransport_p, 0, sizeof(uplinkNASTransport));
|
||||||
|
|
||||||
if (s1ap_encode_uplinknastransporties(uplinkNASTransport_p,
|
if (s1ap_encode_s1ap_uplinknastransporties(
|
||||||
uplinkNASTransportIEs) < 0) {
|
uplinkNASTransport_p, uplinkNASTransportIEs) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_uplinkNASTransport,
|
S1ap_ProcedureCode_id_uplinkNASTransport,
|
||||||
Criticality_ignore,
|
S1ap_Criticality_ignore,
|
||||||
&asn_DEF_UplinkNASTransport,
|
&asn_DEF_S1ap_UplinkNASTransport,
|
||||||
uplinkNASTransport_p);
|
uplinkNASTransport_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_s1_setup_request(S1SetupRequestIEs_t
|
int s1ap_eNB_encode_s1_setup_request(
|
||||||
*s1SetupRequestIEs,
|
S1ap_S1SetupRequestIEs_t *s1SetupRequestIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
S1SetupRequest_t s1SetupRequest;
|
S1ap_S1SetupRequest_t s1SetupRequest;
|
||||||
S1SetupRequest_t *s1SetupRequest_p = &s1SetupRequest;
|
S1ap_S1SetupRequest_t *s1SetupRequest_p = &s1SetupRequest;
|
||||||
|
|
||||||
memset((void *)s1SetupRequest_p, 0, sizeof(S1SetupRequest_t));
|
memset((void *)s1SetupRequest_p, 0, sizeof(s1SetupRequest));
|
||||||
|
|
||||||
if (s1ap_encode_s1setuprequesties(s1SetupRequest_p, s1SetupRequestIEs) < 0) {
|
if (s1ap_encode_s1ap_s1setuprequesties(s1SetupRequest_p, s1SetupRequestIEs) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_S1Setup,
|
S1ap_ProcedureCode_id_S1Setup,
|
||||||
Criticality_reject,
|
S1ap_Criticality_reject,
|
||||||
&asn_DEF_S1SetupRequest,
|
&asn_DEF_S1ap_S1SetupRequest,
|
||||||
s1SetupRequest_p);
|
s1SetupRequest_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_initial_ue_message(InitialUEMessageIEs_t
|
int s1ap_eNB_encode_initial_ue_message(
|
||||||
*initialUEmessageIEs_p,
|
S1ap_InitialUEMessageIEs_t *initialUEmessageIEs_p,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
InitialUEMessage_t initialUEMessage;
|
S1ap_InitialUEMessage_t initialUEMessage;
|
||||||
InitialUEMessage_t *initialUEMessage_p = &initialUEMessage;
|
S1ap_InitialUEMessage_t *initialUEMessage_p = &initialUEMessage;
|
||||||
|
|
||||||
memset((void *)initialUEMessage_p, 0, sizeof(InitialUEMessage_t));
|
memset((void *)initialUEMessage_p, 0, sizeof(initialUEMessage));
|
||||||
|
|
||||||
if (s1ap_encode_initialuemessageies(initialUEMessage_p,
|
if (s1ap_encode_s1ap_initialuemessageies(
|
||||||
initialUEmessageIEs_p) < 0) {
|
initialUEMessage_p, initialUEmessageIEs_p) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_initialUEMessage,
|
S1ap_ProcedureCode_id_initialUEMessage,
|
||||||
Criticality_reject,
|
S1ap_Criticality_reject,
|
||||||
&asn_DEF_InitialUEMessage,
|
&asn_DEF_S1ap_InitialUEMessage,
|
||||||
initialUEMessage_p);
|
initialUEMessage_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_trace_failure(TraceFailureIndicationIEs_t
|
int s1ap_eNB_encode_trace_failure(
|
||||||
*trace_failure_ies_p,
|
S1ap_TraceFailureIndicationIEs_t *trace_failure_ies_p,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
TraceFailureIndication_t trace_failure;
|
S1ap_TraceFailureIndication_t trace_failure;
|
||||||
TraceFailureIndication_t *trace_failure_p = &trace_failure;
|
S1ap_TraceFailureIndication_t *trace_failure_p = &trace_failure;
|
||||||
|
|
||||||
memset((void *)trace_failure_p, 0, sizeof(TraceFailureIndication_t));
|
memset((void *)trace_failure_p, 0, sizeof(trace_failure));
|
||||||
|
|
||||||
if (s1ap_encode_tracefailureindicationies(trace_failure_p,
|
if (s1ap_encode_s1ap_tracefailureindicationies(
|
||||||
trace_failure_ies_p) < 0) {
|
trace_failure_p, trace_failure_ies_p) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_TraceFailureIndication,
|
S1ap_ProcedureCode_id_TraceFailureIndication,
|
||||||
Criticality_reject,
|
S1ap_Criticality_reject,
|
||||||
&asn_DEF_TraceFailureIndication,
|
&asn_DEF_S1ap_TraceFailureIndication,
|
||||||
trace_failure_p);
|
trace_failure_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
int s1ap_eNB_encode_initial_context_setup_response(
|
int s1ap_eNB_encode_initial_context_setup_response(
|
||||||
InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
S1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs,
|
||||||
uint8_t **buffer,
|
uint8_t **buffer,
|
||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
InitialContextSetupResponse_t initial_context_setup_response;
|
S1ap_InitialContextSetupResponse_t initial_context_setup_response;
|
||||||
InitialContextSetupResponse_t *initial_context_setup_response_p =
|
S1ap_InitialContextSetupResponse_t *initial_context_setup_response_p =
|
||||||
&initial_context_setup_response;
|
&initial_context_setup_response;
|
||||||
|
|
||||||
memset((void *)initial_context_setup_response_p, 0,
|
memset((void *)initial_context_setup_response_p, 0,
|
||||||
sizeof(InitialContextSetupResponse_t));
|
sizeof(initial_context_setup_response));
|
||||||
|
|
||||||
if (s1ap_encode_initialcontextsetupresponseies(initial_context_setup_response_p,
|
if (s1ap_encode_s1ap_initialcontextsetupresponseies(
|
||||||
initialContextSetupResponseIEs) < 0) {
|
initial_context_setup_response_p, initialContextSetupResponseIEs) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_successfull_outcome(buffer,
|
return s1ap_generate_successfull_outcome(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_InitialContextSetup,
|
S1ap_ProcedureCode_id_InitialContextSetup,
|
||||||
Criticality_reject,
|
S1ap_Criticality_reject,
|
||||||
&asn_DEF_InitialContextSetupResponse,
|
&asn_DEF_S1ap_InitialContextSetupResponse,
|
||||||
initial_context_setup_response_p);
|
initial_context_setup_response_p);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
#include "s1ap_eNB_ue_context.h"
|
#include "s1ap_eNB_ue_context.h"
|
||||||
#include "s1ap_eNB_trace.h"
|
#include "s1ap_eNB_trace.h"
|
||||||
#include "s1ap_eNB_nas_procedures.h"
|
#include "s1ap_eNB_nas_procedures.h"
|
||||||
|
#include "s1ap_eNB_management_procedures.h"
|
||||||
|
|
||||||
#include "s1ap_eNB_default_values.h"
|
#include "s1ap_eNB_default_values.h"
|
||||||
|
|
||||||
@@ -185,13 +186,13 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
uint32_t stream,
|
uint32_t stream,
|
||||||
struct s1ap_message_s *message_p)
|
struct s1ap_message_s *message_p)
|
||||||
{
|
{
|
||||||
S1SetupResponseIEs_t *s1SetupResponse_p;
|
S1ap_S1SetupResponseIEs_t *s1SetupResponse_p;
|
||||||
s1ap_eNB_mme_data_t *mme_desc_p;
|
s1ap_eNB_mme_data_t *mme_desc_p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
DevAssert(message_p != NULL);
|
DevAssert(message_p != NULL);
|
||||||
|
|
||||||
s1SetupResponse_p = &message_p->msg.s1SetupResponseIEs;
|
s1SetupResponse_p = &message_p->msg.s1ap_S1SetupResponseIEs;
|
||||||
|
|
||||||
/* S1 Setup Response == Non UE-related procedure -> stream 0 */
|
/* S1 Setup Response == Non UE-related procedure -> stream 0 */
|
||||||
if (stream != 0) {
|
if (stream != 0) {
|
||||||
@@ -212,11 +213,11 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
DevAssert(s1SetupResponse_p->servedGUMMEIs.list.count == 1);
|
DevAssert(s1SetupResponse_p->servedGUMMEIs.list.count == 1);
|
||||||
|
|
||||||
for (i = 0; i < s1SetupResponse_p->servedGUMMEIs.list.count; i++) {
|
for (i = 0; i < s1SetupResponse_p->servedGUMMEIs.list.count; i++) {
|
||||||
struct ServedGUMMEIsItem *gummei_item_p;
|
struct S1ap_ServedGUMMEIsItem *gummei_item_p;
|
||||||
struct served_gummei_s *new_gummei_p;
|
struct served_gummei_s *new_gummei_p;
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
gummei_item_p = (struct ServedGUMMEIsItem *)
|
gummei_item_p = (struct S1ap_ServedGUMMEIsItem *)
|
||||||
s1SetupResponse_p->servedGUMMEIs.list.array[i];
|
s1SetupResponse_p->servedGUMMEIs.list.array[i];
|
||||||
new_gummei_p = calloc(1, sizeof(struct served_gummei_s));
|
new_gummei_p = calloc(1, sizeof(struct served_gummei_s));
|
||||||
|
|
||||||
@@ -225,7 +226,7 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
STAILQ_INIT(&new_gummei_p->mme_codes);
|
STAILQ_INIT(&new_gummei_p->mme_codes);
|
||||||
|
|
||||||
for (j = 0; j < gummei_item_p->servedPLMNs.list.count; j++) {
|
for (j = 0; j < gummei_item_p->servedPLMNs.list.count; j++) {
|
||||||
PLMNidentity_t *plmn_identity_p;
|
S1ap_PLMNidentity_t *plmn_identity_p;
|
||||||
struct plmn_identity_s *new_plmn_identity_p;
|
struct plmn_identity_s *new_plmn_identity_p;
|
||||||
|
|
||||||
plmn_identity_p = gummei_item_p->servedPLMNs.list.array[i];
|
plmn_identity_p = gummei_item_p->servedPLMNs.list.array[i];
|
||||||
@@ -236,7 +237,7 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
new_gummei_p->nb_served_plmns++;
|
new_gummei_p->nb_served_plmns++;
|
||||||
}
|
}
|
||||||
for (j = 0; j < gummei_item_p->servedGroupIDs.list.count; j++) {
|
for (j = 0; j < gummei_item_p->servedGroupIDs.list.count; j++) {
|
||||||
MME_Group_ID_t *mme_group_id_p;
|
S1ap_MME_Group_ID_t *mme_group_id_p;
|
||||||
struct served_group_id_s *new_group_id_p;
|
struct served_group_id_s *new_group_id_p;
|
||||||
|
|
||||||
mme_group_id_p = gummei_item_p->servedGroupIDs.list.array[i];
|
mme_group_id_p = gummei_item_p->servedGroupIDs.list.array[i];
|
||||||
@@ -246,7 +247,7 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
new_gummei_p->nb_group_id++;
|
new_gummei_p->nb_group_id++;
|
||||||
}
|
}
|
||||||
for (j = 0; j < gummei_item_p->servedMMECs.list.count; j++) {
|
for (j = 0; j < gummei_item_p->servedMMECs.list.count; j++) {
|
||||||
MME_Code_t *mme_code_p;
|
S1ap_MME_Code_t *mme_code_p;
|
||||||
struct mme_code_s *new_mme_code_p;
|
struct mme_code_s *new_mme_code_p;
|
||||||
|
|
||||||
mme_code_p = gummei_item_p->servedMMECs.list.array[i];
|
mme_code_p = gummei_item_p->servedMMECs.list.array[i];
|
||||||
@@ -259,12 +260,12 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t assoc_id,
|
|||||||
STAILQ_INSERT_TAIL(&mme_desc_p->served_gummei, new_gummei_p, next);
|
STAILQ_INSERT_TAIL(&mme_desc_p->served_gummei, new_gummei_p, next);
|
||||||
}
|
}
|
||||||
/* Free contents of the list */
|
/* Free contents of the list */
|
||||||
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_ServedGUMMEIs,
|
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1ap_ServedGUMMEIs,
|
||||||
(void *)&s1SetupResponse_p->servedGUMMEIs);
|
(void *)&s1SetupResponse_p->servedGUMMEIs);
|
||||||
/* Set the capacity of this MME */
|
/* Set the capacity of this MME */
|
||||||
mme_desc_p->relative_mme_capacity = s1SetupResponse_p->relativeMMECapacity;
|
mme_desc_p->relative_mme_capacity = s1SetupResponse_p->relativeMMECapacity;
|
||||||
/* Optionaly set the mme name */
|
/* Optionaly set the mme name */
|
||||||
if (s1SetupResponse_p->presenceMask & S1SETUPRESPONSEIES_MMENAME_PRESENT) {
|
if (s1SetupResponse_p->presenceMask & S1AP_S1SETUPRESPONSEIES_MMENAME_PRESENT) {
|
||||||
mme_desc_p->mme_name = calloc(s1SetupResponse_p->mmEname.size + 1, sizeof(char));
|
mme_desc_p->mme_name = calloc(s1SetupResponse_p->mmEname.size + 1, sizeof(char));
|
||||||
memcpy(mme_desc_p->mme_name, s1SetupResponse_p->mmEname.buf,
|
memcpy(mme_desc_p->mme_name, s1SetupResponse_p->mmEname.buf,
|
||||||
s1SetupResponse_p->mmEname.size);
|
s1SetupResponse_p->mmEname.size);
|
||||||
@@ -340,10 +341,10 @@ int s1ap_eNB_handle_initial_context_request(uint32_t assoc_id,
|
|||||||
s1ap_eNB_mme_data_t *mme_desc_p;
|
s1ap_eNB_mme_data_t *mme_desc_p;
|
||||||
s1ap_eNB_ue_context_t *ue_desc_p;
|
s1ap_eNB_ue_context_t *ue_desc_p;
|
||||||
|
|
||||||
InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
S1ap_InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
||||||
DevAssert(message_p != NULL);
|
DevAssert(message_p != NULL);
|
||||||
|
|
||||||
initialContextSetupRequest_p = &message_p->msg.initialContextSetupRequestIEs;
|
initialContextSetupRequest_p = &message_p->msg.s1ap_InitialContextSetupRequestIEs;
|
||||||
|
|
||||||
if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
|
if ((mme_desc_p = s1ap_eNB_get_MME(NULL, assoc_id, 0)) == NULL) {
|
||||||
S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
|
S1AP_ERROR("[SCTP %d] Received initial context setup request for non "
|
||||||
|
|||||||
@@ -56,7 +56,8 @@ int s1ap_eNB_handle_nas_first_req(s1ap_nas_first_req_t *s1ap_nas_first_req_p)
|
|||||||
struct s1ap_eNB_ue_context_s *ue_desc_p;
|
struct s1ap_eNB_ue_context_s *ue_desc_p;
|
||||||
|
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
InitialUEMessageIEs_t *initial_ue_message_p;
|
|
||||||
|
S1ap_InitialUEMessageIEs_t *initial_ue_message_p;
|
||||||
|
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
@@ -70,9 +71,9 @@ int s1ap_eNB_handle_nas_first_req(s1ap_nas_first_req_t *s1ap_nas_first_req_p)
|
|||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
message.procedureCode = ProcedureCode_id_initialUEMessage;
|
message.procedureCode = S1ap_ProcedureCode_id_initialUEMessage;
|
||||||
|
|
||||||
initial_ue_message_p = &message.msg.initialUEMessageIEs;
|
initial_ue_message_p = &message.msg.s1ap_InitialUEMessageIEs;
|
||||||
|
|
||||||
/* Select the MME corresponding to the provided GUMMEI.
|
/* Select the MME corresponding to the provided GUMMEI.
|
||||||
* If no MME corresponds to the GUMMEI, the function selects the MME with the
|
* If no MME corresponds to the GUMMEI, the function selects the MME with the
|
||||||
@@ -132,14 +133,14 @@ int s1ap_eNB_handle_nas_first_req(s1ap_nas_first_req_t *s1ap_nas_first_req_p)
|
|||||||
initial_ue_message_p->rrC_Establishment_Cause = s1ap_nas_first_req_p->establishment_cause;
|
initial_ue_message_p->rrC_Establishment_Cause = s1ap_nas_first_req_p->establishment_cause;
|
||||||
|
|
||||||
if (s1ap_nas_first_req_p->ue_identity.present == S_TMSI_PROVIDED) {
|
if (s1ap_nas_first_req_p->ue_identity.present == S_TMSI_PROVIDED) {
|
||||||
initial_ue_message_p->presenceMask |= INITIALUEMESSAGEIES_S_TMSI_PRESENT;
|
initial_ue_message_p->presenceMask |= S1AP_INITIALUEMESSAGEIES_S_TMSI_PRESENT;
|
||||||
|
|
||||||
MME_CODE_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.identity.s_tmsi.mme_code,
|
MME_CODE_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.identity.s_tmsi.mme_code,
|
||||||
&initial_ue_message_p->s_tmsi.mMEC);
|
&initial_ue_message_p->s_tmsi.mMEC);
|
||||||
M_TMSI_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.identity.s_tmsi.m_tmsi,
|
M_TMSI_TO_OCTET_STRING(s1ap_nas_first_req_p->ue_identity.identity.s_tmsi.m_tmsi,
|
||||||
&initial_ue_message_p->s_tmsi.m_TMSI);
|
&initial_ue_message_p->s_tmsi.m_TMSI);
|
||||||
} else {
|
} else {
|
||||||
initial_ue_message_p->presenceMask |= INITIALUEMESSAGEIES_GUMMEI_ID_PRESENT;
|
initial_ue_message_p->presenceMask |= S1AP_INITIALUEMESSAGEIES_GUMMEI_ID_PRESENT;
|
||||||
|
|
||||||
MCC_MNC_TO_PLMNID(s1ap_nas_first_req_p->ue_identity.identity.gummei.mcc,
|
MCC_MNC_TO_PLMNID(s1ap_nas_first_req_p->ue_identity.identity.gummei.mcc,
|
||||||
s1ap_nas_first_req_p->ue_identity.identity.gummei.mnc,
|
s1ap_nas_first_req_p->ue_identity.identity.gummei.mnc,
|
||||||
@@ -186,14 +187,15 @@ int s1ap_eNB_handle_nas_downlink(uint32_t assoc_id,
|
|||||||
uint32_t stream,
|
uint32_t stream,
|
||||||
struct s1ap_message_s *message_p)
|
struct s1ap_message_s *message_p)
|
||||||
{
|
{
|
||||||
DownlinkNASTransportIEs_t *downlink_NAS_transport_p;
|
S1ap_DownlinkNASTransportIEs_t *downlink_NAS_transport_p;
|
||||||
|
|
||||||
s1ap_eNB_mme_data_t *mme_desc_p;
|
s1ap_eNB_mme_data_t *mme_desc_p;
|
||||||
s1ap_eNB_ue_context_t *ue_desc_p;
|
s1ap_eNB_ue_context_t *ue_desc_p;
|
||||||
s1ap_eNB_instance_t *s1ap_eNB_instance;
|
s1ap_eNB_instance_t *s1ap_eNB_instance;
|
||||||
|
|
||||||
DevAssert(message_p != NULL);
|
DevAssert(message_p != NULL);
|
||||||
|
|
||||||
downlink_NAS_transport_p = &message_p->msg.downlinkNASTransportIEs;
|
downlink_NAS_transport_p = &message_p->msg.s1ap_DownlinkNASTransportIEs;
|
||||||
|
|
||||||
/* UE-related procedure -> stream != 0 */
|
/* UE-related procedure -> stream != 0 */
|
||||||
if (stream == 0) {
|
if (stream == 0) {
|
||||||
@@ -244,8 +246,8 @@ int s1ap_eNB_handle_nas_downlink(uint32_t assoc_id,
|
|||||||
int s1ap_eNB_nas_uplink(s1ap_uplink_nas_t *s1ap_uplink_nas_p)
|
int s1ap_eNB_nas_uplink(s1ap_uplink_nas_t *s1ap_uplink_nas_p)
|
||||||
{
|
{
|
||||||
struct s1ap_eNB_ue_context_s *ue_context_p;
|
struct s1ap_eNB_ue_context_s *ue_context_p;
|
||||||
UplinkNASTransportIEs_t *uplink_NAS_transport_p;
|
|
||||||
s1ap_eNB_instance_t *s1ap_eNB_instance_p;
|
s1ap_eNB_instance_t *s1ap_eNB_instance_p;
|
||||||
|
S1ap_UplinkNASTransportIEs_t *uplink_NAS_transport_p;
|
||||||
|
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
|
|
||||||
@@ -282,9 +284,9 @@ int s1ap_eNB_nas_uplink(s1ap_uplink_nas_t *s1ap_uplink_nas_p)
|
|||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
message.procedureCode = ProcedureCode_id_uplinkNASTransport;
|
message.procedureCode = S1ap_ProcedureCode_id_uplinkNASTransport;
|
||||||
|
|
||||||
uplink_NAS_transport_p = &message.msg.uplinkNASTransportIEs;
|
uplink_NAS_transport_p = &message.msg.s1ap_UplinkNASTransportIEs;
|
||||||
|
|
||||||
uplink_NAS_transport_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
|
uplink_NAS_transport_p->mme_ue_s1ap_id = ue_context_p->mme_ue_s1ap_id;
|
||||||
uplink_NAS_transport_p->eNB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
|
uplink_NAS_transport_p->eNB_UE_S1AP_ID = ue_context_p->eNB_ue_s1ap_id;
|
||||||
|
|||||||
@@ -49,8 +49,7 @@
|
|||||||
#include "s1ap_eNB_ue_context.h"
|
#include "s1ap_eNB_ue_context.h"
|
||||||
#include "s1ap_eNB_encoder.h"
|
#include "s1ap_eNB_encoder.h"
|
||||||
#include "s1ap_eNB_overload.h"
|
#include "s1ap_eNB_overload.h"
|
||||||
|
#include "s1ap_eNB_management_procedures.h"
|
||||||
#include "sctp_primitives_client.h"
|
|
||||||
|
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
|
|
||||||
@@ -58,16 +57,16 @@ int s1ap_eNB_handle_overload_start(uint32_t assoc_id,
|
|||||||
uint32_t stream,
|
uint32_t stream,
|
||||||
struct s1ap_message_s *message_p)
|
struct s1ap_message_s *message_p)
|
||||||
{
|
{
|
||||||
OverloadStartIEs_t *overload_start_p;
|
S1ap_OverloadStartIEs_t *overload_start_p;
|
||||||
s1ap_eNB_mme_data_t *mme_desc_p;
|
s1ap_eNB_mme_data_t *mme_desc_p;
|
||||||
|
|
||||||
DevAssert(message_p != NULL);
|
DevAssert(message_p != NULL);
|
||||||
|
|
||||||
overload_start_p = &message_p->msg.overloadStartIEs;
|
overload_start_p = &message_p->msg.s1ap_OverloadStartIEs;
|
||||||
|
|
||||||
DevCheck(overload_start_p->overloadResponse.present ==
|
DevCheck(overload_start_p->overloadResponse.present ==
|
||||||
OverloadResponse_PR_overloadAction,
|
S1ap_OverloadResponse_PR_overloadAction,
|
||||||
OverloadResponse_PR_overloadAction, 0, 0);
|
S1ap_OverloadResponse_PR_overloadAction, 0, 0);
|
||||||
|
|
||||||
/* Non UE-associated signalling -> stream 0 */
|
/* Non UE-associated signalling -> stream 0 */
|
||||||
DevCheck(stream == 0, stream, 0, 0);
|
DevCheck(stream == 0, stream, 0, 0);
|
||||||
|
|||||||
@@ -45,14 +45,15 @@
|
|||||||
#include "s1ap_eNB_encoder.h"
|
#include "s1ap_eNB_encoder.h"
|
||||||
#include "s1ap_eNB_trace.h"
|
#include "s1ap_eNB_trace.h"
|
||||||
#include "s1ap_eNB_itti_messaging.h"
|
#include "s1ap_eNB_itti_messaging.h"
|
||||||
|
#include "s1ap_eNB_management_procedures.h"
|
||||||
|
|
||||||
static
|
static
|
||||||
void s1ap_eNB_generate_trace_failure(struct s1ap_eNB_ue_context_s *ue_desc_p,
|
void s1ap_eNB_generate_trace_failure(struct s1ap_eNB_ue_context_s *ue_desc_p,
|
||||||
E_UTRAN_Trace_ID_t *trace_id,
|
S1ap_E_UTRAN_Trace_ID_t *trace_id,
|
||||||
Cause_t *cause_p)
|
S1ap_Cause_t *cause_p)
|
||||||
{
|
{
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
TraceFailureIndicationIEs_t *trace_failure_p;
|
S1ap_TraceFailureIndicationIEs_t *trace_failure_p;
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
|
|
||||||
@@ -62,13 +63,13 @@ void s1ap_eNB_generate_trace_failure(struct s1ap_eNB_ue_context_s *ue_desc_p,
|
|||||||
|
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
trace_failure_p = &message.msg.traceFailureIndicationIEs;
|
trace_failure_p = &message.msg.s1ap_TraceFailureIndicationIEs;
|
||||||
|
|
||||||
trace_failure_p->mme_ue_s1ap_id = ue_desc_p->mme_ue_s1ap_id;
|
trace_failure_p->mme_ue_s1ap_id = ue_desc_p->mme_ue_s1ap_id;
|
||||||
trace_failure_p->eNB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
|
trace_failure_p->eNB_UE_S1AP_ID = ue_desc_p->eNB_ue_s1ap_id;
|
||||||
|
|
||||||
memcpy(&trace_failure_p->e_UTRAN_Trace_ID, trace_id, sizeof(E_UTRAN_Trace_ID_t));
|
memcpy(&trace_failure_p->e_UTRAN_Trace_ID, trace_id, sizeof(S1ap_E_UTRAN_Trace_ID_t));
|
||||||
memcpy(&trace_failure_p->cause, cause_p, sizeof(Cause_t));
|
memcpy(&trace_failure_p->cause, cause_p, sizeof(S1ap_Cause_t));
|
||||||
|
|
||||||
if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
|
if (s1ap_eNB_encode_pdu(&message, &buffer, &length) < 0) {
|
||||||
return;
|
return;
|
||||||
@@ -82,30 +83,31 @@ int s1ap_eNB_handle_trace_start(uint32_t assoc_id,
|
|||||||
uint32_t stream,
|
uint32_t stream,
|
||||||
struct s1ap_message_s *message_p)
|
struct s1ap_message_s *message_p)
|
||||||
{
|
{
|
||||||
TraceStartIEs_t *trace_start_p;
|
S1ap_TraceStartIEs_t *trace_start_p;
|
||||||
struct s1ap_eNB_ue_context_s *ue_desc_p;
|
struct s1ap_eNB_ue_context_s *ue_desc_p;
|
||||||
struct s1ap_eNB_mme_data_s *mme_ref_p;
|
struct s1ap_eNB_mme_data_s *mme_ref_p;
|
||||||
|
|
||||||
DevAssert(message_p != NULL);
|
DevAssert(message_p != NULL);
|
||||||
|
|
||||||
trace_start_p = &message_p->msg.traceStartIEs;
|
trace_start_p = &message_p->msg.s1ap_TraceStartIEs;
|
||||||
|
|
||||||
mme_ref_p = s1ap_eNB_get_MME(NULL, assoc_id, 0);
|
mme_ref_p = s1ap_eNB_get_MME(NULL, assoc_id, 0);
|
||||||
DevAssert(mme_ref_p != NULL);
|
DevAssert(mme_ref_p != NULL);
|
||||||
|
|
||||||
if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_ref_p->s1ap_eNB_instance,
|
if ((ue_desc_p = s1ap_eNB_get_ue_context(mme_ref_p->s1ap_eNB_instance,
|
||||||
trace_start_p->eNB_UE_S1AP_ID)) == NULL) {
|
trace_start_p->eNB_UE_S1AP_ID)) == NULL)
|
||||||
|
{
|
||||||
/* Could not find context associated with this eNB_ue_s1ap_id -> generate
|
/* Could not find context associated with this eNB_ue_s1ap_id -> generate
|
||||||
* trace failure indication.
|
* trace failure indication.
|
||||||
*/
|
*/
|
||||||
E_UTRAN_Trace_ID_t trace_id;
|
S1ap_E_UTRAN_Trace_ID_t trace_id;
|
||||||
Cause_t cause;
|
S1ap_Cause_t cause;
|
||||||
|
|
||||||
memset(&trace_id, 0, sizeof(E_UTRAN_Trace_ID_t));
|
memset(&trace_id, 0, sizeof(S1ap_E_UTRAN_Trace_ID_t));
|
||||||
memset(&cause, 0, sizeof(Cause_t));
|
memset(&cause, 0, sizeof(S1ap_Cause_t));
|
||||||
|
|
||||||
cause.present = Cause_PR_radioNetwork;
|
cause.present = S1ap_Cause_PR_radioNetwork;
|
||||||
cause.choice.radioNetwork = CauseRadioNetwork_unknown_pair_ue_s1ap_id;
|
cause.choice.radioNetwork = S1ap_CauseRadioNetwork_unknown_pair_ue_s1ap_id;
|
||||||
|
|
||||||
s1ap_eNB_generate_trace_failure(ue_desc_p, &trace_id, &cause);
|
s1ap_eNB_generate_trace_failure(ue_desc_p, &trace_id, &cause);
|
||||||
}
|
}
|
||||||
@@ -116,7 +118,7 @@ int s1ap_eNB_handle_deactivate_trace(uint32_t assoc_id,
|
|||||||
uint32_t stream,
|
uint32_t stream,
|
||||||
struct s1ap_message_s *message_p)
|
struct s1ap_message_s *message_p)
|
||||||
{
|
{
|
||||||
// DeactivateTraceIEs_t *deactivate_trace_p;
|
// S1ap_DeactivateTraceIEs_t *deactivate_trace_p;
|
||||||
//
|
//
|
||||||
// deactivate_trace_p = &message_p->msg.deactivateTraceIEs;
|
// deactivate_trace_p = &message_p->msg.deactivateTraceIEs;
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,8 @@
|
|||||||
|
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
|
|
||||||
static int s1ap_mme_decode_initiating(s1ap_message *message,
|
static int s1ap_mme_decode_initiating(
|
||||||
InitiatingMessage_t *initiating_p)
|
s1ap_message *message, S1ap_InitiatingMessage_t *initiating_p)
|
||||||
{
|
{
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
@@ -61,32 +61,33 @@ static int s1ap_mme_decode_initiating(s1ap_message *message,
|
|||||||
message->criticality = initiating_p->criticality;
|
message->criticality = initiating_p->criticality;
|
||||||
|
|
||||||
switch(initiating_p->procedureCode) {
|
switch(initiating_p->procedureCode) {
|
||||||
// case ProcedureCode_id_downlinkNASTransport:
|
// case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||||
// return s1ap_decode_downlinknastransporties(&message->msg.downlinkNASTransportIEs, &initiating_p->value);
|
// return s1ap_decode_downlinknastransporties(&message->msg.downlinkNASTransportIEs, &initiating_p->value);
|
||||||
case ProcedureCode_id_uplinkNASTransport:
|
case S1ap_ProcedureCode_id_uplinkNASTransport: {
|
||||||
ret = s1ap_decode_uplinknastransporties(&message->msg.uplinkNASTransportIEs,
|
ret = s1ap_decode_s1ap_uplinknastransporties(
|
||||||
|
&message->msg.s1ap_UplinkNASTransportIEs, &initiating_p->value);
|
||||||
|
} break;
|
||||||
|
case S1ap_ProcedureCode_id_S1Setup: {
|
||||||
|
ret = s1ap_decode_s1ap_s1setuprequesties(&message->msg.s1ap_S1SetupRequestIEs,
|
||||||
&initiating_p->value);
|
&initiating_p->value);
|
||||||
case ProcedureCode_id_S1Setup: {
|
s1ap_xer_print_s1ap_s1setuprequest(stdout, message);
|
||||||
ret = s1ap_decode_s1setuprequesties(&message->msg.s1SetupRequestIEs,
|
} break;
|
||||||
|
case S1ap_ProcedureCode_id_initialUEMessage: {
|
||||||
|
ret = s1ap_decode_s1ap_initialuemessageies(&message->msg.s1ap_InitialUEMessageIEs,
|
||||||
&initiating_p->value);
|
&initiating_p->value);
|
||||||
s1ap_xer_print_s1setuprequest(stdout, message);
|
s1ap_xer_print_s1ap_initialuemessage(stdout, message);
|
||||||
} break;
|
} break;
|
||||||
case ProcedureCode_id_initialUEMessage: {
|
case S1ap_ProcedureCode_id_UEContextReleaseRequest: {
|
||||||
ret = s1ap_decode_initialuemessageies(&message->msg.initialUEMessageIEs,
|
ret = s1ap_decode_s1ap_uecontextreleaserequesties(
|
||||||
&initiating_p->value);
|
&message->msg.s1ap_UEContextReleaseRequestIEs, &initiating_p->value);
|
||||||
s1ap_xer_print_initialuemessage(stdout, message);
|
s1ap_xer_print_s1ap_uecontextreleaserequest(stdout, message);
|
||||||
} break;
|
} break;
|
||||||
case ProcedureCode_id_UEContextReleaseRequest: {
|
case S1ap_ProcedureCode_id_UECapabilityInfoIndication: {
|
||||||
ret = s1ap_decode_uecontextreleaserequesties(
|
ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
|
||||||
&message->msg.ueContextReleaseRequestIEs, &initiating_p->value);
|
&message->msg.s1ap_UECapabilityInfoIndicationIEs, &initiating_p->value);
|
||||||
s1ap_xer_print_uecontextreleaserequest(stdout, message);
|
s1ap_xer_print_s1ap_uecapabilityinfoindication(stdout, message);
|
||||||
} break;
|
} break;
|
||||||
case ProcedureCode_id_UECapabilityInfoIndication: {
|
// case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
ret = s1ap_decode_uecapabilityinfoindicationies(
|
|
||||||
&message->msg.ueCapabilityInfoIndicationIEs, &initiating_p->value);
|
|
||||||
s1ap_xer_print_uecapabilityinfoindication(stdout, message);
|
|
||||||
} break;
|
|
||||||
// case ProcedureCode_id_InitialContextSetup:
|
|
||||||
// return s1ap_decode_initialcontextsetuprequesties(&message->msg.initialContextSetupRequestIEs, &initiating_p->value);
|
// return s1ap_decode_initialcontextsetuprequesties(&message->msg.initialContextSetupRequestIEs, &initiating_p->value);
|
||||||
default:
|
default:
|
||||||
S1AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
|
S1AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
|
||||||
@@ -96,8 +97,8 @@ static int s1ap_mme_decode_initiating(s1ap_message *message,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s1ap_mme_decode_successfull_outcome(s1ap_message *message,
|
static int s1ap_mme_decode_successfull_outcome(
|
||||||
SuccessfulOutcome_t *successfullOutcome_p)
|
s1ap_message *message, S1ap_SuccessfulOutcome_t *successfullOutcome_p)
|
||||||
{
|
{
|
||||||
DevAssert(successfullOutcome_p != NULL);
|
DevAssert(successfullOutcome_p != NULL);
|
||||||
|
|
||||||
@@ -105,12 +106,12 @@ static int s1ap_mme_decode_successfull_outcome(s1ap_message *message,
|
|||||||
message->criticality = successfullOutcome_p->criticality;
|
message->criticality = successfullOutcome_p->criticality;
|
||||||
|
|
||||||
switch(successfullOutcome_p->procedureCode) {
|
switch(successfullOutcome_p->procedureCode) {
|
||||||
case ProcedureCode_id_InitialContextSetup:
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
return s1ap_decode_initialcontextsetupresponseies(
|
return s1ap_decode_s1ap_initialcontextsetupresponseies(
|
||||||
&message->msg.initialContextSetupResponseIEs, &successfullOutcome_p->value);
|
&message->msg.s1ap_InitialContextSetupResponseIEs, &successfullOutcome_p->value);
|
||||||
case ProcedureCode_id_UEContextRelease:
|
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||||
return s1ap_decode_uecontextreleasecompleteies(
|
return s1ap_decode_s1ap_uecontextreleasecompleteies(
|
||||||
&message->msg.ueContextReleaseCompleteIEs, &successfullOutcome_p->value);
|
&message->msg.s1ap_UEContextReleaseCompleteIEs, &successfullOutcome_p->value);
|
||||||
default:
|
default:
|
||||||
S1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
|
S1AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
|
||||||
(int)successfullOutcome_p->procedureCode);
|
(int)successfullOutcome_p->procedureCode);
|
||||||
@@ -119,8 +120,8 @@ static int s1ap_mme_decode_successfull_outcome(s1ap_message *message,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s1ap_mme_decode_unsuccessfull_outcome(s1ap_message *message,
|
static int s1ap_mme_decode_unsuccessfull_outcome(
|
||||||
UnsuccessfulOutcome_t *unSuccessfulOutcome_p)
|
s1ap_message *message, S1ap_UnsuccessfulOutcome_t *unSuccessfulOutcome_p)
|
||||||
{
|
{
|
||||||
DevAssert(unSuccessfulOutcome_p != NULL);
|
DevAssert(unSuccessfulOutcome_p != NULL);
|
||||||
|
|
||||||
@@ -128,9 +129,9 @@ static int s1ap_mme_decode_unsuccessfull_outcome(s1ap_message *message,
|
|||||||
message->criticality = unSuccessfulOutcome_p->criticality;
|
message->criticality = unSuccessfulOutcome_p->criticality;
|
||||||
|
|
||||||
switch(unSuccessfulOutcome_p->procedureCode) {
|
switch(unSuccessfulOutcome_p->procedureCode) {
|
||||||
case ProcedureCode_id_InitialContextSetup:
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
return s1ap_decode_initialcontextsetupfailureies(
|
return s1ap_decode_s1ap_initialcontextsetupfailureies(
|
||||||
&message->msg.initialContextSetupFailureIEs, &unSuccessfulOutcome_p->value);
|
&message->msg.s1ap_InitialContextSetupFailureIEs, &unSuccessfulOutcome_p->value);
|
||||||
default:
|
default:
|
||||||
S1AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
S1AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
|
||||||
(int)unSuccessfulOutcome_p->procedureCode);
|
(int)unSuccessfulOutcome_p->procedureCode);
|
||||||
|
|||||||
@@ -75,22 +75,22 @@ static inline
|
|||||||
int s1ap_mme_encode_initial_context_setup_request(s1ap_message *message_p,
|
int s1ap_mme_encode_initial_context_setup_request(s1ap_message *message_p,
|
||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
InitialContextSetupRequest_t initialContextSetupRequest;
|
S1ap_InitialContextSetupRequest_t initialContextSetupRequest;
|
||||||
InitialContextSetupRequest_t *initialContextSetupRequest_p =
|
S1ap_InitialContextSetupRequest_t *initialContextSetupRequest_p =
|
||||||
&initialContextSetupRequest;
|
&initialContextSetupRequest;
|
||||||
|
|
||||||
memset(initialContextSetupRequest_p, 0, sizeof(InitialContextSetupRequest_t));
|
memset(initialContextSetupRequest_p, 0, sizeof(S1ap_InitialContextSetupRequest_t));
|
||||||
|
|
||||||
if (s1ap_encode_initialcontextsetuprequesties(initialContextSetupRequest_p,
|
if (s1ap_encode_s1ap_initialcontextsetuprequesties(initialContextSetupRequest_p,
|
||||||
&message_p->msg.initialContextSetupRequestIEs) < 0) {
|
&message_p->msg.s1ap_InitialContextSetupRequestIEs) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_InitialContextSetup,
|
S1ap_ProcedureCode_id_InitialContextSetup,
|
||||||
Criticality_reject,
|
S1ap_Criticality_reject,
|
||||||
&asn_DEF_InitialContextSetupRequest,
|
&asn_DEF_S1ap_InitialContextSetupRequest,
|
||||||
initialContextSetupRequest_p);
|
initialContextSetupRequest_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,11 +121,11 @@ int s1ap_mme_encode_initiating(s1ap_message *message_p,
|
|||||||
uint32_t *length)
|
uint32_t *length)
|
||||||
{
|
{
|
||||||
switch(message_p->procedureCode) {
|
switch(message_p->procedureCode) {
|
||||||
case ProcedureCode_id_downlinkNASTransport:
|
case S1ap_ProcedureCode_id_downlinkNASTransport:
|
||||||
return s1ap_mme_encode_downlink_nas_transport(message_p, buffer, length);
|
return s1ap_mme_encode_downlink_nas_transport(message_p, buffer, length);
|
||||||
case ProcedureCode_id_InitialContextSetup:
|
case S1ap_ProcedureCode_id_InitialContextSetup:
|
||||||
return s1ap_mme_encode_initial_context_setup_request(message_p, buffer, length);
|
return s1ap_mme_encode_initial_context_setup_request(message_p, buffer, length);
|
||||||
case ProcedureCode_id_UEContextRelease:
|
case S1ap_ProcedureCode_id_UEContextRelease:
|
||||||
return s1ap_mme_encode_ue_context_release_command(message_p, buffer, length);
|
return s1ap_mme_encode_ue_context_release_command(message_p, buffer, length);
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message_p\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for initiating message_p\n",
|
||||||
@@ -140,7 +140,7 @@ int s1ap_mme_encode_successfull_outcome(s1ap_message *message_p,
|
|||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
switch(message_p->procedureCode) {
|
switch(message_p->procedureCode) {
|
||||||
case ProcedureCode_id_S1Setup:
|
case S1ap_ProcedureCode_id_S1Setup:
|
||||||
return s1ap_mme_encode_s1setupresponse(message_p, buffer, length);
|
return s1ap_mme_encode_s1setupresponse(message_p, buffer, length);
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message_p\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for successfull outcome message_p\n",
|
||||||
@@ -155,7 +155,7 @@ int s1ap_mme_encode_unsuccessfull_outcome(s1ap_message *message_p,
|
|||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
switch(message_p->procedureCode) {
|
switch(message_p->procedureCode) {
|
||||||
case ProcedureCode_id_S1Setup:
|
case S1ap_ProcedureCode_id_S1Setup:
|
||||||
return s1ap_mme_encode_s1setupfailure(message_p, buffer, length);
|
return s1ap_mme_encode_s1setupfailure(message_p, buffer, length);
|
||||||
default:
|
default:
|
||||||
S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message_p\n",
|
S1AP_DEBUG("Unknown procedure ID (%d) for unsuccessfull outcome message_p\n",
|
||||||
@@ -169,20 +169,21 @@ static inline
|
|||||||
int s1ap_mme_encode_s1setupresponse(s1ap_message *message_p,
|
int s1ap_mme_encode_s1setupresponse(s1ap_message *message_p,
|
||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
S1SetupResponse_t s1SetupResponse;
|
S1ap_S1SetupResponse_t s1SetupResponse;
|
||||||
S1SetupResponse_t *s1SetupResponse_p = &s1SetupResponse;
|
S1ap_S1SetupResponse_t *s1SetupResponse_p = &s1SetupResponse;
|
||||||
|
|
||||||
memset(s1SetupResponse_p, 0, sizeof(S1SetupResponse_t));
|
memset(s1SetupResponse_p, 0, sizeof(S1ap_S1SetupResponse_t));
|
||||||
|
|
||||||
if (s1ap_encode_s1setupresponseies(s1SetupResponse_p, &message_p->msg.s1SetupResponseIEs) < 0) {
|
if (s1ap_encode_s1ap_s1setupresponseies(s1SetupResponse_p, &message_p->msg.s1ap_S1SetupResponseIEs) < 0)
|
||||||
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_successfull_outcome(buffer,
|
return s1ap_generate_successfull_outcome(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_S1Setup,
|
S1ap_ProcedureCode_id_S1Setup,
|
||||||
message_p->criticality,
|
message_p->criticality,
|
||||||
&asn_DEF_S1SetupResponse,
|
&asn_DEF_S1ap_S1SetupResponse,
|
||||||
s1SetupResponse_p);
|
s1SetupResponse_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,20 +191,20 @@ static inline
|
|||||||
int s1ap_mme_encode_s1setupfailure(s1ap_message *message_p,
|
int s1ap_mme_encode_s1setupfailure(s1ap_message *message_p,
|
||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
S1SetupFailure_t s1SetupFailure;
|
S1ap_S1SetupFailure_t s1SetupFailure;
|
||||||
S1SetupFailure_t *s1SetupFailure_p = &s1SetupFailure;
|
S1ap_S1SetupFailure_t *s1SetupFailure_p = &s1SetupFailure;
|
||||||
|
|
||||||
memset(s1SetupFailure_p, 0, sizeof(S1SetupFailure_t));
|
memset(s1SetupFailure_p, 0, sizeof(S1ap_S1SetupFailure_t));
|
||||||
|
|
||||||
if (s1ap_encode_s1setupfailureies(s1SetupFailure_p, &message_p->msg.s1SetupFailureIEs) < 0) {
|
if (s1ap_encode_s1ap_s1setupfailureies(s1SetupFailure_p, &message_p->msg.s1ap_S1SetupFailureIEs) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_unsuccessfull_outcome(buffer,
|
return s1ap_generate_unsuccessfull_outcome(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_S1Setup,
|
S1ap_ProcedureCode_id_S1Setup,
|
||||||
message_p->criticality,
|
message_p->criticality,
|
||||||
&asn_DEF_S1SetupFailure,
|
&asn_DEF_S1ap_S1SetupFailure,
|
||||||
s1SetupFailure_p);
|
s1SetupFailure_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,23 +212,23 @@ static inline
|
|||||||
int s1ap_mme_encode_downlink_nas_transport(
|
int s1ap_mme_encode_downlink_nas_transport(
|
||||||
s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
s1ap_message *message_p, uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
DownlinkNASTransport_t downlinkNasTransport;
|
S1ap_DownlinkNASTransport_t downlinkNasTransport;
|
||||||
DownlinkNASTransport_t *downlinkNasTransport_p = &downlinkNasTransport;
|
S1ap_DownlinkNASTransport_t *downlinkNasTransport_p = &downlinkNasTransport;
|
||||||
|
|
||||||
memset(downlinkNasTransport_p, 0, sizeof(DownlinkNASTransport_t));
|
memset(downlinkNasTransport_p, 0, sizeof(S1ap_DownlinkNASTransport_t));
|
||||||
|
|
||||||
/* Convert IE structure into asn1 message_p */
|
/* Convert IE structure into asn1 message_p */
|
||||||
if (s1ap_encode_downlinknastransporties(downlinkNasTransport_p,
|
if (s1ap_encode_s1ap_downlinknastransporties(downlinkNasTransport_p,
|
||||||
&message_p->msg.downlinkNASTransportIEs) < 0) {
|
&message_p->msg.s1ap_DownlinkNASTransportIEs) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Generate Initiating message_p for the list of IEs */
|
/* Generate Initiating message_p for the list of IEs */
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_downlinkNASTransport,
|
S1ap_ProcedureCode_id_downlinkNASTransport,
|
||||||
message_p->criticality,
|
message_p->criticality,
|
||||||
&asn_DEF_DownlinkNASTransport,
|
&asn_DEF_S1ap_DownlinkNASTransport,
|
||||||
downlinkNasTransport_p);
|
downlinkNasTransport_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,21 +236,21 @@ static inline
|
|||||||
int s1ap_mme_encode_ue_context_release_command(s1ap_message *message_p,
|
int s1ap_mme_encode_ue_context_release_command(s1ap_message *message_p,
|
||||||
uint8_t **buffer, uint32_t *length)
|
uint8_t **buffer, uint32_t *length)
|
||||||
{
|
{
|
||||||
UEContextReleaseCommand_t ueContextReleaseCommand;
|
S1ap_UEContextReleaseCommand_t ueContextReleaseCommand;
|
||||||
UEContextReleaseCommand_t *ueContextReleaseCommand_p = &ueContextReleaseCommand;
|
S1ap_UEContextReleaseCommand_t *ueContextReleaseCommand_p = &ueContextReleaseCommand;
|
||||||
|
|
||||||
memset(ueContextReleaseCommand_p, 0, sizeof(UEContextReleaseCommand_t));
|
memset(ueContextReleaseCommand_p, 0, sizeof(S1ap_UEContextReleaseCommand_t));
|
||||||
|
|
||||||
/* Convert IE structure into asn1 message_p */
|
/* Convert IE structure into asn1 message_p */
|
||||||
if (s1ap_encode_uecontextreleasecommandies(ueContextReleaseCommand_p,
|
if (s1ap_encode_s1ap_uecontextreleasecommandies(ueContextReleaseCommand_p,
|
||||||
&message_p->msg.ueContextReleaseCommandIEs) < 0) {
|
&message_p->msg.s1ap_UEContextReleaseCommandIEs) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s1ap_generate_initiating_message(buffer,
|
return s1ap_generate_initiating_message(buffer,
|
||||||
length,
|
length,
|
||||||
ProcedureCode_id_UEContextRelease,
|
S1ap_ProcedureCode_id_UEContextRelease,
|
||||||
message_p->criticality,
|
message_p->criticality,
|
||||||
&asn_DEF_UEContextReleaseCommand,
|
&asn_DEF_S1ap_UEContextReleaseCommand,
|
||||||
ueContextReleaseCommand_p);
|
ueContextReleaseCommand_p);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ int s1ap_mme_handle_message(uint32_t assoc_id, uint32_t stream,
|
|||||||
assoc_id, stream, message);
|
assoc_id, stream, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
int s1ap_mme_set_cause(Cause_t *cause_p, Cause_PR cause_type, long cause_value)
|
int s1ap_mme_set_cause(S1ap_Cause_t *cause_p, S1ap_Cause_PR cause_type, long cause_value)
|
||||||
{
|
{
|
||||||
DevAssert(cause_p != NULL);
|
DevAssert(cause_p != NULL);
|
||||||
|
|
||||||
@@ -157,19 +157,19 @@ int s1ap_mme_set_cause(Cause_t *cause_p, Cause_PR cause_type, long cause_value)
|
|||||||
|
|
||||||
switch(cause_type)
|
switch(cause_type)
|
||||||
{
|
{
|
||||||
case Cause_PR_radioNetwork:
|
case S1ap_Cause_PR_radioNetwork:
|
||||||
cause_p->choice.misc = cause_value;
|
cause_p->choice.misc = cause_value;
|
||||||
break;
|
break;
|
||||||
case Cause_PR_transport:
|
case S1ap_Cause_PR_transport:
|
||||||
cause_p->choice.transport = cause_value;
|
cause_p->choice.transport = cause_value;
|
||||||
break;
|
break;
|
||||||
case Cause_PR_nas:
|
case S1ap_Cause_PR_nas:
|
||||||
cause_p->choice.nas = cause_value;
|
cause_p->choice.nas = cause_value;
|
||||||
break;
|
break;
|
||||||
case Cause_PR_protocol:
|
case S1ap_Cause_PR_protocol:
|
||||||
cause_p->choice.protocol = cause_value;
|
cause_p->choice.protocol = cause_value;
|
||||||
break;
|
break;
|
||||||
case Cause_PR_misc:
|
case S1ap_Cause_PR_misc:
|
||||||
cause_p->choice.misc = cause_value;
|
cause_p->choice.misc = cause_value;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -179,26 +179,26 @@ int s1ap_mme_set_cause(Cause_t *cause_p, Cause_PR cause_type, long cause_value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int s1ap_mme_generate_s1_setup_failure(
|
int s1ap_mme_generate_s1_setup_failure(
|
||||||
uint32_t assoc_id, Cause_PR cause_type, long cause_value,
|
uint32_t assoc_id, S1ap_Cause_PR cause_type, long cause_value,
|
||||||
long time_to_wait)
|
long time_to_wait)
|
||||||
{
|
{
|
||||||
uint8_t *buffer_p;
|
uint8_t *buffer_p;
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
S1SetupFailureIEs_t *s1_setup_failure_p;
|
S1ap_S1SetupFailureIEs_t *s1_setup_failure_p;
|
||||||
|
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
s1_setup_failure_p = &message.msg.s1SetupFailureIEs;
|
s1_setup_failure_p = &message.msg.s1ap_S1SetupFailureIEs;
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_S1Setup;
|
message.procedureCode = S1ap_ProcedureCode_id_S1Setup;
|
||||||
message.direction = S1AP_PDU_PR_unsuccessfulOutcome;
|
message.direction = S1AP_PDU_PR_unsuccessfulOutcome;
|
||||||
|
|
||||||
s1ap_mme_set_cause(&s1_setup_failure_p->cause, cause_type, cause_value);
|
s1ap_mme_set_cause(&s1_setup_failure_p->cause, cause_type, cause_value);
|
||||||
|
|
||||||
/* Include the optional field time to wait only if the value is > -1 */
|
/* Include the optional field time to wait only if the value is > -1 */
|
||||||
if (time_to_wait > -1) {
|
if (time_to_wait > -1) {
|
||||||
s1_setup_failure_p->presenceMask |= S1SETUPFAILUREIES_TIMETOWAIT_PRESENT;
|
s1_setup_failure_p->presenceMask |= S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT;
|
||||||
s1_setup_failure_p->timeToWait = time_to_wait;
|
s1_setup_failure_p->timeToWait = time_to_wait;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ int s1ap_mme_generate_s1_setup_failure(
|
|||||||
int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
S1SetupRequestIEs_t *s1SetupRequest_p;
|
S1ap_S1SetupRequestIEs_t *s1SetupRequest_p;
|
||||||
eNB_description_t *eNB_association;
|
eNB_description_t *eNB_association;
|
||||||
uint32_t eNB_id = 0;
|
uint32_t eNB_id = 0;
|
||||||
char *eNB_name = NULL;
|
char *eNB_name = NULL;
|
||||||
@@ -226,7 +226,7 @@ int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
|
|
||||||
DevAssert(message != NULL);
|
DevAssert(message != NULL);
|
||||||
|
|
||||||
s1SetupRequest_p = &message->msg.s1SetupRequestIEs;
|
s1SetupRequest_p = &message->msg.s1ap_S1SetupRequestIEs;
|
||||||
|
|
||||||
/* We received a new valid S1 Setup Request on a stream != 0.
|
/* We received a new valid S1 Setup Request on a stream != 0.
|
||||||
* This should not happen -> reject eNB s1 setup request.
|
* This should not happen -> reject eNB s1 setup request.
|
||||||
@@ -234,17 +234,17 @@ int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
if (stream != 0) {
|
if (stream != 0) {
|
||||||
S1AP_DEBUG("Received new s1 setup request on stream != 0\n");
|
S1AP_DEBUG("Received new s1 setup request on stream != 0\n");
|
||||||
/* Send a s1 setup failure with protocol cause unspecified */
|
/* Send a s1 setup failure with protocol cause unspecified */
|
||||||
return s1ap_mme_generate_s1_setup_failure(assoc_id, Cause_PR_protocol,
|
return s1ap_mme_generate_s1_setup_failure(assoc_id, S1ap_Cause_PR_protocol,
|
||||||
CauseProtocol_unspecified, -1);
|
S1ap_CauseProtocol_unspecified, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
S1AP_DEBUG("New s1 setup request incoming from ");
|
S1AP_DEBUG("New s1 setup request incoming from ");
|
||||||
if ((s1SetupRequest_p->presenceMask & S1SETUPREQUESTIES_ENBNAME_PRESENT) ==
|
if (s1SetupRequest_p->presenceMask & S1AP_S1SETUPREQUESTIES_ENBNAME_PRESENT)
|
||||||
S1SETUPREQUESTIES_ENBNAME_PRESENT) {
|
{
|
||||||
S1AP_DEBUG("%*s ", s1SetupRequest_p->eNBname.size, s1SetupRequest_p->eNBname.buf);
|
S1AP_DEBUG("%*s ", s1SetupRequest_p->eNBname.size, s1SetupRequest_p->eNBname.buf);
|
||||||
eNB_name = (char *)s1SetupRequest_p->eNBname.buf;
|
eNB_name = (char *)s1SetupRequest_p->eNBname.buf;
|
||||||
}
|
}
|
||||||
if (s1SetupRequest_p->global_ENB_ID.eNB_ID.present == ENB_ID_PR_homeENB_ID) {
|
if (s1SetupRequest_p->global_ENB_ID.eNB_ID.present == S1ap_ENB_ID_PR_homeENB_ID) {
|
||||||
// Home eNB ID = 28 bits
|
// Home eNB ID = 28 bits
|
||||||
uint8_t *eNB_id_buf =
|
uint8_t *eNB_id_buf =
|
||||||
s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.homeENB_ID.buf;
|
s1SetupRequest_p->global_ENB_ID.eNB_ID.choice.homeENB_ID.buf;
|
||||||
@@ -276,9 +276,9 @@ int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
max_enb_connected);
|
max_enb_connected);
|
||||||
|
|
||||||
/* Send an overload cause... */
|
/* Send an overload cause... */
|
||||||
return s1ap_mme_generate_s1_setup_failure(assoc_id, Cause_PR_misc,
|
return s1ap_mme_generate_s1_setup_failure(assoc_id, S1ap_Cause_PR_misc,
|
||||||
CauseMisc_control_processing_overload,
|
S1ap_CauseMisc_control_processing_overload,
|
||||||
TimeToWait_v20s);
|
S1ap_TimeToWait_v20s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If none of the provided PLMNs/TAC match the one configured in MME,
|
/* If none of the provided PLMNs/TAC match the one configured in MME,
|
||||||
@@ -288,9 +288,9 @@ int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
|
|
||||||
/* eNB and MME have no common PLMN */
|
/* eNB and MME have no common PLMN */
|
||||||
if (ta_ret != TA_LIST_RET_OK) {
|
if (ta_ret != TA_LIST_RET_OK) {
|
||||||
return s1ap_mme_generate_s1_setup_failure(assoc_id, Cause_PR_misc,
|
return s1ap_mme_generate_s1_setup_failure(assoc_id, S1ap_Cause_PR_misc,
|
||||||
CauseMisc_unknown_PLMN,
|
S1ap_CauseMisc_unknown_PLMN,
|
||||||
TimeToWait_v20s);
|
S1ap_TimeToWait_v20s);
|
||||||
}
|
}
|
||||||
|
|
||||||
S1AP_DEBUG("Adding eNB to the list of served eNBs\n");
|
S1AP_DEBUG("Adding eNB to the list of served eNBs\n");
|
||||||
@@ -317,12 +317,13 @@ int s1ap_mme_handle_s1_setup_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
/* eNB has been fount in list, consider the s1 setup request as a reset connection,
|
/* eNB has been fount in list, consider the s1 setup request as a reset connection,
|
||||||
* reseting any previous UE state if sctp association is != than the previous one */
|
* reseting any previous UE state if sctp association is != than the previous one */
|
||||||
if (eNB_association->sctp_assoc_id != assoc_id) {
|
if (eNB_association->sctp_assoc_id != assoc_id) {
|
||||||
S1SetupFailureIEs_t s1SetupFailure;
|
S1ap_S1SetupFailureIEs_t s1SetupFailure;
|
||||||
memset(&s1SetupFailure, 0, sizeof(S1SetupFailureIEs_t));
|
|
||||||
|
memset(&s1SetupFailure, 0, sizeof(s1SetupFailure));
|
||||||
|
|
||||||
/* Send an overload cause... */
|
/* Send an overload cause... */
|
||||||
s1SetupFailure.cause.present = Cause_PR_misc; //TODO: send the right cause
|
s1SetupFailure.cause.present = S1ap_Cause_PR_misc; //TODO: send the right cause
|
||||||
s1SetupFailure.cause.choice.misc = CauseMisc_control_processing_overload;
|
s1SetupFailure.cause.choice.misc = S1ap_CauseMisc_control_processing_overload;
|
||||||
S1AP_DEBUG("Rejeting s1 setup request as eNB id %d is already associated to an active sctp association"
|
S1AP_DEBUG("Rejeting s1 setup request as eNB id %d is already associated to an active sctp association"
|
||||||
"Previous known: %d, new one: %d\n",
|
"Previous known: %d, new one: %d\n",
|
||||||
eNB_id, eNB_association->sctp_assoc_id, assoc_id);
|
eNB_id, eNB_association->sctp_assoc_id, assoc_id);
|
||||||
@@ -341,8 +342,8 @@ int s1ap_generate_s1_setup_response(eNB_description_t *eNB_association)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int enc_rval = 0;
|
int enc_rval = 0;
|
||||||
S1SetupResponseIEs_t *s1_setup_response_p;
|
S1ap_S1SetupResponseIEs_t *s1_setup_response_p;
|
||||||
ServedGUMMEIsItem_t servedGUMMEI;
|
S1ap_ServedGUMMEIsItem_t servedGUMMEI;
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
uint8_t *buffer;
|
uint8_t *buffer;
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
@@ -351,9 +352,9 @@ int s1ap_generate_s1_setup_response(eNB_description_t *eNB_association)
|
|||||||
|
|
||||||
// Generating response
|
// Generating response
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
memset(&servedGUMMEI, 0, sizeof(ServedGUMMEIsItem_t));
|
memset(&servedGUMMEI, 0, sizeof(servedGUMMEI));
|
||||||
|
|
||||||
s1_setup_response_p = &message.msg.s1SetupResponseIEs;
|
s1_setup_response_p = &message.msg.s1ap_S1SetupResponseIEs;
|
||||||
|
|
||||||
config_read_lock(&mme_config);
|
config_read_lock(&mme_config);
|
||||||
|
|
||||||
@@ -361,28 +362,28 @@ int s1ap_generate_s1_setup_response(eNB_description_t *eNB_association)
|
|||||||
|
|
||||||
/* Use the gummei parameters provided by configuration */
|
/* Use the gummei parameters provided by configuration */
|
||||||
for (i = 0; i < mme_config.gummei.nb_plmns; i++) {
|
for (i = 0; i < mme_config.gummei.nb_plmns; i++) {
|
||||||
PLMNidentity_t *plmn;
|
S1ap_PLMNidentity_t *plmn;
|
||||||
|
|
||||||
/* FIXME: free object from list once encoded */
|
/* FIXME: free object from list once encoded */
|
||||||
plmn = calloc(1, sizeof(PLMNidentity_t));
|
plmn = calloc(1, sizeof(*plmn));
|
||||||
MCC_MNC_TO_PLMNID(mme_config.gummei.plmn_mcc[i],
|
MCC_MNC_TO_PLMNID(mme_config.gummei.plmn_mcc[i],
|
||||||
mme_config.gummei.plmn_mnc[i],
|
mme_config.gummei.plmn_mnc[i],
|
||||||
plmn);
|
plmn);
|
||||||
ASN_SEQUENCE_ADD(&servedGUMMEI.servedPLMNs.list, plmn);
|
ASN_SEQUENCE_ADD(&servedGUMMEI.servedPLMNs.list, plmn);
|
||||||
}
|
}
|
||||||
for (i = 0; i < mme_config.gummei.nb_mme_gid; i++) {
|
for (i = 0; i < mme_config.gummei.nb_mme_gid; i++) {
|
||||||
MME_Group_ID_t *mme_gid;
|
S1ap_MME_Group_ID_t *mme_gid;
|
||||||
|
|
||||||
/* FIXME: free object from list once encoded */
|
/* FIXME: free object from list once encoded */
|
||||||
mme_gid = calloc(1, sizeof(MME_Group_ID_t));
|
mme_gid = calloc(1, sizeof(*mme_gid));
|
||||||
INT16_TO_OCTET_STRING(mme_config.gummei.mme_gid[i], mme_gid);
|
INT16_TO_OCTET_STRING(mme_config.gummei.mme_gid[i], mme_gid);
|
||||||
ASN_SEQUENCE_ADD(&servedGUMMEI.servedGroupIDs.list, mme_gid);
|
ASN_SEQUENCE_ADD(&servedGUMMEI.servedGroupIDs.list, mme_gid);
|
||||||
}
|
}
|
||||||
for (i = 0; i < mme_config.gummei.nb_mmec; i++) {
|
for (i = 0; i < mme_config.gummei.nb_mmec; i++) {
|
||||||
MME_Code_t *mmec;
|
S1ap_MME_Code_t *mmec;
|
||||||
|
|
||||||
/* FIXME: free object from list once encoded */
|
/* FIXME: free object from list once encoded */
|
||||||
mmec = calloc(1, sizeof(MME_Code_t));
|
mmec = calloc(1, sizeof(*mmec));
|
||||||
INT8_TO_OCTET_STRING(mme_config.gummei.mmec[i], mmec);
|
INT8_TO_OCTET_STRING(mme_config.gummei.mmec[i], mmec);
|
||||||
ASN_SEQUENCE_ADD(&servedGUMMEI.servedMMECs.list, mmec);
|
ASN_SEQUENCE_ADD(&servedGUMMEI.servedMMECs.list, mmec);
|
||||||
}
|
}
|
||||||
@@ -392,7 +393,7 @@ int s1ap_generate_s1_setup_response(eNB_description_t *eNB_association)
|
|||||||
/* The MME is only serving E-UTRAN RAT, so the list contains only one element */
|
/* The MME is only serving E-UTRAN RAT, so the list contains only one element */
|
||||||
ASN_SEQUENCE_ADD(&s1_setup_response_p->servedGUMMEIs, &servedGUMMEI);
|
ASN_SEQUENCE_ADD(&s1_setup_response_p->servedGUMMEIs, &servedGUMMEI);
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_S1Setup;
|
message.procedureCode = S1ap_ProcedureCode_id_S1Setup;
|
||||||
message.direction = S1AP_PDU_PR_successfulOutcome;
|
message.direction = S1AP_PDU_PR_successfulOutcome;
|
||||||
|
|
||||||
enc_rval = s1ap_mme_encode_pdu(&message, &buffer, &length);
|
enc_rval = s1ap_mme_encode_pdu(&message, &buffer, &length);
|
||||||
@@ -414,11 +415,11 @@ int s1ap_mme_handle_ue_cap_indication(uint32_t assoc_id, uint32_t stream,
|
|||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
ue_description_t *ue_ref;
|
ue_description_t *ue_ref;
|
||||||
UECapabilityInfoIndicationIEs_t *ue_cap_p;
|
S1ap_UECapabilityInfoIndicationIEs_t *ue_cap_p;
|
||||||
|
|
||||||
DevAssert(message != NULL);
|
DevAssert(message != NULL);
|
||||||
|
|
||||||
ue_cap_p = &message->msg.ueCapabilityInfoIndicationIEs;
|
ue_cap_p = &message->msg.s1ap_UECapabilityInfoIndicationIEs;
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(ue_cap_p->mme_ue_s1ap_id)) == NULL) {
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(ue_cap_p->mme_ue_s1ap_id)) == NULL) {
|
||||||
S1AP_DEBUG("No UE is attached to this mme UE s1ap id: 0x%08x\n",
|
S1AP_DEBUG("No UE is attached to this mme UE s1ap id: 0x%08x\n",
|
||||||
@@ -476,13 +477,14 @@ int s1ap_mme_handle_initial_context_setup_response(
|
|||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
|
|
||||||
InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs_p;
|
S1ap_InitialContextSetupResponseIEs_t *initialContextSetupResponseIEs_p;
|
||||||
|
S1ap_E_RABSetupItemCtxtSURes_t *eRABSetupItemCtxtSURes_p;
|
||||||
|
|
||||||
ue_description_t *ue_ref;
|
ue_description_t *ue_ref;
|
||||||
SgwModifyBearerRequest *modify_request_p;
|
SgwModifyBearerRequest *modify_request_p;
|
||||||
MessageDef *message_p;
|
MessageDef *message_p;
|
||||||
E_RABSetupItemCtxtSURes_t *eRABSetupItemCtxtSURes_p;
|
|
||||||
|
|
||||||
initialContextSetupResponseIEs_p = &message->msg.initialContextSetupResponseIEs;
|
initialContextSetupResponseIEs_p = &message->msg.s1ap_InitialContextSetupResponseIEs;
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
||||||
(uint32_t)initialContextSetupResponseIEs_p->mme_ue_s1ap_id)) == NULL) {
|
(uint32_t)initialContextSetupResponseIEs_p->mme_ue_s1ap_id)) == NULL) {
|
||||||
@@ -498,7 +500,7 @@ int s1ap_mme_handle_initial_context_setup_response(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initialContextSetupResponseIEs_p->e_RABSetupListCtxtSURes.e_RABSetupItemCtxtSURes.count
|
if (initialContextSetupResponseIEs_p->e_RABSetupListCtxtSURes.s1ap_E_RABSetupItemCtxtSURes.count
|
||||||
!= 1) {
|
!= 1) {
|
||||||
S1AP_DEBUG("E-RAB creation has failed\n");
|
S1AP_DEBUG("E-RAB creation has failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
@@ -512,8 +514,9 @@ int s1ap_mme_handle_initial_context_setup_response(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
eRABSetupItemCtxtSURes_p = (E_RABSetupItemCtxtSURes_t *)
|
/* Bad, very bad cast... */
|
||||||
initialContextSetupResponseIEs_p->e_RABSetupListCtxtSURes.e_RABSetupItemCtxtSURes.array[0];
|
eRABSetupItemCtxtSURes_p = (S1ap_E_RABSetupItemCtxtSURes_t *)
|
||||||
|
initialContextSetupResponseIEs_p->e_RABSetupListCtxtSURes.s1ap_E_RABSetupItemCtxtSURes.array[0];
|
||||||
|
|
||||||
modify_request_p = &message_p->msg.sgwModifyBearerRequest;
|
modify_request_p = &message_p->msg.sgwModifyBearerRequest;
|
||||||
// modify_request_p->teid = ue_ref->teid;
|
// modify_request_p->teid = ue_ref->teid;
|
||||||
@@ -531,17 +534,17 @@ int s1ap_mme_handle_initial_context_setup_response(
|
|||||||
int s1ap_mme_handle_ue_context_release_request(uint32_t assoc_id,
|
int s1ap_mme_handle_ue_context_release_request(uint32_t assoc_id,
|
||||||
uint32_t stream, struct s1ap_message_s *message)
|
uint32_t stream, struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
UEContextReleaseRequestIEs_t *ueContextReleaseRequest_p;
|
S1ap_UEContextReleaseRequestIEs_t *ueContextReleaseRequest_p;
|
||||||
ue_description_t *ue_ref = NULL;
|
ue_description_t *ue_ref = NULL;
|
||||||
|
|
||||||
ueContextReleaseRequest_p = &message->msg.ueContextReleaseRequestIEs;
|
ueContextReleaseRequest_p = &message->msg.s1ap_UEContextReleaseRequestIEs;
|
||||||
|
|
||||||
/* The UE context release procedure is initiated if the cause is != than user inactivity.
|
/* The UE context release procedure is initiated if the cause is != than user inactivity.
|
||||||
* TS36.413 #8.3.2.2.
|
* TS36.413 #8.3.2.2.
|
||||||
*/
|
*/
|
||||||
if (ueContextReleaseRequest_p->cause.present == Cause_PR_radioNetwork) {
|
if (ueContextReleaseRequest_p->cause.present == S1ap_Cause_PR_radioNetwork) {
|
||||||
if (ueContextReleaseRequest_p->cause.choice.radioNetwork ==
|
if (ueContextReleaseRequest_p->cause.choice.radioNetwork ==
|
||||||
CauseRadioNetwork_user_inactivity) {
|
S1ap_CauseRadioNetwork_user_inactivity) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -573,20 +576,20 @@ static int s1ap_mme_generate_ue_context_release_command(
|
|||||||
uint32_t length;
|
uint32_t length;
|
||||||
|
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
UEContextReleaseCommandIEs_t *ueContextReleaseCommandIEs_p;
|
S1ap_UEContextReleaseCommandIEs_t *ueContextReleaseCommandIEs_p;
|
||||||
|
|
||||||
if (ue_ref == NULL) {
|
if (ue_ref == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_UEContextRelease;
|
message.procedureCode = S1ap_ProcedureCode_id_UEContextRelease;
|
||||||
message.direction = S1AP_PDU_PR_successfulOutcome;
|
message.direction = S1AP_PDU_PR_successfulOutcome;
|
||||||
|
|
||||||
ueContextReleaseCommandIEs_p = &message.msg.ueContextReleaseCommandIEs;
|
ueContextReleaseCommandIEs_p = &message.msg.s1ap_UEContextReleaseCommandIEs;
|
||||||
|
|
||||||
/* Fill in ID pair */
|
/* Fill in ID pair */
|
||||||
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.present = UE_S1AP_IDs_PR_uE_S1AP_ID_pair;
|
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.present = S1ap_UE_S1AP_IDs_PR_uE_S1AP_ID_pair;
|
||||||
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID =
|
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.mME_UE_S1AP_ID =
|
||||||
ue_ref->mme_ue_s1ap_id;
|
ue_ref->mme_ue_s1ap_id;
|
||||||
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.eNB_UE_S1AP_ID =
|
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.eNB_UE_S1AP_ID =
|
||||||
@@ -594,9 +597,9 @@ static int s1ap_mme_generate_ue_context_release_command(
|
|||||||
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.iE_Extensions =
|
ueContextReleaseCommandIEs_p->uE_S1AP_IDs.choice.uE_S1AP_ID_pair.iE_Extensions =
|
||||||
NULL;
|
NULL;
|
||||||
|
|
||||||
ueContextReleaseCommandIEs_p->cause.present = Cause_PR_radioNetwork;
|
ueContextReleaseCommandIEs_p->cause.present = S1ap_Cause_PR_radioNetwork;
|
||||||
ueContextReleaseCommandIEs_p->cause.choice.radioNetwork =
|
ueContextReleaseCommandIEs_p->cause.choice.radioNetwork =
|
||||||
CauseRadioNetwork_release_due_to_eutran_generated_reason;
|
S1ap_CauseRadioNetwork_release_due_to_eutran_generated_reason;
|
||||||
|
|
||||||
if (s1ap_mme_encode_pdu(&message, &buffer, &length) < 0) {
|
if (s1ap_mme_encode_pdu(&message, &buffer, &length) < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
@@ -608,10 +611,10 @@ static int s1ap_mme_generate_ue_context_release_command(
|
|||||||
int s1ap_mme_handle_ue_context_release_complete(uint32_t assoc_id,
|
int s1ap_mme_handle_ue_context_release_complete(uint32_t assoc_id,
|
||||||
uint32_t stream, struct s1ap_message_s *message)
|
uint32_t stream, struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
UEContextReleaseCompleteIEs_t *ueContextReleaseComplete_p;
|
S1ap_UEContextReleaseCompleteIEs_t *ueContextReleaseComplete_p;
|
||||||
ue_description_t *ue_ref = NULL;
|
ue_description_t *ue_ref = NULL;
|
||||||
|
|
||||||
ueContextReleaseComplete_p = &message->msg.ueContextReleaseCompleteIEs;
|
ueContextReleaseComplete_p = &message->msg.s1ap_UEContextReleaseCompleteIEs;
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
||||||
ueContextReleaseComplete_p->mme_ue_s1ap_id)) == NULL) {
|
ueContextReleaseComplete_p->mme_ue_s1ap_id)) == NULL) {
|
||||||
@@ -632,13 +635,15 @@ int s1ap_mme_handle_ue_context_release_complete(uint32_t assoc_id,
|
|||||||
int s1ap_mme_handle_initial_context_setup_failure(uint32_t assoc_id,
|
int s1ap_mme_handle_initial_context_setup_failure(uint32_t assoc_id,
|
||||||
uint32_t stream, struct s1ap_message_s *message)
|
uint32_t stream, struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
InitialContextSetupFailureIEs_t *initialContextSetupFailureIEs_p;
|
S1ap_InitialContextSetupFailureIEs_t *initialContextSetupFailureIEs_p;
|
||||||
|
|
||||||
ue_description_t *ue_ref = NULL;
|
ue_description_t *ue_ref = NULL;
|
||||||
|
|
||||||
initialContextSetupFailureIEs_p = &message->msg.initialContextSetupFailureIEs;
|
initialContextSetupFailureIEs_p = &message->msg.s1ap_InitialContextSetupFailureIEs;
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
||||||
initialContextSetupFailureIEs_p->mme_ue_s1ap_id)) == NULL) {
|
initialContextSetupFailureIEs_p->mme_ue_s1ap_id)) == NULL)
|
||||||
|
{
|
||||||
/* MME doesn't know the MME UE S1AP ID provided. */
|
/* MME doesn't know the MME UE S1AP ID provided. */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -659,11 +664,11 @@ int s1ap_mme_handle_initial_context_setup_failure(uint32_t assoc_id,
|
|||||||
int s1ap_mme_handle_path_switch_request(uint32_t assoc_id, uint32_t stream,
|
int s1ap_mme_handle_path_switch_request(uint32_t assoc_id, uint32_t stream,
|
||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
PathSwitchRequestIEs_t *pathSwitchRequest_p;
|
S1ap_PathSwitchRequestIEs_t *pathSwitchRequest_p;
|
||||||
ue_description_t *ue_ref;
|
ue_description_t *ue_ref;
|
||||||
uint32_t eNB_ue_s1ap_id;
|
uint32_t eNB_ue_s1ap_id;
|
||||||
|
|
||||||
pathSwitchRequest_p = &message->msg.pathSwitchRequestIEs;
|
pathSwitchRequest_p = &message->msg.s1ap_PathSwitchRequestIEs;
|
||||||
|
|
||||||
// eNB UE S1AP ID is limited to 24 bits
|
// eNB UE S1AP ID is limited to 24 bits
|
||||||
eNB_ue_s1ap_id = (uint32_t)(pathSwitchRequest_p->eNB_UE_S1AP_ID & 0x00ffffff);
|
eNB_ue_s1ap_id = (uint32_t)(pathSwitchRequest_p->eNB_UE_S1AP_ID & 0x00ffffff);
|
||||||
@@ -672,7 +677,8 @@ int s1ap_mme_handle_path_switch_request(uint32_t assoc_id, uint32_t stream,
|
|||||||
(int)eNB_ue_s1ap_id);
|
(int)eNB_ue_s1ap_id);
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(
|
||||||
pathSwitchRequest_p->sourceMME_UE_S1AP_ID)) == NULL) {
|
pathSwitchRequest_p->sourceMME_UE_S1AP_ID)) == NULL)
|
||||||
|
{
|
||||||
/* The MME UE S1AP ID provided by eNB doesn't point to any valid UE.
|
/* The MME UE S1AP ID provided by eNB doesn't point to any valid UE.
|
||||||
* MME replies with a PATH SWITCH REQUEST FAILURE message and start operation
|
* MME replies with a PATH SWITCH REQUEST FAILURE message and start operation
|
||||||
* as described in TS 36.413 [11].
|
* as described in TS 36.413 [11].
|
||||||
@@ -766,11 +772,12 @@ int s1ap_handle_create_session_response(SgwCreateSessionResponse
|
|||||||
|
|
||||||
ue_description_t *ue_ref = NULL;
|
ue_description_t *ue_ref = NULL;
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
|
||||||
E_RABToBeSetupItemCtxtSUReq_t e_RABToBeSetup;
|
|
||||||
uint8_t *buffer_p;
|
uint8_t *buffer_p;
|
||||||
uint32_t length;
|
uint32_t length;
|
||||||
|
|
||||||
|
S1ap_InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
||||||
|
S1ap_E_RABToBeSetupItemCtxtSUReq_t e_RABToBeSetup;
|
||||||
|
|
||||||
DevAssert(session_response_p != NULL);
|
DevAssert(session_response_p != NULL);
|
||||||
|
|
||||||
DevCheck(session_response_p->bearer_context_created.cause == REQUEST_ACCEPTED,
|
DevCheck(session_response_p->bearer_context_created.cause == REQUEST_ACCEPTED,
|
||||||
@@ -792,12 +799,12 @@ int s1ap_handle_create_session_response(SgwCreateSessionResponse
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
memset(&e_RABToBeSetup, 0, sizeof(E_RABToBeSetupItemCtxtSUReq_t));
|
memset(&e_RABToBeSetup, 0, sizeof(S1ap_E_RABToBeSetupItemCtxtSUReq_t));
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_InitialContextSetup;
|
message.procedureCode = S1ap_ProcedureCode_id_InitialContextSetup;
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
|
|
||||||
initialContextSetupRequest_p = &message.msg.initialContextSetupRequestIEs;
|
initialContextSetupRequest_p = &message.msg.s1ap_InitialContextSetupRequestIEs;
|
||||||
|
|
||||||
initialContextSetupRequest_p->mme_ue_s1ap_id = ue_ref->mme_ue_s1ap_id;
|
initialContextSetupRequest_p->mme_ue_s1ap_id = ue_ref->mme_ue_s1ap_id;
|
||||||
initialContextSetupRequest_p->eNB_UE_S1AP_ID = ue_ref->eNB_ue_s1ap_id;
|
initialContextSetupRequest_p->eNB_UE_S1AP_ID = ue_ref->eNB_ue_s1ap_id;
|
||||||
@@ -819,9 +826,9 @@ int s1ap_handle_create_session_response(SgwCreateSessionResponse
|
|||||||
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.priorityLevel
|
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.priorityLevel
|
||||||
= 15; //No priority
|
= 15; //No priority
|
||||||
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.pre_emptionCapability
|
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.pre_emptionCapability
|
||||||
= Pre_emptionCapability_shall_not_trigger_pre_emption;
|
= S1ap_Pre_emptionCapability_shall_not_trigger_pre_emption;
|
||||||
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.pre_emptionVulnerability
|
e_RABToBeSetup.e_RABlevelQoSParameters.allocationRetentionPriority.pre_emptionVulnerability
|
||||||
= Pre_emptionVulnerability_not_pre_emptable;
|
= S1ap_Pre_emptionVulnerability_not_pre_emptable;
|
||||||
|
|
||||||
// e_RABToBeSetup.gTP_TEID.buf = calloc(4, sizeof(uint8_t));
|
// e_RABToBeSetup.gTP_TEID.buf = calloc(4, sizeof(uint8_t));
|
||||||
// INT32_TO_BUFFER(session_response_p->bearer_context_created.s1u_sgw_fteid.teid,
|
// INT32_TO_BUFFER(session_response_p->bearer_context_created.s1u_sgw_fteid.teid,
|
||||||
|
|||||||
@@ -82,10 +82,10 @@ int s1ap_handle_new_association(sctp_new_peer_t *sctp_new_peer_p);
|
|||||||
int s1ap_handle_create_session_response(SgwCreateSessionResponse
|
int s1ap_handle_create_session_response(SgwCreateSessionResponse
|
||||||
*session_response_p);
|
*session_response_p);
|
||||||
|
|
||||||
int s1ap_mme_set_cause(Cause_t *cause_p, Cause_PR cause_type, long cause_value);
|
int s1ap_mme_set_cause(S1ap_Cause_t *cause_p, S1ap_Cause_PR cause_type, long cause_value);
|
||||||
|
|
||||||
int s1ap_mme_generate_s1_setup_failure(
|
int s1ap_mme_generate_s1_setup_failure(
|
||||||
uint32_t assoc_id, Cause_PR cause_type, long cause_value,
|
uint32_t assoc_id, S1ap_Cause_PR cause_type, long cause_value,
|
||||||
long time_to_wait);
|
long time_to_wait);
|
||||||
|
|
||||||
#endif /* S1AP_MME_HANDLERS_H_ */
|
#endif /* S1AP_MME_HANDLERS_H_ */
|
||||||
|
|||||||
@@ -57,12 +57,12 @@ static uint8_t mme_ue_s1ap_id_has_wrapped = 0;
|
|||||||
int s1ap_mme_handle_initial_ue_message(uint32_t assoc_id, uint32_t stream,
|
int s1ap_mme_handle_initial_ue_message(uint32_t assoc_id, uint32_t stream,
|
||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
InitialUEMessageIEs_t *initialUEMessage_p;
|
S1ap_InitialUEMessageIEs_t *initialUEMessage_p;
|
||||||
ue_description_t *ue_ref;
|
ue_description_t *ue_ref;
|
||||||
eNB_description_t *eNB_ref;
|
eNB_description_t *eNB_ref;
|
||||||
uint32_t eNB_ue_s1ap_id;
|
uint32_t eNB_ue_s1ap_id;
|
||||||
|
|
||||||
initialUEMessage_p = &message->msg.initialUEMessageIEs;
|
initialUEMessage_p = &message->msg.s1ap_InitialUEMessageIEs;
|
||||||
|
|
||||||
if ((eNB_ref = s1ap_is_eNB_assoc_id_in_list(assoc_id)) == NULL) {
|
if ((eNB_ref = s1ap_is_eNB_assoc_id_in_list(assoc_id)) == NULL) {
|
||||||
S1AP_DEBUG("Unkwnon eNB on assoc_id %d\n", assoc_id);
|
S1AP_DEBUG("Unkwnon eNB on assoc_id %d\n", assoc_id);
|
||||||
@@ -173,10 +173,10 @@ int s1ap_mme_handle_initial_ue_message(uint32_t assoc_id, uint32_t stream,
|
|||||||
int s1ap_mme_handle_uplink_nas_transport(uint32_t assoc_id, uint32_t stream,
|
int s1ap_mme_handle_uplink_nas_transport(uint32_t assoc_id, uint32_t stream,
|
||||||
struct s1ap_message_s *message)
|
struct s1ap_message_s *message)
|
||||||
{
|
{
|
||||||
UplinkNASTransportIEs_t *uplinkNASTransport_p;
|
S1ap_UplinkNASTransportIEs_t *uplinkNASTransport_p;
|
||||||
ue_description_t *ue_ref;
|
ue_description_t *ue_ref;
|
||||||
|
|
||||||
uplinkNASTransport_p = &message->msg.uplinkNASTransportIEs;
|
uplinkNASTransport_p = &message->msg.s1ap_UplinkNASTransportIEs;
|
||||||
|
|
||||||
if ((ue_ref = s1ap_is_ue_mme_id_in_list(uplinkNASTransport_p->mme_ue_s1ap_id))
|
if ((ue_ref = s1ap_is_ue_mme_id_in_list(uplinkNASTransport_p->mme_ue_s1ap_id))
|
||||||
== NULL) {
|
== NULL) {
|
||||||
@@ -224,15 +224,16 @@ int s1ap_generate_downlink_nas_transport(nas_dl_data_ind_t *nas_dl_data_ind)
|
|||||||
/* We have fount the UE in the list.
|
/* We have fount the UE in the list.
|
||||||
* Create new IE list message and encode it.
|
* Create new IE list message and encode it.
|
||||||
*/
|
*/
|
||||||
DownlinkNASTransportIEs_t *downlinkNasTransport;
|
S1ap_DownlinkNASTransportIEs_t *downlinkNasTransport;
|
||||||
|
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
|
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_downlinkNASTransport;
|
message.procedureCode = S1ap_ProcedureCode_id_downlinkNASTransport;
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
|
|
||||||
downlinkNasTransport = &message.msg.downlinkNASTransportIEs;
|
downlinkNasTransport = &message.msg.s1ap_DownlinkNASTransportIEs;
|
||||||
|
|
||||||
/* Setting UE informations with the ones fount in ue_ref */
|
/* Setting UE informations with the ones fount in ue_ref */
|
||||||
downlinkNasTransport->mme_ue_s1ap_id = ue_ref->mme_ue_s1ap_id;
|
downlinkNasTransport->mme_ue_s1ap_id = ue_ref->mme_ue_s1ap_id;
|
||||||
@@ -264,11 +265,12 @@ int s1ap_handle_attach_accepted(nas_attach_accept_t *attach_accept_p)
|
|||||||
uint32_t length;
|
uint32_t length;
|
||||||
|
|
||||||
ue_description_t *ue_ref = NULL;
|
ue_description_t *ue_ref = NULL;
|
||||||
InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
|
||||||
s1ap_message message;
|
s1ap_message message;
|
||||||
E_RABToBeSetupItemCtxtSUReq_t e_RABToBeSetup;
|
|
||||||
s1ap_initial_ctxt_setup_req_t *initial_p;
|
s1ap_initial_ctxt_setup_req_t *initial_p;
|
||||||
|
|
||||||
|
S1ap_InitialContextSetupRequestIEs_t *initialContextSetupRequest_p;
|
||||||
|
S1ap_E_RABToBeSetupItemCtxtSUReq_t e_RABToBeSetup;
|
||||||
|
|
||||||
DevAssert(attach_accept_p != NULL);
|
DevAssert(attach_accept_p != NULL);
|
||||||
|
|
||||||
initial_p = &attach_accept_p->transparent;
|
initial_p = &attach_accept_p->transparent;
|
||||||
@@ -290,12 +292,12 @@ int s1ap_handle_attach_accepted(nas_attach_accept_t *attach_accept_p)
|
|||||||
// s1ap_timer_insert(ue_ref->mme_ue_s1ap_id, ue_ref->outcome_response_timer_id);
|
// s1ap_timer_insert(ue_ref->mme_ue_s1ap_id, ue_ref->outcome_response_timer_id);
|
||||||
|
|
||||||
memset(&message, 0, sizeof(s1ap_message));
|
memset(&message, 0, sizeof(s1ap_message));
|
||||||
memset(&e_RABToBeSetup, 0, sizeof(E_RABToBeSetupItemCtxtSUReq_t));
|
memset(&e_RABToBeSetup, 0, sizeof(S1ap_E_RABToBeSetupItemCtxtSUReq_t));
|
||||||
|
|
||||||
message.procedureCode = ProcedureCode_id_InitialContextSetup;
|
message.procedureCode = S1ap_ProcedureCode_id_InitialContextSetup;
|
||||||
message.direction = S1AP_PDU_PR_initiatingMessage;
|
message.direction = S1AP_PDU_PR_initiatingMessage;
|
||||||
|
|
||||||
initialContextSetupRequest_p = &message.msg.initialContextSetupRequestIEs;
|
initialContextSetupRequest_p = &message.msg.s1ap_InitialContextSetupRequestIEs;
|
||||||
|
|
||||||
initialContextSetupRequest_p->mme_ue_s1ap_id = (unsigned long)ue_ref->mme_ue_s1ap_id;
|
initialContextSetupRequest_p->mme_ue_s1ap_id = (unsigned long)ue_ref->mme_ue_s1ap_id;
|
||||||
initialContextSetupRequest_p->eNB_UE_S1AP_ID = (unsigned long)ue_ref->eNB_ue_s1ap_id;
|
initialContextSetupRequest_p->eNB_UE_S1AP_ID = (unsigned long)ue_ref->eNB_ue_s1ap_id;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
#include "s1ap_mme_ta.h"
|
#include "s1ap_mme_ta.h"
|
||||||
|
|
||||||
static
|
static
|
||||||
int s1ap_mme_compare_plmn(PLMNidentity_t *plmn)
|
int s1ap_mme_compare_plmn(S1ap_PLMNidentity_t *plmn)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint16_t mcc;
|
uint16_t mcc;
|
||||||
@@ -69,7 +69,7 @@ int s1ap_mme_compare_plmn(PLMNidentity_t *plmn)
|
|||||||
/* @brief compare a list of broadcasted plmns against the MME configured.
|
/* @brief compare a list of broadcasted plmns against the MME configured.
|
||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
int s1ap_mme_compare_plmns(BPLMNs_t *b_plmns)
|
int s1ap_mme_compare_plmns(S1ap_BPLMNs_t *b_plmns)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int matching_occurence = 0;
|
int matching_occurence = 0;
|
||||||
@@ -93,7 +93,7 @@ int s1ap_mme_compare_plmns(BPLMNs_t *b_plmns)
|
|||||||
/* @brief compare a TAC
|
/* @brief compare a TAC
|
||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
int s1ap_mme_compare_tac(TAC_t *tac)
|
int s1ap_mme_compare_tac(S1ap_TAC_t *tac)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint16_t tac_value;
|
uint16_t tac_value;
|
||||||
@@ -120,7 +120,7 @@ int s1ap_mme_compare_tac(TAC_t *tac)
|
|||||||
* - TA_LIST_UNKNOWN_TAC if at least one PLMN match and no TAC match
|
* - TA_LIST_UNKNOWN_TAC if at least one PLMN match and no TAC match
|
||||||
* - TA_LIST_RET_OK if both tac and plmn match at least one element
|
* - TA_LIST_RET_OK if both tac and plmn match at least one element
|
||||||
*/
|
*/
|
||||||
int s1ap_mme_compare_ta_lists(SupportedTAs_t *ta_list)
|
int s1ap_mme_compare_ta_lists(S1ap_SupportedTAs_t *ta_list)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int tac_ret, bplmn_ret;
|
int tac_ret, bplmn_ret;
|
||||||
@@ -129,7 +129,7 @@ int s1ap_mme_compare_ta_lists(SupportedTAs_t *ta_list)
|
|||||||
|
|
||||||
/* Parse every item in the list and try to find matching parameters */
|
/* Parse every item in the list and try to find matching parameters */
|
||||||
for (i = 0; i < ta_list->list.count; i++) {
|
for (i = 0; i < ta_list->list.count; i++) {
|
||||||
SupportedTAs_Item_t *ta;
|
S1ap_SupportedTAs_Item_t *ta;
|
||||||
|
|
||||||
ta = ta_list->list.array[i];
|
ta = ta_list->list.array[i];
|
||||||
DevAssert(ta != NULL);
|
DevAssert(ta != NULL);
|
||||||
|
|||||||
@@ -40,6 +40,6 @@ enum {
|
|||||||
TA_LIST_COMPLETE_MATCH = 0x3,
|
TA_LIST_COMPLETE_MATCH = 0x3,
|
||||||
};
|
};
|
||||||
|
|
||||||
int s1ap_mme_compare_ta_lists(SupportedTAs_t *ta_list);
|
int s1ap_mme_compare_ta_lists(S1ap_SupportedTAs_t *ta_list);
|
||||||
|
|
||||||
#endif /* S1AP_MME_TA_H_ */
|
#endif /* S1AP_MME_TA_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user