- 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:
Cedric Roux
2013-11-12 17:23:21 +00:00
parent 55337aa658
commit 45f52474c4
28 changed files with 4944 additions and 4938 deletions
@@ -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,20 +57,20 @@ 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
FIRST CRITICALITY &firstCriticality FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue SECOND TYPE &SecondValue
PRESENCE &presence PRESENCE &presence
} }
-- ************************************************************** -- **************************************************************
@@ -80,16 +80,16 @@ 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
CRITICALITY &criticality CRITICALITY &criticality
EXTENSION &Extension EXTENSION &Extension
PRESENCE &presence PRESENCE &presence
} }
-- ************************************************************** -- **************************************************************
@@ -99,16 +99,16 @@ 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
CRITICALITY &criticality CRITICALITY &criticality
TYPE &Value TYPE &Value
PRESENCE &presence PRESENCE &presence
} }
-- ************************************************************** -- **************************************************************
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -19,134 +19,133 @@ 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
id-CellTrafficTrace, id-CellTrafficTrace,
id-DeactivateTrace, id-DeactivateTrace,
id-downlinkUEAssociatedLPPaTransport, id-downlinkUEAssociatedLPPaTransport,
id-downlinkNASTransport, id-downlinkNASTransport,
id-downlinkNonUEAssociatedLPPaTransport, id-downlinkNonUEAssociatedLPPaTransport,
id-DownlinkS1cdma2000tunneling, id-DownlinkS1cdma2000tunneling,
id-eNBStatusTransfer, id-eNBStatusTransfer,
id-ErrorIndication, id-ErrorIndication,
id-HandoverCancel, id-HandoverCancel,
id-HandoverNotification, id-HandoverNotification,
id-HandoverPreparation, id-HandoverPreparation,
id-HandoverResourceAllocation, id-HandoverResourceAllocation,
id-InitialContextSetup, id-InitialContextSetup,
id-initialUEMessage, id-initialUEMessage,
id-ENBConfigurationUpdate, id-ENBConfigurationUpdate,
id-Kill, id-Kill,
id-LocationReportingControl, id-LocationReportingControl,
id-LocationReportingFailureIndication, id-LocationReportingFailureIndication,
id-LocationReport, id-LocationReport,
id-eNBDirectInformationTransfer, id-eNBDirectInformationTransfer,
id-MMEConfigurationUpdate, id-MMEConfigurationUpdate,
id-MMEDirectInformationTransfer, id-MMEDirectInformationTransfer,
id-MMEStatusTransfer, id-MMEStatusTransfer,
id-NASNonDeliveryIndication, id-NASNonDeliveryIndication,
id-OverloadStart, id-OverloadStart,
id-OverloadStop, id-OverloadStop,
id-Paging, id-Paging,
id-PathSwitchRequest, id-PathSwitchRequest,
id-PrivateMessage, id-PrivateMessage,
id-Reset, id-Reset,
id-S1Setup, id-S1Setup,
id-E-RABModify, id-E-RABModify,
id-E-RABRelease, id-E-RABRelease,
id-E-RABReleaseIndication, id-E-RABReleaseIndication,
id-E-RABSetup, id-E-RABSetup,
id-TraceFailureIndication, id-TraceFailureIndication,
id-TraceStart, id-TraceStart,
id-UECapabilityInfoIndication, id-UECapabilityInfoIndication,
id-UEContextModification, id-UEContextModification,
id-UEContextRelease, id-UEContextRelease,
id-UEContextReleaseRequest, id-UEContextReleaseRequest,
id-uplinkUEAssociatedLPPaTransport, id-uplinkUEAssociatedLPPaTransport,
id-uplinkNASTransport, id-uplinkNASTransport,
id-uplinkNonUEAssociatedLPPaTransport, id-uplinkNonUEAssociatedLPPaTransport,
id-UplinkS1cdma2000tunneling, id-UplinkS1cdma2000tunneling,
id-WriteReplaceWarning, id-WriteReplaceWarning,
id-eNBConfigurationTransfer, id-eNBConfigurationTransfer,
id-MMEConfigurationTransfer id-MMEConfigurationTransfer
FROM S1AP-Constants; FROM S1AP-Constants;
@@ -157,18 +156,18 @@ FROM S1AP-Constants;
-- ************************************************************** -- **************************************************************
S1AP-ELEMENTARY-PROCEDURE ::= CLASS { S1AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage , &InitiatingMessage ,
&SuccessfulOutcome OPTIONAL, &SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL, &UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE, &procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore &criticality Criticality DEFAULT ignore
} }
WITH SYNTAX { WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome] [SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode PROCEDURE CODE &procedureCode
[CRITICALITY &criticality] [CRITICALITY &criticality]
} }
-- ************************************************************** -- **************************************************************
@@ -178,28 +177,28 @@ WITH SYNTAX {
-- ************************************************************** -- **************************************************************
S1AP-PDU ::= CHOICE { S1AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage, initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome, successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome, unsuccessfulOutcome UnsuccessfulOutcome,
... ...
} }
InitiatingMessage ::= SEQUENCE { InitiatingMessage ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
} }
SuccessfulOutcome ::= SEQUENCE { SuccessfulOutcome ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
} }
UnsuccessfulOutcome ::= SEQUENCE { UnsuccessfulOutcome ::= SEQUENCE {
procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}),
criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode})
} }
-- ************************************************************** -- **************************************************************
@@ -209,66 +208,66 @@ UnsuccessfulOutcome ::= SEQUENCE {
-- ************************************************************** -- **************************************************************
S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= { S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= {
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 | S1AP-ELEMENTARY-PROCEDURES-CLASS-1 |
S1AP-ELEMENTARY-PROCEDURES-CLASS-2, S1AP-ELEMENTARY-PROCEDURES-CLASS-2,
... ...
} }
S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= { S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation | handoverPreparation |
handoverResourceAllocation | handoverResourceAllocation |
pathSwitchRequest | pathSwitchRequest |
e-RABSetup | e-RABSetup |
e-RABModify | e-RABModify |
e-RABRelease | e-RABRelease |
initialContextSetup | initialContextSetup |
handoverCancel | handoverCancel |
kill | kill |
reset | reset |
s1Setup | s1Setup |
uEContextModification | uEContextModification |
uEContextRelease | uEContextRelease |
eNBConfigurationUpdate | eNBConfigurationUpdate |
mMEConfigurationUpdate | mMEConfigurationUpdate |
writeReplaceWarning , writeReplaceWarning ,
... ...
} }
S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= { S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {
handoverNotification | handoverNotification |
e-RABReleaseIndication | e-RABReleaseIndication |
paging | paging |
downlinkNASTransport | downlinkNASTransport |
initialUEMessage | initialUEMessage |
uplinkNASTransport | uplinkNASTransport |
errorIndication | errorIndication |
nASNonDeliveryIndication | nASNonDeliveryIndication |
uEContextReleaseRequest | uEContextReleaseRequest |
downlinkS1cdma2000tunneling | downlinkS1cdma2000tunneling |
uplinkS1cdma2000tunneling | uplinkS1cdma2000tunneling |
uECapabilityInfoIndication | uECapabilityInfoIndication |
eNBStatusTransfer | eNBStatusTransfer |
mMEStatusTransfer | mMEStatusTransfer |
deactivateTrace | deactivateTrace |
traceStart | traceStart |
traceFailureIndication | traceFailureIndication |
cellTrafficTrace | cellTrafficTrace |
locationReportingControl | locationReportingControl |
locationReportingFailureIndication | locationReportingFailureIndication |
locationReport | locationReport |
overloadStart | overloadStart |
overloadStop | overloadStop |
eNBDirectInformationTransfer | eNBDirectInformationTransfer |
mMEDirectInformationTransfer | mMEDirectInformationTransfer |
eNBConfigurationTransfer | eNBConfigurationTransfer |
mMEConfigurationTransfer | mMEConfigurationTransfer |
privateMessage , privateMessage ,
..., ...,
downlinkUEAssociatedLPPaTransport | downlinkUEAssociatedLPPaTransport |
uplinkUEAssociatedLPPaTransport | uplinkUEAssociatedLPPaTransport |
downlinkNonUEAssociatedLPPaTransport | downlinkNonUEAssociatedLPPaTransport |
uplinkNonUEAssociatedLPPaTransport uplinkNonUEAssociatedLPPaTransport
} }
-- ************************************************************** -- **************************************************************
@@ -278,211 +277,211 @@ S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= {
-- ************************************************************** -- **************************************************************
handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= { handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequired INITIATING MESSAGE HandoverRequired
SUCCESSFUL OUTCOME HandoverCommand SUCCESSFUL OUTCOME HandoverCommand
UNSUCCESSFUL OUTCOME HandoverPreparationFailure UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-HandoverPreparation PROCEDURE CODE id-HandoverPreparation
CRITICALITY reject CRITICALITY reject
} }
handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= { handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverFailure UNSUCCESSFUL OUTCOME HandoverFailure
PROCEDURE CODE id-HandoverResourceAllocation PROCEDURE CODE id-HandoverResourceAllocation
CRITICALITY reject CRITICALITY reject
} }
handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= { handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverNotify INITIATING MESSAGE HandoverNotify
PROCEDURE CODE id-HandoverNotification PROCEDURE CODE id-HandoverNotification
CRITICALITY ignore CRITICALITY ignore
} }
pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= { pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PathSwitchRequest INITIATING MESSAGE PathSwitchRequest
SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge
UNSUCCESSFUL OUTCOME PathSwitchRequestFailure UNSUCCESSFUL OUTCOME PathSwitchRequestFailure
PROCEDURE CODE id-PathSwitchRequest PROCEDURE CODE id-PathSwitchRequest
CRITICALITY reject CRITICALITY reject
} }
e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= { e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-RABSetupRequest INITIATING MESSAGE E-RABSetupRequest
SUCCESSFUL OUTCOME E-RABSetupResponse SUCCESSFUL OUTCOME E-RABSetupResponse
PROCEDURE CODE id-E-RABSetup PROCEDURE CODE id-E-RABSetup
CRITICALITY reject CRITICALITY reject
} }
e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= { e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-RABModifyRequest INITIATING MESSAGE E-RABModifyRequest
SUCCESSFUL OUTCOME E-RABModifyResponse SUCCESSFUL OUTCOME E-RABModifyResponse
PROCEDURE CODE id-E-RABModify PROCEDURE CODE id-E-RABModify
CRITICALITY reject CRITICALITY reject
} }
e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= { e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-RABReleaseCommand INITIATING MESSAGE E-RABReleaseCommand
SUCCESSFUL OUTCOME E-RABReleaseResponse SUCCESSFUL OUTCOME E-RABReleaseResponse
PROCEDURE CODE id-E-RABRelease PROCEDURE CODE id-E-RABRelease
CRITICALITY reject CRITICALITY reject
} }
e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= { e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE E-RABReleaseIndication INITIATING MESSAGE E-RABReleaseIndication
PROCEDURE CODE id-E-RABReleaseIndication PROCEDURE CODE id-E-RABReleaseIndication
CRITICALITY ignore CRITICALITY ignore
} }
initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= { initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialContextSetupRequest INITIATING MESSAGE InitialContextSetupRequest
SUCCESSFUL OUTCOME InitialContextSetupResponse SUCCESSFUL OUTCOME InitialContextSetupResponse
UNSUCCESSFUL OUTCOME InitialContextSetupFailure UNSUCCESSFUL OUTCOME InitialContextSetupFailure
PROCEDURE CODE id-InitialContextSetup PROCEDURE CODE id-InitialContextSetup
CRITICALITY reject CRITICALITY reject
} }
uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= { uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextReleaseRequest INITIATING MESSAGE UEContextReleaseRequest
PROCEDURE CODE id-UEContextReleaseRequest PROCEDURE CODE id-UEContextReleaseRequest
CRITICALITY ignore CRITICALITY ignore
} }
paging S1AP-ELEMENTARY-PROCEDURE ::= { paging S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Paging INITIATING MESSAGE Paging
PROCEDURE CODE id-Paging PROCEDURE CODE id-Paging
CRITICALITY ignore CRITICALITY ignore
} }
downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DownlinkNASTransport INITIATING MESSAGE DownlinkNASTransport
PROCEDURE CODE id-downlinkNASTransport PROCEDURE CODE id-downlinkNASTransport
CRITICALITY ignore CRITICALITY ignore
} }
initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= { initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE InitialUEMessage INITIATING MESSAGE InitialUEMessage
PROCEDURE CODE id-initialUEMessage PROCEDURE CODE id-initialUEMessage
CRITICALITY ignore CRITICALITY ignore
} }
uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkNASTransport INITIATING MESSAGE UplinkNASTransport
PROCEDURE CODE id-uplinkNASTransport PROCEDURE CODE id-uplinkNASTransport
CRITICALITY ignore CRITICALITY ignore
} }
nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE NASNonDeliveryIndication INITIATING MESSAGE NASNonDeliveryIndication
PROCEDURE CODE id-NASNonDeliveryIndication PROCEDURE CODE id-NASNonDeliveryIndication
CRITICALITY ignore CRITICALITY ignore
} }
handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= { handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel INITIATING MESSAGE HandoverCancel
SUCCESSFUL OUTCOME HandoverCancelAcknowledge SUCCESSFUL OUTCOME HandoverCancelAcknowledge
PROCEDURE CODE id-HandoverCancel PROCEDURE CODE id-HandoverCancel
CRITICALITY reject CRITICALITY reject
} }
reset S1AP-ELEMENTARY-PROCEDURE ::= { reset S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE Reset INITIATING MESSAGE Reset
SUCCESSFUL OUTCOME ResetAcknowledge SUCCESSFUL OUTCOME ResetAcknowledge
PROCEDURE CODE id-Reset PROCEDURE CODE id-Reset
CRITICALITY reject CRITICALITY reject
} }
errorIndication S1AP-ELEMENTARY-PROCEDURE ::= { errorIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-ErrorIndication PROCEDURE CODE id-ErrorIndication
CRITICALITY ignore CRITICALITY ignore
} }
s1Setup S1AP-ELEMENTARY-PROCEDURE ::= { s1Setup S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE S1SetupRequest INITIATING MESSAGE S1SetupRequest
SUCCESSFUL OUTCOME S1SetupResponse SUCCESSFUL OUTCOME S1SetupResponse
UNSUCCESSFUL OUTCOME S1SetupFailure UNSUCCESSFUL OUTCOME S1SetupFailure
PROCEDURE CODE id-S1Setup PROCEDURE CODE id-S1Setup
CRITICALITY reject CRITICALITY reject
} }
eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBConfigurationUpdate INITIATING MESSAGE ENBConfigurationUpdate
SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
PROCEDURE CODE id-ENBConfigurationUpdate PROCEDURE CODE id-ENBConfigurationUpdate
CRITICALITY reject CRITICALITY reject
} }
mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MMEConfigurationUpdate INITIATING MESSAGE MMEConfigurationUpdate
SUCCESSFUL OUTCOME MMEConfigurationUpdateAcknowledge SUCCESSFUL OUTCOME MMEConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME MMEConfigurationUpdateFailure UNSUCCESSFUL OUTCOME MMEConfigurationUpdateFailure
PROCEDURE CODE id-MMEConfigurationUpdate PROCEDURE CODE id-MMEConfigurationUpdate
CRITICALITY reject CRITICALITY reject
} }
downlinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= { downlinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DownlinkS1cdma2000tunneling INITIATING MESSAGE DownlinkS1cdma2000tunneling
PROCEDURE CODE id-DownlinkS1cdma2000tunneling PROCEDURE CODE id-DownlinkS1cdma2000tunneling
CRITICALITY ignore CRITICALITY ignore
} }
uplinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= { uplinkS1cdma2000tunneling S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkS1cdma2000tunneling INITIATING MESSAGE UplinkS1cdma2000tunneling
PROCEDURE CODE id-UplinkS1cdma2000tunneling PROCEDURE CODE id-UplinkS1cdma2000tunneling
CRITICALITY ignore CRITICALITY ignore
} }
uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= { uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextModificationRequest INITIATING MESSAGE UEContextModificationRequest
SUCCESSFUL OUTCOME UEContextModificationResponse SUCCESSFUL OUTCOME UEContextModificationResponse
UNSUCCESSFUL OUTCOME UEContextModificationFailure UNSUCCESSFUL OUTCOME UEContextModificationFailure
PROCEDURE CODE id-UEContextModification PROCEDURE CODE id-UEContextModification
CRITICALITY reject CRITICALITY reject
} }
uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= { uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UECapabilityInfoIndication INITIATING MESSAGE UECapabilityInfoIndication
PROCEDURE CODE id-UECapabilityInfoIndication PROCEDURE CODE id-UECapabilityInfoIndication
CRITICALITY ignore CRITICALITY ignore
} }
uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= { uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextReleaseCommand INITIATING MESSAGE UEContextReleaseCommand
SUCCESSFUL OUTCOME UEContextReleaseComplete SUCCESSFUL OUTCOME UEContextReleaseComplete
PROCEDURE CODE id-UEContextRelease PROCEDURE CODE id-UEContextRelease
CRITICALITY reject CRITICALITY reject
} }
eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBStatusTransfer INITIATING MESSAGE ENBStatusTransfer
PROCEDURE CODE id-eNBStatusTransfer PROCEDURE CODE id-eNBStatusTransfer
CRITICALITY ignore CRITICALITY ignore
} }
mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MMEStatusTransfer INITIATING MESSAGE MMEStatusTransfer
PROCEDURE CODE id-MMEStatusTransfer PROCEDURE CODE id-MMEStatusTransfer
CRITICALITY ignore CRITICALITY ignore
} }
deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= { deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DeactivateTrace INITIATING MESSAGE DeactivateTrace
PROCEDURE CODE id-DeactivateTrace PROCEDURE CODE id-DeactivateTrace
CRITICALITY ignore CRITICALITY ignore
} }
traceStart S1AP-ELEMENTARY-PROCEDURE ::= { traceStart S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE TraceStart INITIATING MESSAGE TraceStart
PROCEDURE CODE id-TraceStart PROCEDURE CODE id-TraceStart
CRITICALITY ignore CRITICALITY ignore
} }
traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE TraceFailureIndication INITIATING MESSAGE TraceFailureIndication
PROCEDURE CODE id-TraceFailureIndication PROCEDURE CODE id-TraceFailureIndication
CRITICALITY ignore CRITICALITY ignore
} }
cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={ cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={
INITIATING MESSAGE CellTrafficTrace INITIATING MESSAGE CellTrafficTrace
@@ -491,101 +490,101 @@ CRITICALITY ignore
} }
locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= { locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationReportingControl INITIATING MESSAGE LocationReportingControl
PROCEDURE CODE id-LocationReportingControl PROCEDURE CODE id-LocationReportingControl
CRITICALITY ignore CRITICALITY ignore
} }
locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationReportingFailureIndication INITIATING MESSAGE LocationReportingFailureIndication
PROCEDURE CODE id-LocationReportingFailureIndication PROCEDURE CODE id-LocationReportingFailureIndication
CRITICALITY ignore CRITICALITY ignore
} }
locationReport S1AP-ELEMENTARY-PROCEDURE ::= { locationReport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LocationReport INITIATING MESSAGE LocationReport
PROCEDURE CODE id-LocationReport PROCEDURE CODE id-LocationReport
CRITICALITY ignore CRITICALITY ignore
} }
overloadStart S1AP-ELEMENTARY-PROCEDURE ::= { overloadStart S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE OverloadStart INITIATING MESSAGE OverloadStart
PROCEDURE CODE id-OverloadStart PROCEDURE CODE id-OverloadStart
CRITICALITY ignore CRITICALITY ignore
} }
overloadStop S1AP-ELEMENTARY-PROCEDURE ::= { overloadStop S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE OverloadStop INITIATING MESSAGE OverloadStop
PROCEDURE CODE id-OverloadStop PROCEDURE CODE id-OverloadStop
CRITICALITY reject CRITICALITY reject
} }
writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= { writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE WriteReplaceWarningRequest INITIATING MESSAGE WriteReplaceWarningRequest
SUCCESSFUL OUTCOME WriteReplaceWarningResponse SUCCESSFUL OUTCOME WriteReplaceWarningResponse
PROCEDURE CODE id-WriteReplaceWarning PROCEDURE CODE id-WriteReplaceWarning
CRITICALITY reject CRITICALITY reject
} }
eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBDirectInformationTransfer INITIATING MESSAGE ENBDirectInformationTransfer
PROCEDURE CODE id-eNBDirectInformationTransfer PROCEDURE CODE id-eNBDirectInformationTransfer
CRITICALITY ignore CRITICALITY ignore
} }
mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MMEDirectInformationTransfer INITIATING MESSAGE MMEDirectInformationTransfer
PROCEDURE CODE id-MMEDirectInformationTransfer PROCEDURE CODE id-MMEDirectInformationTransfer
CRITICALITY ignore CRITICALITY ignore
} }
eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBConfigurationTransfer INITIATING MESSAGE ENBConfigurationTransfer
PROCEDURE CODE id-eNBConfigurationTransfer PROCEDURE CODE id-eNBConfigurationTransfer
CRITICALITY ignore CRITICALITY ignore
} }
mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MMEConfigurationTransfer INITIATING MESSAGE MMEConfigurationTransfer
PROCEDURE CODE id-MMEConfigurationTransfer PROCEDURE CODE id-MMEConfigurationTransfer
CRITICALITY ignore CRITICALITY ignore
} }
privateMessage S1AP-ELEMENTARY-PROCEDURE ::= { privateMessage S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-PrivateMessage PROCEDURE CODE id-PrivateMessage
CRITICALITY ignore CRITICALITY ignore
} }
kill S1AP-ELEMENTARY-PROCEDURE ::= { kill S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE KillRequest INITIATING MESSAGE KillRequest
SUCCESSFUL OUTCOME KillResponse SUCCESSFUL OUTCOME KillResponse
PROCEDURE CODE id-Kill PROCEDURE CODE id-Kill
CRITICALITY reject CRITICALITY reject
} }
downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DownlinkUEAssociatedLPPaTransport INITIATING MESSAGE DownlinkUEAssociatedLPPaTransport
PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport
CRITICALITY ignore CRITICALITY ignore
} }
uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkUEAssociatedLPPaTransport INITIATING MESSAGE UplinkUEAssociatedLPPaTransport
PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport
CRITICALITY ignore CRITICALITY ignore
} }
downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE DownlinkNonUEAssociatedLPPaTransport INITIATING MESSAGE DownlinkNonUEAssociatedLPPaTransport
PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport
CRITICALITY ignore CRITICALITY ignore
} }
uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UplinkNonUEAssociatedLPPaTransport INITIATING MESSAGE UplinkNonUEAssociatedLPPaTransport
PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport
CRITICALITY ignore CRITICALITY ignore
} }
END END
+164 -165
View File
@@ -8,406 +8,405 @@ 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
} }
END END
+25 -22
View File
@@ -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")
@@ -87,7 +88,7 @@ def lowerFirstCamelWord(word):
for c in swapped: for c in swapped:
if c in string.lowercase: if c in string.lowercase:
newstr += c newstr += c
idx += 1 idx += 1
else: else:
break break
if idx < 2: if idx < 2:
@@ -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,9 +226,9 @@ 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")
messageList = iesDefs.keys() messageList = iesDefs.keys()
@@ -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,10 +500,10 @@ 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")
f.write(" }\n") f.write(" }\n")
f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n" % (firstwordlower, iesaccess)) f.write(" ASN_SEQUENCE_ADD(&%s->%slist, ie);\n" % (firstwordlower, iesaccess))
@@ -511,9 +514,9 @@ 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))
else: else:
@@ -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
+2
View File
@@ -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)
+14 -14
View File
@@ -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)
{ {
} }
+341 -341
View File
@@ -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,15 +485,15 @@ 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);
/** \brief Handle criticality /** \brief Handle criticality
\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_ */
+16 -14
View File
@@ -259,13 +259,15 @@ void *s1ap_eNB_task(void *arg)
static int s1ap_eNB_generate_s1_setup_request( 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;
uint8_t *buffer; S1ap_SupportedTAs_Item_t ta;
uint32_t len;
int ret = 0; uint8_t *buffer;
uint32_t len;
int ret = 0;
DevAssert(instance_p != NULL); DevAssert(instance_p != NULL);
DevAssert(s1ap_mme_data_p != NULL); DevAssert(s1ap_mme_data_p != NULL);
@@ -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));
} }
+19 -15
View File
@@ -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);
+1 -5
View File
@@ -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);
+106 -94
View File
@@ -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);
} }
+14 -13
View File
@@ -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 "
+18 -16
View File
@@ -55,8 +55,9 @@ int s1ap_eNB_handle_nas_first_req(s1ap_nas_first_req_t *s1ap_nas_first_req_p)
struct s1ap_eNB_mme_data_s *mme_desc_p; struct s1ap_eNB_mme_data_s *mme_desc_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;
@@ -69,10 +70,10 @@ 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_ue_context_t *ue_desc_p; s1ap_eNB_mme_data_t *mme_desc_p;
s1ap_eNB_instance_t *s1ap_eNB_instance; s1ap_eNB_ue_context_t *ue_desc_p;
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;
@@ -281,10 +283,10 @@ int s1ap_eNB_nas_uplink(s1ap_uplink_nas_t *s1ap_uplink_nas_p)
/* Prepare the S1AP message to encode */ /* Prepare the S1AP message to encode */
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;
+6 -7
View File
@@ -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);
+18 -16
View File
@@ -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;
+35 -34
View File
@@ -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(
&initiating_p->value); &message->msg.s1ap_UplinkNASTransportIEs, &initiating_p->value);
case ProcedureCode_id_S1Setup: { } break;
ret = s1ap_decode_s1setuprequesties(&message->msg.s1SetupRequestIEs, case S1ap_ProcedureCode_id_S1Setup: {
ret = s1ap_decode_s1ap_s1setuprequesties(&message->msg.s1ap_S1SetupRequestIEs,
&initiating_p->value); &initiating_p->value);
s1ap_xer_print_s1setuprequest(stdout, message); s1ap_xer_print_s1ap_s1setuprequest(stdout, message);
} break; } break;
case ProcedureCode_id_initialUEMessage: { case S1ap_ProcedureCode_id_initialUEMessage: {
ret = s1ap_decode_initialuemessageies(&message->msg.initialUEMessageIEs, ret = s1ap_decode_s1ap_initialuemessageies(&message->msg.s1ap_InitialUEMessageIEs,
&initiating_p->value); &initiating_p->value);
s1ap_xer_print_initialuemessage(stdout, message); s1ap_xer_print_s1ap_initialuemessage(stdout, message);
} break; } break;
case ProcedureCode_id_UEContextReleaseRequest: { case S1ap_ProcedureCode_id_UEContextReleaseRequest: {
ret = s1ap_decode_uecontextreleaserequesties( ret = s1ap_decode_s1ap_uecontextreleaserequesties(
&message->msg.ueContextReleaseRequestIEs, &initiating_p->value); &message->msg.s1ap_UEContextReleaseRequestIEs, &initiating_p->value);
s1ap_xer_print_uecontextreleaserequest(stdout, message); s1ap_xer_print_s1ap_uecontextreleaserequest(stdout, message);
} break; } break;
case ProcedureCode_id_UECapabilityInfoIndication: { case S1ap_ProcedureCode_id_UECapabilityInfoIndication: {
ret = s1ap_decode_uecapabilityinfoindicationies( ret = s1ap_decode_s1ap_uecapabilityinfoindicationies(
&message->msg.ueCapabilityInfoIndicationIEs, &initiating_p->value); &message->msg.s1ap_UECapabilityInfoIndicationIEs, &initiating_p->value);
s1ap_xer_print_uecapabilityinfoindication(stdout, message); s1ap_xer_print_s1ap_uecapabilityinfoindication(stdout, message);
} break; } break;
// case ProcedureCode_id_InitialContextSetup: // case S1ap_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);
+40 -39
View File
@@ -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);
} }
+86 -79
View File
@@ -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;
ue_description_t *ue_ref; S1ap_E_RABSetupItemCtxtSURes_t *eRABSetupItemCtxtSURes_p;
SgwModifyBearerRequest *modify_request_p;
MessageDef *message_p;
E_RABSetupItemCtxtSURes_t *eRABSetupItemCtxtSURes_p;
initialContextSetupResponseIEs_p = &message->msg.initialContextSetupResponseIEs; ue_description_t *ue_ref;
SgwModifyBearerRequest *modify_request_p;
MessageDef *message_p;
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,12 +514,13 @@ 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;
modify_request_p->bearer_context_to_modify.eps_bearer_id = modify_request_p->bearer_context_to_modify.eps_bearer_id =
eRABSetupItemCtxtSURes_p->e_RAB_ID; eRABSetupItemCtxtSURes_p->e_RAB_ID;
modify_request_p->bearer_context_to_modify.s1_eNB_fteid.teid = *(( modify_request_p->bearer_context_to_modify.s1_eNB_fteid.teid = *((
uint32_t *)eRABSetupItemCtxtSURes_p->gTP_TEID.buf); uint32_t *)eRABSetupItemCtxtSURes_p->gTP_TEID.buf);
@@ -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;
initialContextSetupFailureIEs_p = &message->msg.initialContextSetupFailureIEs; ue_description_t *ue_ref = NULL;
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,
+2 -2
View File
@@ -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_ */
+15 -13
View File
@@ -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;
+5 -5
View File
@@ -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);
+1 -1
View File
@@ -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_ */