Merge remote-tracking branch 'origin/develop' into enhancement-ltem

Conflicts:
	openair1/PHY/INIT/lte_init.c
	openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
	openair1/PHY/LTE_TRANSPORT/dci.c
	openair1/PHY/LTE_TRANSPORT/dci_tools.c
	openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
	openair1/PHY/LTE_TRANSPORT/edci.c
	openair1/PHY/LTE_TRANSPORT/if4_tools.c
	openair1/PHY/LTE_TRANSPORT/prach.c
	openair1/PHY/LTE_TRANSPORT/print_stats.c
	openair1/PHY/LTE_TRANSPORT/pucch.c
	openair1/PHY/LTE_TRANSPORT/transport_eNB.h
	openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
	openair1/PHY/LTE_UE_TRANSPORT/transport_proto_ue.h
	openair1/PHY/impl_defs_lte.h
	openair1/SCHED/fapi_l1.c
	openair1/SCHED/phy_procedures_lte_eNb.c
	openair2/COMMON/rrc_messages_types.h
	openair2/ENB_APP/enb_config.c
	openair2/ENB_APP/enb_paramdef.h
	openair2/LAYER2/MAC/config.c
	openair2/LAYER2/MAC/defs.h
	openair2/LAYER2/MAC/eNB_scheduler.c
	openair2/LAYER2/MAC/eNB_scheduler_RA.c
	openair2/LAYER2/MAC/eNB_scheduler_bch.c
	openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
	openair2/LAYER2/MAC/eNB_scheduler_primitives.c
	openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
	openair2/LAYER2/MAC/pre_processor.c
	openair2/LAYER2/MAC/rar_tools.c
	openair2/LAYER2/MAC/ue_procedures.c
	openair2/PHY_INTERFACE/IF_Module.c
	openair2/RRC/LITE/rrc_common.c
	openair2/RRC/LTE/L2_interface_ue.c
	openair2/RRC/LTE/MESSAGES/asn1_msg.c
	openair2/RRC/LTE/rrc_eNB.c
	targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
	targets/RT/USER/lte-enb.c
	targets/RT/USER/lte-ru.c
This commit is contained in:
Raymond Knopp
2018-10-29 07:54:17 +01:00
1220 changed files with 435751 additions and 867890 deletions
@@ -1,81 +0,0 @@
include Makefile.inc
OBJS=$(addprefix MESSAGES/,${ASN_MODULE_SOURCES:.c=.o})
CFLAGS += -DEMIT_ASN_DEBUG=1
CFLAGS += -Wall
CFLAGS += -g
OBJS += x2ap_decoder.o
OBJS += x2ap_encoder.o
OBJS += x2ap_common.o
#X2AP_SERVER_SRC = sctp_primitives_server.c
#X2AP_SERVER_SRC += x2ap_server_main.c
#X2AP_SERVER_OBJS = $(X2AP_SERVER_SRC:.c=.o)
X2AP_CLIENT_SRC = sctp_primitives_client.c
X2AP_CLIENT_SRC += x2ap_client_main.c
X2AP_CLIENT_OBJS = $(X2AP_CLIENT_SRC:.c=.o)
libx2ap_messages.a:$(OBJS)
$(AR) rcsv libx2ap_messages.a $(OBJS)
asn1fromtool:
asn1c -gen-PER -fnative-types -fskeletons-copy X2AP-CommonDataTypes.asn X2AP-Constants.asn X2AP-IEs.asn \
X2AP-PDU.asn
asn1fromscript:
python ../asn1tostruct.py -f X2AP-PDU-Contents.asn -d
all: server x2ap_client_main
server: server.o libx2ap_messages.a generating_messages.o sctp_primitives_client.o x2ap_pdu_decoder.o
$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) -o $@ $^ -lsctp -lpthread libx2ap_messages.a
$(OBJS): %.o : %.c
$(CC) $(CFLAGS) -I. -o $@ -c $<
$(X2AP_SERVER_OBJS): %.o : %.c
$(CC) -c $(CFLAGS) -I. $< -o $@
$(X2AP_CLIENT_OBJS): %.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
x2ap_server_main.o: x2ap_server_main.c
$(CC) $(CFLAGS) -I. $^ -o $@ -lsctp \
-lpthread
x2ap_client_main: $(X2AP_CLIENT_OBJS)
$(CC) $(CFLAGS) $^ -o $@ -lsctp \
-lpthread
server.o: server.c
$(CC) $(CFLAGS) -I. $^ -o $@ -lsctp \
-lpthread
x2ap_pdu_decoder.o: x2ap_pdu_decoder.c
$(CC) $(CFLAGS) -I. -o $@ -c $<
x2ap_pdu_encoder.o: x2ap_pdu_encoder.c
$(CC) $(CFLAGS) -I. -o $@ -c $<
sctp_primitives_server.o: sctp_primitives_server.c
$(CC) $(CFLAGS) -o $@ -c $<
generating_messages.o: generating_messages.c
$(CC) $(CFLAGS) -I. -o $@ -c $<
clean:
rm -f $(OBJS)
@@ -1,462 +0,0 @@
ASN_MODULE_SOURCES= \
Criticality.c \
Presence.c \
PrivateIE-ID.c \
ProcedureCode.c \
ProtocolIE-ID.c \
TriggeringMessage.c \
IE-Extensions.c \
AS-SecurityInformation.c \
AllocationAndRetentionPriority.c \
ActivatedCellList.c \
ActivatedCellList-Item.c \
BitRate.c \
BroadcastPLMNs-Item.c \
CapacityValue.c \
CellCapacityClassValue.c \
CellToReport-List.c \
CellToReport-Item.c \
CellMeasurementResult-List.c \
CellMeasurementResult-Item.c \
ReportingPeriodicity.c \
Cause.c \
CauseMisc.c \
CauseProtocol.c \
CauseRadioNetwork.c \
CauseTransport.c \
Cell-Size.c \
CellInformation-List.c \
CellInformation-Item.c \
CellType.c \
CompositeAvailableCapacityGroup.c \
CompositeAvailableCapacity.c \
COUNTvalue.c \
CriticalityDiagnostics.c \
CriticalityDiagnostics-IE-List.c \
CriticalityDiagnostics-IE-Elm.c \
CRNTI.c \
CyclicPrefixDL.c \
CyclicPrefixUL.c \
DeactivationIndication.c \
DL-Forwarding.c \
E-RABs-Admitted-List.c \
E-RABs-Admitted-Item.c \
E-RABs-ToBeSetup-List.c \
E-RABs-ToBeSetup-Item.c \
E-RABs-SubjectToStatusTransfer-List.c \
E-RABs-SubjectToStatusTransfer-Item.c \
EARFCN.c \
FDD-Info.c \
TDD-Info.c \
EUTRA-Mode-Info.c \
ECGI.c \
ENB-ID.c \
EncryptionAlgorithms.c \
EPLMNs.c \
E-RAB-ID.c \
E-RAB-Level-QoS-Parameters.c \
E-RAB-List.c \
E-RAB-Item.c \
EUTRANCellIdentifier.c \
EUTRANTraceID.c \
EventType.c \
ForbiddenInterRATs.c \
ForbiddenTAs.c \
ForbiddenTAs-Item.c \
ForbiddenTACs.c \
ForbiddenLAs.c \
ForbiddenLAs-Item.c \
ForbiddenLACs.c \
Fourframes.c \
GBR-QosInformation.c \
GlobalENB-ID.c \
GTPtunnelEndpoint.c \
GTP-TEI.c \
GUGroupIDList.c \
GU-Group-ID.c \
GUMMEI.c \
HandoverReportType.c \
HandoverRestrictionList.c \
HFN.c \
HWLoadIndicator.c \
IntegrityProtectionAlgorithms.c \
InterfacesToTrace.c \
Key-eNodeB-Star.c \
LAC.c \
LastVisitedCell-Item.c \
LastVisitedEUTRANCellInformation.c \
LastVisitedUTRANCellInformation.c \
LastVisitedGERANCellInformation.c \
LoadIndicator.c \
LocationReportingInformation.c \
MME-Group-ID.c \
MME-Code.c \
Measurement-ID.c \
MBSFN-Subframe-Infolist.c \
MBSFN-Subframe-Info.c \
MobilityParametersModificationRange.c \
MobilityParametersInformation.c \
Neighbour-Information.c \
Neighbour-Information-Elm.c \
NextHopChainingCount.c \
Number-of-Antennaports.c \
Oneframe.c \
PDCP-SN.c \
PCI.c \
PLMN-Identity.c \
PRACH-Configuration.c \
Pre-emptionCapability.c \
Pre-emptionVulnerability.c \
PriorityLevel.c \
QCI.c \
ReceiveStatusofULPDCPSDUs.c \
Registration-Request.c \
RelativeNarrowbandTxPower.c \
ReportArea.c \
ReportCharacteristics.c \
RNTP-Threshold.c \
RRC-Context.c \
RadioResourceStatus.c \
DL-GBR-PRB-usage.c \
UL-GBR-PRB-usage.c \
DL-non-GBR-PRB-usage.c \
UL-non-GBR-PRB-usage.c \
DL-Total-PRB-usage.c \
UL-Total-PRB-usage.c \
RadioframeAllocationPeriod.c \
RadioframeAllocationOffset.c \
S1TNLLoadIndicator.c \
ServedCellsToActivate.c \
ServedCellsToActivate-Item.c \
ServedCellsToModify.c \
ServedCellsToModify-Item.c \
Old-ECGIs.c \
ServedCells.c \
ServedCellItem.c \
ServedCell-Information.c \
ShortMAC-I.c \
SRVCCOperationPossible.c \
SubframeAssignment.c \
SpecialSubframe-Info.c \
SpecialSubframePatterns.c \
SubscriberProfileIDforRFP.c \
SubframeAllocation.c \
TAC.c \
TargeteNBtoSource-eNBTransparentContainer.c \
TimeToWait.c \
Time-UE-StayedInCell.c \
TraceActivation.c \
TraceCollectionEntityIPAddress.c \
TraceDepth.c \
Transmission-Bandwidth.c \
TransportLayerAddress.c \
TypeOfError.c \
UE-HistoryInformation.c \
UE-S1AP-ID.c \
UE-ID.c \
UEAggregateMaximumBitRate.c \
UESecurityCapabilities.c \
UE-ContextInformation.c \
UL-InterferenceOverloadIndication.c \
UL-InterferenceOverloadIndication-Item.c \
UL-HighInterferenceIndicationInfo.c \
UL-HighInterferenceIndicationInfo-Item.c \
UL-HighInterferenceIndication.c \
UE-RLF-Report-Container.c \
IE.c \
PDU.c \
InitiatingMessage.c \
SuccessfulOutcome.c \
UnsuccessfulOutcome.c \
HandoverRequest.c \
HandoverRequestAcknowledge.c \
HandoverPreparationFailure.c \
SNStatusTransfer.c \
UEContextRelease.c \
HandoverCancel.c \
HandoverReport.c \
ErrorIndication.c \
ResetRequest.c \
ResetResponse.c \
X2SetupRequest.c \
X2SetupResponse.c \
X2SetupFailure.c \
LoadInformation.c \
ENBConfigurationUpdate.c \
ENBConfigurationUpdateAcknowledge.c \
ENBConfigurationUpdateFailure.c \
ResourceStatusRequest.c \
ResourceStatusResponse.c \
ResourceStatusFailure.c \
ResourceStatusUpdate.c \
RLFIndication.c \
PrivateMessage.c \
MobilityChangeRequest.c \
MobilityChangeAcknowledge.c \
MobilityChangeFailure.c \
CellActivationRequest.c \
CellActivationResponse.c \
CellActivationFailure.c
ASN_MODULE_HEADERS= \
Criticality.h \
Presence.h \
PrivateIE-ID.h \
ProcedureCode.h \
ProtocolIE-ID.h \
TriggeringMessage.h \
IE-Extensions.h \
AS-SecurityInformation.h \
AllocationAndRetentionPriority.h \
ActivatedCellList.h \
ActivatedCellList-Item.h \
BitRate.h \
BroadcastPLMNs-Item.h \
CapacityValue.h \
CellCapacityClassValue.h \
CellToReport-List.h \
CellToReport-Item.h \
CellMeasurementResult-List.h \
CellMeasurementResult-Item.h \
ReportingPeriodicity.h \
Cause.h \
CauseMisc.h \
CauseProtocol.h \
CauseRadioNetwork.h \
CauseTransport.h \
Cell-Size.h \
CellInformation-List.h \
CellInformation-Item.h \
CellType.h \
CompositeAvailableCapacityGroup.h \
CompositeAvailableCapacity.h \
COUNTvalue.h \
CriticalityDiagnostics.h \
CriticalityDiagnostics-IE-List.h \
CriticalityDiagnostics-IE-Elm.h \
CRNTI.h \
CyclicPrefixDL.h \
CyclicPrefixUL.h \
DeactivationIndication.h \
DL-Forwarding.h \
E-RABs-Admitted-List.h \
E-RABs-Admitted-Item.h \
E-RABs-ToBeSetup-List.h \
E-RABs-ToBeSetup-Item.h \
E-RABs-SubjectToStatusTransfer-List.h \
E-RABs-SubjectToStatusTransfer-Item.h \
EARFCN.h \
FDD-Info.h \
TDD-Info.h \
EUTRA-Mode-Info.h \
ECGI.h \
ENB-ID.h \
EncryptionAlgorithms.h \
EPLMNs.h \
E-RAB-ID.h \
E-RAB-Level-QoS-Parameters.h \
E-RAB-List.h \
E-RAB-Item.h \
EUTRANCellIdentifier.h \
EUTRANTraceID.h \
EventType.h \
ForbiddenInterRATs.h \
ForbiddenTAs.h \
ForbiddenTAs-Item.h \
ForbiddenTACs.h \
ForbiddenLAs.h \
ForbiddenLAs-Item.h \
ForbiddenLACs.h \
Fourframes.h \
GBR-QosInformation.h \
GlobalENB-ID.h \
GTPtunnelEndpoint.h \
GTP-TEI.h \
GUGroupIDList.h \
GU-Group-ID.h \
GUMMEI.h \
HandoverReportType.h \
HandoverRestrictionList.h \
HFN.h \
HWLoadIndicator.h \
IntegrityProtectionAlgorithms.h \
InterfacesToTrace.h \
Key-eNodeB-Star.h \
LAC.h \
LastVisitedCell-Item.h \
LastVisitedEUTRANCellInformation.h \
LastVisitedUTRANCellInformation.h \
LastVisitedGERANCellInformation.h \
LoadIndicator.h \
LocationReportingInformation.h \
MME-Group-ID.h \
MME-Code.h \
Measurement-ID.h \
MBSFN-Subframe-Infolist.h \
MBSFN-Subframe-Info.h \
MobilityParametersModificationRange.h \
MobilityParametersInformation.h \
Neighbour-Information.h \
Neighbour-Information-Elm.h \
NextHopChainingCount.h \
Number-of-Antennaports.h \
Oneframe.h \
PDCP-SN.h \
PCI.h \
PLMN-Identity.h \
PRACH-Configuration.h \
Pre-emptionCapability.h \
Pre-emptionVulnerability.h \
PriorityLevel.h \
QCI.h \
ReceiveStatusofULPDCPSDUs.h \
Registration-Request.h \
RelativeNarrowbandTxPower.h \
ReportArea.h \
ReportCharacteristics.h \
RNTP-Threshold.h \
RRC-Context.h \
RadioResourceStatus.h \
DL-GBR-PRB-usage.h \
UL-GBR-PRB-usage.h \
DL-non-GBR-PRB-usage.h \
UL-non-GBR-PRB-usage.h \
DL-Total-PRB-usage.h \
vUL-Total-PRB-usage.h \
RadioframeAllocationPeriod.h \
RadioframeAllocationOffset.h \
S1TNLLoadIndicator.h \
ServedCellsToActivate.h \
ServedCellsToActivate-Item.h \
ServedCellsToModify.h \
ServedCellsToModify-Item.h \
Old-ECGIs.h \
ServedCells.h \
ServedCellItem.h \
ServedCell-Information.h \
ShortMAC-I.h \
SRVCCOperationPossible.h \
SubframeAssignment.h \
SpecialSubframe-Info.h \
SpecialSubframePatterns.h \
SubscriberProfileIDforRFP.h \
SubframeAllocation.h \
TAC.h \
TargeteNBtoSource-eNBTransparentContainer.h \
TimeToWait.h \
Time-UE-StayedInCell.h \
TraceActivation.h \
TraceCollectionEntityIPAddress.h \
TraceDepth.h \
Transmission-Bandwidth.h \
TransportLayerAddress.h \
TypeOfError.h \
UE-HistoryInformation.h \
UE-S1AP-ID.h \
UE-ID.h \
UEAggregateMaximumBitRate.h \
UESecurityCapabilities.h \
UE-ContextInformation.h \
UL-InterferenceOverloadIndication.h \
UL-InterferenceOverloadIndication-Item.h \
UL-HighInterferenceIndicationInfo.h \
UL-HighInterferenceIndicationInfo-Item.h \
UL-HighInterferenceIndication.h \
UE-RLF-Report-Container.h \
IE.h \
PDU.h \
InitiatingMessage.h \
SuccessfulOutcome.h \
UnsuccessfulOutcome.h \
HandoverRequest.h \
HandoverRequestAcknowledge.h \
HandoverPreparationFailure.h \
SNStatusTransfer.h \
UEContextRelease.h \
HandoverCancel.h \
HandoverReport.h \
ErrorIndication.h \
ResetRequest.h \
ResetResponse.h \
X2SetupRequest.h \
X2SetupResponse.h \
X2SetupFailure.h \
LoadInformation.h \
ENBConfigurationUpdate.h \
ENBConfigurationUpdateAcknowledge.h \
ENBConfigurationUpdateFailure.h \
ResourceStatusRequest.h \
ResourceStatusResponse.h \
ResourceStatusFailure.h \
ResourceStatusUpdate.h \
RLFIndication.h \
PrivateMessage.h \
MobilityChangeRequest.h \
MobilityChangeAcknowledge.h \
MobilityChangeFailure.h \
CellActivationRequest.h \
CellActivationResponse.h \
CellActivationFailure.h
ASN_MODULE_HEADERS+=ANY.h
ASN_MODULE_SOURCES+=ANY.c
ASN_MODULE_HEADERS+=BOOLEAN.h
ASN_MODULE_SOURCES+=BOOLEAN.c
ASN_MODULE_HEADERS+=INTEGER.h
ASN_MODULE_HEADERS+=NativeEnumerated.h
ASN_MODULE_SOURCES+=INTEGER.c
ASN_MODULE_HEADERS+=NULL.h
ASN_MODULE_SOURCES+=NULL.c
ASN_MODULE_SOURCES+=NativeEnumerated.c
ASN_MODULE_HEADERS+=NativeInteger.h
ASN_MODULE_SOURCES+=NativeInteger.c
ASN_MODULE_HEADERS+=OBJECT_IDENTIFIER.h
ASN_MODULE_SOURCES+=OBJECT_IDENTIFIER.c
ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c
ASN_MODULE_HEADERS+=asn_SET_OF.h
ASN_MODULE_SOURCES+=asn_SET_OF.c
ASN_MODULE_HEADERS+=constr_CHOICE.h
ASN_MODULE_SOURCES+=constr_CHOICE.c
ASN_MODULE_HEADERS+=constr_SEQUENCE.h
ASN_MODULE_SOURCES+=constr_SEQUENCE.c
ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c
ASN_MODULE_HEADERS+=constr_SET_OF.h
ASN_MODULE_SOURCES+=constr_SET_OF.c
ASN_MODULE_HEADERS+=asn_application.h
ASN_MODULE_HEADERS+=asn_system.h
ASN_MODULE_HEADERS+=asn_codecs.h
ASN_MODULE_HEADERS+=asn_internal.h
ASN_MODULE_HEADERS+=OCTET_STRING.h
ASN_MODULE_SOURCES+=OCTET_STRING.c
ASN_MODULE_HEADERS+=BIT_STRING.h
ASN_MODULE_SOURCES+=BIT_STRING.c
ASN_MODULE_SOURCES+=asn_codecs_prim.c
ASN_MODULE_HEADERS+=asn_codecs_prim.h
ASN_MODULE_HEADERS+=ber_tlv_length.h
ASN_MODULE_SOURCES+=ber_tlv_length.c
ASN_MODULE_HEADERS+=ber_tlv_tag.h
ASN_MODULE_SOURCES+=ber_tlv_tag.c
ASN_MODULE_HEADERS+=ber_decoder.h
ASN_MODULE_SOURCES+=ber_decoder.c
ASN_MODULE_HEADERS+=der_encoder.h
ASN_MODULE_SOURCES+=der_encoder.c
ASN_MODULE_HEADERS+=constr_TYPE.h
ASN_MODULE_SOURCES+=constr_TYPE.c
ASN_MODULE_HEADERS+=constraints.h
ASN_MODULE_SOURCES+=constraints.c
ASN_MODULE_HEADERS+=xer_support.h
ASN_MODULE_SOURCES+=xer_support.c
ASN_MODULE_HEADERS+=xer_decoder.h
ASN_MODULE_SOURCES+=xer_decoder.c
ASN_MODULE_HEADERS+=xer_encoder.h
ASN_MODULE_SOURCES+=xer_encoder.c
ASN_MODULE_HEADERS+=per_support.h
ASN_MODULE_SOURCES+=per_support.c
ASN_MODULE_HEADERS+=per_decoder.h
ASN_MODULE_SOURCES+=per_decoder.c
ASN_MODULE_HEADERS+=per_encoder.h
ASN_MODULE_SOURCES+=per_encoder.c
ASN_MODULE_HEADERS+=per_opentype.h
ASN_MODULE_SOURCES+=per_opentype.c
@@ -1,126 +0,0 @@
-- **************************************************************
--
-- Common definitions
--
-- **************************************************************
X2AP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
maxPrivateIEs INTEGER ::= 65535
maxProtocolExtensions INTEGER ::= 65535
maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Common Data Types
--
-- **************************************************************
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
PrivateIE-ID ::= CHOICE {
local INTEGER (0.. maxPrivateIEs),
global OBJECT IDENTIFIER
}
ProcedureCode ::= INTEGER {
id-handoverPreparation (0),
id-handoverCancel (1),
id-loadIndication (2),
id-errorIndication (3),
id-snStatusTransfer (4),
id-uEContextRelease (5),
id-x2Setup (6),
id-reset (7),
id-eNBConfigurationUpdate (8),
id-resourceStatusReportingInitiation (9),
id-resourceStatusReporting (10),
id-privateMessage (11),
id-mobilitySettingsChange (12),
id-rLFIndication (13),
id-handoverReport (14),
id-cellActivation (15)
} (0..255)
ProtocolIE-ID ::= INTEGER {
id-E-RABs-Admitted-Item (0),
id-E-RABs-Admitted-List (1),
id-E-RAB-Item (2),
id-E-RABs-NotAdmitted-List (3),
id-E-RABs-ToBeSetup-Item (4),
id-Cause (5),
id-CellInformation (6),
id-CellInformation-Item (7),
id-New-eNB-UE-X2AP-ID (9),
id-Old-eNB-UE-X2AP-ID (10),
id-TargetCell-ID (11),
id-TargeteNBtoSource-eNBTransparentContainer (12),
id-TraceActivation (13),
id-UE-ContextInformation (14),
id-UE-HistoryInformation (15),
id-UE-X2AP-ID (16),
id-CriticalityDiagnostics (17),
id-E-RABs-SubjectToStatusTransfer-List (18),
id-E-RABs-SubjectToStatusTransfer-Item (19),
id-ServedCells (20),
id-GlobalENB-ID (21),
id-TimeToWait (22),
id-GUMMEI-ID (23),
id-GUGroupIDList (24),
id-ServedCellsToAdd (25),
id-ServedCellsToModify (26),
id-ServedCellsToDelete (27),
id-Registration-Request (28),
id-CellToReport (29),
id-ReportingPeriodicity (30),
id-CellToReport-Item (31),
id-CellMeasurementResult (32),
id-CellMeasurementResult-Item (33),
id-GUGroupIDToAddList (34),
id-GUGroupIDToDeleteList (35),
id-SRVCCOperationPossible (36),
id-Measurement-ID (37),
id-ReportCharacteristics (38),
id-ENB1-Measurement-ID (39),
id-ENB2-Measurement-ID (40),
id-Number-of-Antennaports (41),
id-CompositeAvailableCapacityGroup (42),
id-ENB1-Cell-ID (43),
id-ENB2-Cell-ID (44),
id-ENB2-Proposed-Mobility-Parameters (45),
id-ENB1-Mobility-Parameters (46),
id-ENB2-Mobility-Parameters-Modification-Range (47),
id-FailureCellPCI (48),
id-Re-establishmentCellECGI (49),
id-FailureCellCRNTI (50),
id-ShortMAC-I (51),
id-SourceCellECGI (52),
id-FailureCellECGI (53),
id-HandoverReportType (54),
id-PRACH-Configuration (55),
id-MBSFN-Subframe-Info (56),
id-ServedCellsToActivate (57),
id-ActivatedCellList (58),
id-DeactivationIndication (59),
id-UE-RLF-Report-Container (60)
} (0..maxProtocolIEs)
TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}
END
@@ -1,138 +0,0 @@
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
X2AP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ProcedureCode,
ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-handoverPreparation ProcedureCode ::= 0
id-handoverCancel ProcedureCode ::= 1
id-loadIndication ProcedureCode ::= 2
id-errorIndication ProcedureCode ::= 3
id-snStatusTransfer ProcedureCode ::= 4
id-uEContextRelease ProcedureCode ::= 5
id-x2Setup ProcedureCode ::= 6
id-reset ProcedureCode ::= 7
id-eNBConfigurationUpdate ProcedureCode ::= 8
id-resourceStatusReportingInitiation ProcedureCode ::= 9
id-resourceStatusReporting ProcedureCode ::= 10
id-privateMessage ProcedureCode ::= 11
id-mobilitySettingsChange ProcedureCode ::= 12
id-rLFIndication ProcedureCode ::= 13
id-handoverReport ProcedureCode ::= 14
id-cellActivation ProcedureCode ::= 15
-- **************************************************************
--
-- Lists
--
-- **************************************************************
maxEARFCN INTEGER ::= 65535
maxInterfaces INTEGER ::= 16
maxCellineNB INTEGER ::= 256
maxnoofBearers INTEGER ::= 256
maxNrOfErrors INTEGER ::= 256
maxnoofPDCP-SN INTEGER ::= 16 -- FFS Value to be checked
maxnoofEPLMNs INTEGER ::= 15
maxnoofEPLMNsPlusOne INTEGER ::= 16
maxnoofForbLACs INTEGER ::= 4096
maxnoofForbTACs INTEGER ::= 4096
maxnoofBPLMNs INTEGER ::= 6
maxnoofNeighbours INTEGER ::= 512
maxnoofPRBs INTEGER ::= 110
maxPools INTEGER ::= 16
maxnoofCells INTEGER ::= 16
maxnoofMBSFN INTEGER ::= 8
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-E-RABs-Admitted-Item ProtocolIE-ID ::= 0
id-E-RABs-Admitted-List ProtocolIE-ID ::= 1
id-E-RAB-Item ProtocolIE-ID ::= 2
id-E-RABs-NotAdmitted-List ProtocolIE-ID ::= 3
id-E-RABs-ToBeSetup-Item ProtocolIE-ID ::= 4
id-Cause ProtocolIE-ID ::= 5
id-CellInformation ProtocolIE-ID ::= 6
id-CellInformation-Item ProtocolIE-ID ::= 7
id-New-eNB-UE-X2AP-ID ProtocolIE-ID ::= 9
id-Old-eNB-UE-X2AP-ID ProtocolIE-ID ::= 10
id-TargetCell-ID ProtocolIE-ID ::= 11
id-TargeteNBtoSource-eNBTransparentContainer ProtocolIE-ID ::= 12
id-TraceActivation ProtocolIE-ID ::= 13
id-UE-ContextInformation ProtocolIE-ID ::= 14
id-UE-HistoryInformation ProtocolIE-ID ::= 15
id-UE-X2AP-ID ProtocolIE-ID ::= 16
id-CriticalityDiagnostics ProtocolIE-ID ::= 17
id-E-RABs-SubjectToStatusTransfer-List ProtocolIE-ID ::= 18
id-E-RABs-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 19
id-ServedCells ProtocolIE-ID ::= 20
id-GlobalENB-ID ProtocolIE-ID ::= 21
id-TimeToWait ProtocolIE-ID ::= 22
id-GUMMEI-ID ProtocolIE-ID ::= 23
id-GUGroupIDList ProtocolIE-ID ::= 24
id-ServedCellsToAdd ProtocolIE-ID ::= 25
id-ServedCellsToModify ProtocolIE-ID ::= 26
id-ServedCellsToDelete ProtocolIE-ID ::= 27
id-Registration-Request ProtocolIE-ID ::= 28
id-CellToReport ProtocolIE-ID ::= 29
id-ReportingPeriodicity ProtocolIE-ID ::= 30
id-CellToReport-Item ProtocolIE-ID ::= 31
id-CellMeasurementResult ProtocolIE-ID ::= 32
id-CellMeasurementResult-Item ProtocolIE-ID ::= 33
id-GUGroupIDToAddList ProtocolIE-ID ::= 34
id-GUGroupIDToDeleteList ProtocolIE-ID ::= 35
id-SRVCCOperationPossible ProtocolIE-ID ::= 36
id-Measurement-ID ProtocolIE-ID ::= 37
id-ReportCharacteristics ProtocolIE-ID ::= 38
id-ENB1-Measurement-ID ProtocolIE-ID ::= 39
id-ENB2-Measurement-ID ProtocolIE-ID ::= 40
id-Number-of-Antennaports ProtocolIE-ID ::= 41
id-CompositeAvailableCapacityGroup ProtocolIE-ID ::= 42
id-ENB1-Cell-ID ProtocolIE-ID ::= 43
id-ENB2-Cell-ID ProtocolIE-ID ::= 44
id-ENB2-Proposed-Mobility-Parameters ProtocolIE-ID ::= 45
id-ENB1-Mobility-Parameters ProtocolIE-ID ::= 46
id-ENB2-Mobility-Parameters-Modification-Range ProtocolIE-ID ::= 47
id-FailureCellPCI ProtocolIE-ID ::= 48
id-Re-establishmentCellECGI ProtocolIE-ID ::= 49
id-FailureCellCRNTI ProtocolIE-ID ::= 50
id-ShortMAC-I ProtocolIE-ID ::= 51
id-SourceCellECGI ProtocolIE-ID ::= 52
id-FailureCellECGI ProtocolIE-ID ::= 53
id-HandoverReportType ProtocolIE-ID ::= 54
id-PRACH-Configuration ProtocolIE-ID ::= 55
id-MBSFN-Subframe-Info ProtocolIE-ID ::= 56
id-ServedCellsToActivate ProtocolIE-ID ::= 57
id-ActivatedCellList ProtocolIE-ID ::= 58
id-DeactivationIndication ProtocolIE-ID ::= 59
id-UE-RLF-Report-Container ProtocolIE-ID ::= 60
END
@@ -1,194 +0,0 @@
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
X2AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
maxPrivateIEs,
maxProtocolExtensions,
maxProtocolIEs,
Criticality,
Presence,
PrivateIE-ID,
ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES-PAIR ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&firstCriticality Criticality,
&FirstValue,
&secondCriticality Criticality,
&SecondValue,
&presence Presence
}
WITH SYNTAX {
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
X2AP-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolIE-ID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
X2AP-PRIVATE-IES ::= CLASS {
&id PrivateIE-ID,
&criticality Criticality,
&Value,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Single-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {X2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality X2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality X2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue X2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality X2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue X2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality X2AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue X2AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {X2AP-PRIVATE-IES : IEsSetParam} ::=
SEQUENCE (SIZE (1..maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {X2AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PRIVATE-IES.&id ({IEsSetParam}),
criticality X2AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END
@@ -1,989 +0,0 @@
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
X2AP-IEs {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-IEs (2) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
id-E-RAB-Item,
id-Number-of-Antennaports,
id-MBSFN-Subframe-Info,
id-PRACH-Configuration,
maxnoofBearers,
maxCellineNB,
maxEARFCN,
maxInterfaces,
maxnoofBPLMNs,
maxnoofCells,
maxnoofEPLMNs,
maxnoofEPLMNsPlusOne,
maxnoofForbLACs,
maxnoofForbTACs,
maxnoofNeighbours,
maxnoofPRBs,
maxNrOfErrors,
maxPools,
maxnoofMBSFN
FROM X2AP-Constants
Criticality,
ProcedureCode,
ProtocolIE-ID,
TriggeringMessage,
maxProtocolExtensions
FROM X2AP-CommonDataTypes
IE
FROM X2AP-PDU;
IE-Extensions ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF IE
-- A
AS-SecurityInformation ::= SEQUENCE {
key-eNodeB-star Key-eNodeB-Star,
nextHopChainingCount NextHopChainingCount,
-- iE-Extensions ProtocolExtensionContainer { { AS-SecurityInformation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
AllocationAndRetentionPriority ::= SEQUENCE {
priorityLevel PriorityLevel,
pre-emptionCapability Pre-emptionCapability,
pre-emptionVulnerability Pre-emptionVulnerability,
-- iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ActivatedCellList ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ActivatedCellList-Item
ActivatedCellList-Item::= SEQUENCE {
ecgi ECGI,
-- iE-Extensions ProtocolExtensionContainer { { ActivatedCellList-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
-- B
BitRate ::= INTEGER (0..10000000000)
BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity
-- C
CapacityValue ::= INTEGER (0..100)
CellCapacityClassValue ::= INTEGER (1..100, ...)
CellToReport-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF IE
CellToReport-Item ::= SEQUENCE {
cell-ID ECGI,
-- iE-Extensions ProtocolExtensionContainer { {CellToReport-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CellMeasurementResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF IE
CellMeasurementResult-Item ::= SEQUENCE {
cell-ID ECGI,
hWOverLoadIndicator HWLoadIndicator OPTIONAL,
s1TNLOverLoadIndicator S1TNLLoadIndicator OPTIONAL,
radioResourceStatus RadioResourceStatus OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {CellMeasurementResult-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ReportingPeriodicity ::= ENUMERATED {
one-thousand-ms,
two-thousand-ms,
five-thousand-ms,
ten-thousand-ms,
...
}
Cause ::= CHOICE {
radioNetwork CauseRadioNetwork,
transport CauseTransport,
protocol CauseProtocol,
misc CauseMisc,
...
}
CauseMisc ::= ENUMERATED {
control-processing-overload,
hardware-failure,
om-intervention,
not-enough-user-plane-processing-resources,
unspecified,
...
}
CauseProtocol ::= ENUMERATED {
transfer-syntax-error,
abstract-syntax-error-reject,
abstract-syntax-error-ignore-and-notify,
message-not-compatible-with-receiver-state,
semantic-error,
unspecified,
abstract-syntax-error-falsely-constructed-message,
...
}
CauseRadioNetwork ::= ENUMERATED {
handover-desirable-for-radio-reasons,
time-critical-handover,
resource-optimisation-handover,
reduce-load-in-serving-cell,
partial-handover,
unknown-new-eNB-UE-X2AP-ID,
unknown-old-eNB-UE-X2AP-ID,
unknown-pair-of-UE-X2AP-ID,
ho-target-not-allowed,
tx2relocoverall-expiry,
trelocprep-expiry,
cell-not-available,
no-radio-resources-available-in-target-cell,
invalid-MME-GroupID,
unknown-MME-Code,
encryption-and-or-integrity-protection-algorithms-not-supported,
reportCharacteristicsEmpty,
noReportPeriodicity,
existingMeasurementID,
unknown-eNB-Measurement-ID,
measurement-temporarily-not-available,
unspecified,
...,
load-balancing,
handover-optimisation,
value-out-of-allowed-range,
multiple-E-RAB-ID-instances,
switch-off-ongoing,
not-supported-QCI-value
}
CauseTransport ::= ENUMERATED {
transport-resource-unavailable,
unspecified,
...
}
Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ... }
CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF IE
CellInformation-Item ::= SEQUENCE {
cell-ID ECGI,
ul-InterferenceOverloadIndication UL-InterferenceOverloadIndication OPTIONAL,
ul-HighInterferenceIndicationInfo UL-HighInterferenceIndicationInfo OPTIONAL,
relativeNarrowbandTxPower RelativeNarrowbandTxPower OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CellType ::= SEQUENCE {
cell-Size Cell-Size,
-- iE-Extensions ProtocolExtensionContainer { { CellType-ExtIEs}} OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CompositeAvailableCapacityGroup ::= SEQUENCE {
dL-CompositeAvailableCapacity CompositeAvailableCapacity,
uL-CompositeAvailableCapacity CompositeAvailableCapacity,
-- iE-Extensions ProtocolExtensionContainer { { CompositeAvailableCapacityGroup-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CompositeAvailableCapacity ::= SEQUENCE {
cellCapacityClassValue CellCapacityClassValue OPTIONAL,
capacityValue CapacityValue,
-- iE-Extensions ProtocolExtensionContainer { { CompositeAvailableCapacity-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
COUNTvalue ::= SEQUENCE {
pDCP-SN PDCP-SN,
hFN HFN,
-- iE-Extensions ProtocolExtensionContainer { { COUNTvalue-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CriticalityDiagnostics ::= SEQUENCE {
procedureCode ProcedureCode OPTIONAL,
triggeringMessage TriggeringMessage OPTIONAL,
procedureCriticality Criticality OPTIONAL,
iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF CriticalityDiagnostics-IE-Elm
CriticalityDiagnostics-IE-Elm ::= SEQUENCE {
iECriticality Criticality,
iE-ID ProtocolIE-ID,
typeOfError TypeOfError,
-- iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
CRNTI ::= BIT STRING (SIZE (16))
CyclicPrefixDL ::= ENUMERATED {
normal,
extended,
...
}
CyclicPrefixUL ::= ENUMERATED {
normal,
extended,
...
}
-- D
DeactivationIndication::= ENUMERATED {
deactivated,
...
}
DL-Forwarding ::= ENUMERATED {
dL-forwardingProposed,
...
}
-- E
E-RABs-Admitted-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF IE
E-RABs-Admitted-Item ::= SEQUENCE {
e-RAB-ID E-RAB-ID,
uL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL,
dL-GTP-TunnelEndpoint GTPtunnelEndpoint OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {E-RABs-Admitted-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF IE
E-RABs-ToBeSetup-Item ::= SEQUENCE {
e-RAB-ID E-RAB-ID,
e-RAB-Level-QoS-Parameters E-RAB-Level-QoS-Parameters,
dL-Forwarding DL-Forwarding OPTIONAL,
uL-GTPtunnelEndpoint GTPtunnelEndpoint,
-- iE-Extensions ProtocolExtensionContainer { {E-RABs-ToBeSetup-ItemExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
E-RABs-SubjectToStatusTransfer-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF IE
E-RABs-SubjectToStatusTransfer-Item ::= SEQUENCE {
e-RAB-ID E-RAB-ID,
receiveStatusofULPDCPSDUs ReceiveStatusofULPDCPSDUs OPTIONAL,
uL-COUNTvalue COUNTvalue,
dL-COUNTvalue COUNTvalue,
-- iE-Extensions ProtocolExtensionContainer { {E-RABs-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
EARFCN ::= INTEGER (0..maxEARFCN)
FDD-Info ::= SEQUENCE {
uL-EARFCN EARFCN,
dL-EARFCN EARFCN,
uL-Transmission-Bandwidth Transmission-Bandwidth,
dL-Transmission-Bandwidth Transmission-Bandwidth,
-- iE-Extensions ProtocolExtensionContainer { {FDD-Info-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
TDD-Info ::= SEQUENCE {
eARFCN EARFCN,
transmission-Bandwidth Transmission-Bandwidth,
subframeAssignment SubframeAssignment,
specialSubframe-Info SpecialSubframe-Info,
-- iE-Extensions ProtocolExtensionContainer { {TDD-Info-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
EUTRA-Mode-Info ::= CHOICE {
fDD FDD-Info,
tDD TDD-Info,
...
}
ECGI ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
eUTRANcellIdentifier EUTRANCellIdentifier,
-- iE-Extensions ProtocolExtensionContainer { {ECGI-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ENB-ID ::= CHOICE {
macro-eNB-ID BIT STRING (SIZE (20)),
home-eNB-ID BIT STRING (SIZE (28)),
...
}
EncryptionAlgorithms ::= BIT STRING (SIZE (16, ...))
EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMN-Identity
E-RAB-ID ::= INTEGER (0..15, ...)
E-RAB-Level-QoS-Parameters ::= SEQUENCE {
qCI QCI,
allocationAndRetentionPriority AllocationAndRetentionPriority,
gbrQosInformation GBR-QosInformation OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { { E-RAB-Level-QoS-Parameters-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
E-RAB-List ::= SEQUENCE (SIZE(1.. maxnoofBearers)) OF IE
E-RAB-Item ::= SEQUENCE {
e-RAB-ID E-RAB-ID,
cause Cause,
-- iE-Extensions ProtocolExtensionContainer { {E-RAB-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
EUTRANCellIdentifier ::= BIT STRING (SIZE (28))
EUTRANTraceID ::= OCTET STRING (SIZE (8))
EventType ::= ENUMERATED{
change-of-serving-cell,
...
}
-- F
ForbiddenInterRATs ::= ENUMERATED {
all,
geran,
utran,
cdma2000,
...,
geranandutran,
cdma2000andutran
}
ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item
ForbiddenTAs-Item ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
forbiddenTACs ForbiddenTACs,
-- iE-Extensions ProtocolExtensionContainer { {ForbiddenTAs-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC
ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item
ForbiddenLAs-Item ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
forbiddenLACs ForbiddenLACs,
-- iE-Extensions ProtocolExtensionContainer { {ForbiddenLAs-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC
Fourframes ::= BIT STRING (SIZE (24))
-- G
GBR-QosInformation ::= SEQUENCE {
e-RAB-MaximumBitrateDL BitRate,
e-RAB-MaximumBitrateUL BitRate,
e-RAB-GuaranteedBitrateDL BitRate,
e-RAB-GuaranteedBitrateUL BitRate,
-- iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
GlobalENB-ID ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
eNB-ID ENB-ID,
-- iE-Extensions ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
GTPtunnelEndpoint ::= SEQUENCE {
transportLayerAddress TransportLayerAddress,
gTP-TEID GTP-TEI,
-- iE-Extensions ProtocolExtensionContainer { {GTPtunnelEndpoint-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
GTP-TEI ::= OCTET STRING (SIZE (4))
GUGroupIDList ::= SEQUENCE (SIZE (1..maxPools)) OF GU-Group-ID
GU-Group-ID ::= SEQUENCE {
pLMN-Identity PLMN-Identity,
mME-Group-ID MME-Group-ID,
-- iE-Extensions ProtocolExtensionContainer { {GU-Group-ID-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
GUMMEI ::= SEQUENCE {
gU-Group-ID GU-Group-ID,
mME-Code MME-Code,
-- iE-Extensions ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
-- H
HandoverReportType ::= ENUMERATED {
hoTooEarly,
hoToWrongCell,
...
}
HandoverRestrictionList ::= SEQUENCE {
servingPLMN PLMN-Identity,
equivalentPLMNs EPLMNs OPTIONAL,
forbiddenTAs ForbiddenTAs OPTIONAL,
forbiddenLAs ForbiddenLAs OPTIONAL,
forbiddenInterRATs ForbiddenInterRATs OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
HFN ::= INTEGER (0..1048575)
HWLoadIndicator ::= SEQUENCE {
dLHWLoadIndicator LoadIndicator,
uLHWLoadIndicator LoadIndicator,
-- iE-Extensions ProtocolExtensionContainer { { HWLoadIndicator-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
-- I
IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16, ...))
InterfacesToTrace ::= BIT STRING (SIZE (8))
-- J
-- K
Key-eNodeB-Star ::= BIT STRING (SIZE(256))
-- L
LAC ::= OCTET STRING (SIZE (2)) --(EXCEPT ('0000'H|'FFFE'H))
LastVisitedCell-Item ::= CHOICE {
e-UTRAN-Cell LastVisitedEUTRANCellInformation,
uTRAN-Cell LastVisitedUTRANCellInformation,
gERAN-Cell LastVisitedGERANCellInformation,
...
}
LastVisitedEUTRANCellInformation ::= SEQUENCE {
global-Cell-ID ECGI,
cellType CellType,
time-UE-StayedInCell Time-UE-StayedInCell,
-- iE-Extensions ProtocolExtensionContainer { { LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
LastVisitedUTRANCellInformation ::= OCTET STRING
LastVisitedGERANCellInformation ::= CHOICE {
undefined NULL,
...
}
LoadIndicator ::= ENUMERATED {
lowLoad,
mediumLoad,
highLoad,
overLoad,
...
}
LocationReportingInformation ::= SEQUENCE {
eventType EventType,
reportArea ReportArea,
-- iE-Extensions ProtocolExtensionContainer { {LocationReportingInformation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
-- M
MME-Group-ID ::= OCTET STRING (SIZE (2))
MME-Code ::= OCTET STRING (SIZE (1))
Measurement-ID ::= INTEGER (1..4095, ...)
MBSFN-Subframe-Infolist::= SEQUENCE (SIZE(1.. maxnoofMBSFN)) OF MBSFN-Subframe-Info
MBSFN-Subframe-Info ::= SEQUENCE {
radioframeAllocationPeriod RadioframeAllocationPeriod,
radioframeAllocationOffset RadioframeAllocationOffset,
subframeAllocation SubframeAllocation,
-- iE-Extensions ProtocolExtensionContainer { { MBSFN-Subframe-Info-ExtIEs } } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
MobilityParametersModificationRange ::= SEQUENCE {
handoverTriggerChangeLowerLimit INTEGER (-20..20),
handoverTriggerChangeUpperLimit INTEGER (-20..20),
...
}
MobilityParametersInformation ::= SEQUENCE {
handoverTriggerChange INTEGER (-20..20),
...
}
-- N
Neighbour-Information ::= SEQUENCE (SIZE (0..maxnoofNeighbours)) OF Neighbour-Information-Elm
Neighbour-Information-Elm ::= SEQUENCE {
eCGI ECGI,
pCI PCI,
eARFCN EARFCN,
-- iE-Extensions ProtocolExtensionContainer { {Neighbour-Information-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
NextHopChainingCount ::= INTEGER (0..7)
Number-of-Antennaports ::= ENUMERATED {
an1,
an2,
an4,
...
}
-- O
Oneframe ::= BIT STRING (SIZE (6))
-- P
PDCP-SN ::= INTEGER (0..4095)
PCI ::= INTEGER (0..503, ...)
PLMN-Identity ::= OCTET STRING (SIZE(3))
PRACH-Configuration ::= SEQUENCE {
rootSequenceIndex INTEGER (0..837),
zeroCorrelationIndex INTEGER (0..15),
highSpeedFlag BOOLEAN,
prach-FreqOffset INTEGER (0..94),
prach-ConfigIndex INTEGER (0..63) OPTIONAL, -- present for TDD --
-- iE-Extensions ProtocolExtensionContainer { {PRACH-Configuration-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
Pre-emptionCapability ::= ENUMERATED {
shall-not-trigger-pre-emption,
may-trigger-pre-emption
}
Pre-emptionVulnerability ::= ENUMERATED {
not-pre-emptable,
pre-emptable
}
PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15)
-- Q
QCI ::= INTEGER (0..255)
-- R
ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096))
Registration-Request ::= ENUMERATED {
start,
stop,
...
}
RelativeNarrowbandTxPower ::= SEQUENCE {
rNTP-PerPRB BIT STRING (SIZE(6..110, ...)),
rNTP-Threshold RNTP-Threshold,
numberOfCellSpecificAntennaPorts ENUMERATED {one, two, four, ...},
p-B INTEGER (0..3,...),
pDCCH-InterferenceImpact INTEGER (0..4,...),
-- iE-Extensions ProtocolExtensionContainer { { RelativeNarrowbandTxPower-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ReportArea ::= ENUMERATED{
ecgi,
...
}
ReportCharacteristics ::= BIT STRING (SIZE (32))
RNTP-Threshold ::= ENUMERATED {
minusInfinity,
minusEleven,
minusTen,
minusNine,
minusEight,
minusSeven,
minusSix,
minusFive,
minusFour,
minusThree,
minusTwo,
minusOne,
zero,
one,
two,
three,
...
}
RRC-Context ::= OCTET STRING
RadioResourceStatus ::= SEQUENCE {
dL-GBR-PRB-usage DL-GBR-PRB-usage,
uL-GBR-PRB-usage UL-GBR-PRB-usage,
dL-non-GBR-PRB-usage DL-non-GBR-PRB-usage,
uL-non-GBR-PRB-usage UL-non-GBR-PRB-usage,
dL-Total-PRB-usage DL-Total-PRB-usage,
uL-Total-PRB-usage UL-Total-PRB-usage,
-- iE-Extensions ProtocolExtensionContainer { {RadioResourceStatus-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
DL-GBR-PRB-usage::= INTEGER (0..100)
UL-GBR-PRB-usage::= INTEGER (0..100)
DL-non-GBR-PRB-usage::= INTEGER (0..100)
UL-non-GBR-PRB-usage::= INTEGER (0..100)
DL-Total-PRB-usage::= INTEGER (0..100)
UL-Total-PRB-usage::= INTEGER (0..100)
RadioframeAllocationPeriod ::= ENUMERATED{
n1,
n2,
n4,
n8,
n16,
n32,
...
}
RadioframeAllocationOffset ::= INTEGER (0..7, ...)
-- S
S1TNLLoadIndicator ::= SEQUENCE {
dLS1TNLLoadIndicator LoadIndicator,
uLS1TNLLoadIndicator LoadIndicator,
-- iE-Extensions ProtocolExtensionContainer { { S1TNLLoadIndicator-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ServedCellsToActivate::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToActivate-Item
ServedCellsToActivate-Item::= SEQUENCE {
ecgi ECGI,
-- iE-Extensions ProtocolExtensionContainer { { ServedCellsToActivate-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ServedCellsToModify::= SEQUENCE (SIZE (1..maxCellineNB)) OF IE
ServedCellsToModify-Item::= SEQUENCE {
old-ecgi ECGI,
servedCellInfo ServedCell-Information,
neighbour-Info Neighbour-Information OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { { ServedCellsToModify-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
Old-ECGIs::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI
ServedCells ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF ServedCellItem
ServedCellItem ::= SEQUENCE {
servedCellInfo ServedCell-Information,
neighbour-Info Neighbour-Information OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {ServedCell-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ServedCell-Information ::= SEQUENCE {
pCI PCI,
cellId ECGI,
tAC TAC,
broadcastPLMNs BroadcastPLMNs-Item,
eUTRA-Mode-Info EUTRA-Mode-Info,
-- iE-Extensions ProtocolExtensionContainer { {ServedCell-Information-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
ShortMAC-I ::= BIT STRING (SIZE(16))
SRVCCOperationPossible ::= ENUMERATED {
possible,
...
}
SubframeAssignment ::= ENUMERATED {
sa0,
sa1,
sa2,
sa3,
sa4,
sa5,
sa6,
...
}
SpecialSubframe-Info ::= SEQUENCE {
specialSubframePatterns SpecialSubframePatterns,
cyclicPrefixDL CyclicPrefixDL,
cyclicPrefixUL CyclicPrefixUL,
-- iE-Extensions ProtocolExtensionContainer { { SpecialSubframe-Info-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
SpecialSubframePatterns ::= ENUMERATED {
ssp0,
ssp1,
ssp2,
ssp3,
ssp4,
ssp5,
ssp6,
ssp7,
ssp8,
...
}
SubscriberProfileIDforRFP ::= INTEGER (1..256)
SubframeAllocation ::= CHOICE {
oneframe Oneframe,
fourframes Fourframes,
...
}
-- T
TAC ::= OCTET STRING (SIZE (2))
TargeteNBtoSource-eNBTransparentContainer ::= OCTET STRING
TimeToWait ::= ENUMERATED {
v1s,
v2s,
v5s,
v10s,
v20s,
v60s,
...
}
Time-UE-StayedInCell ::= INTEGER (0..4095)
TraceActivation ::= SEQUENCE {
eUTRANTraceID EUTRANTraceID,
interfacesToTrace InterfacesToTrace,
traceDepth TraceDepth,
traceCollectionEntityIPAddress TraceCollectionEntityIPAddress,
-- iE-Extensions ProtocolExtensionContainer { {TraceActivation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
TraceCollectionEntityIPAddress ::= BIT STRING (SIZE(1..160, ...))
TraceDepth ::= ENUMERATED {
minimum,
medium,
maximum,
minimumWithoutVendorSpecificExtension,
mediumWithoutVendorSpecificExtension,
maximumWithoutVendorSpecificExtension,
...
}
Transmission-Bandwidth ::= ENUMERATED {
bw6,
bw15,
bw25,
bw50,
bw75,
bw100,
...
}
TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...))
TypeOfError ::= ENUMERATED {
not-understood,
missing,
...
}
-- U
UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item
UE-S1AP-ID ::= INTEGER (0.. 4294967295)
UE-X2AP-ID ::= INTEGER (0..4095) -- Value FFS
UEAggregateMaximumBitRate ::= SEQUENCE {
uEaggregateMaximumBitRateDownlink BitRate,
uEaggregateMaximumBitRateUplink BitRate,
-- iE-Extensions ProtocolExtensionContainer { {UEAggregate-MaximumBitrate-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
UESecurityCapabilities ::= SEQUENCE {
encryptionAlgorithms EncryptionAlgorithms,
integrityProtectionAlgorithms IntegrityProtectionAlgorithms,
-- iE-Extensions ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
UE-ContextInformation ::= SEQUENCE {
mME-UE-S1AP-ID UE-S1AP-ID,
uESecurityCapabilities UESecurityCapabilities,
aS-SecurityInformation AS-SecurityInformation,
uEaggregateMaximumBitRate UEAggregateMaximumBitRate,
subscriberProfileIDforRFP SubscriberProfileIDforRFP OPTIONAL,
e-RABs-ToBeSetup-List E-RABs-ToBeSetup-List,
rRC-Context RRC-Context,
handoverRestrictionList HandoverRestrictionList OPTIONAL,
locationReportingInformation LocationReportingInformation OPTIONAL,
-- iE-Extensions ProtocolExtensionContainer { {UE-ContextInformation-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
UL-InterferenceOverloadIndication ::= SEQUENCE (SIZE(1..maxnoofPRBs)) OF UL-InterferenceOverloadIndication-Item
UL-InterferenceOverloadIndication-Item ::= ENUMERATED {
high-interference,
medium-interference,
low-interference,
...
}
UL-HighInterferenceIndicationInfo ::= SEQUENCE (SIZE(1..maxCellineNB)) OF UL-HighInterferenceIndicationInfo-Item
UL-HighInterferenceIndicationInfo-Item ::= SEQUENCE {
target-Cell-ID ECGI,
ul-interferenceindication UL-HighInterferenceIndication,
-- iE-Extensions ProtocolExtensionContainer { { UL-HighInterferenceIndicationInfo-Item-ExtIEs} } OPTIONAL,
iE-Extensions IE-Extensions OPTIONAL,
...
}
UL-HighInterferenceIndication ::= BIT STRING (SIZE(1..110, ...))
UE-RLF-Report-Container::= OCTET STRING
-- This IE is a transparent container and shall be encoded as the rlfReport field contained in the UEInformationResponse message as defined in TS 36.331 [9]
-- V
-- W
-- X
-- Y
-- Z
END
@@ -1,951 +0,0 @@
-- **************************************************************
--
-- PDU definitions for X2AP.
--
-- **************************************************************
X2AP-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
AS-SecurityInformation,
Cause,
CompositeAvailableCapacityGroup,
COUNTvalue,
CriticalityDiagnostics,
CRNTI,
DeactivationIndication,
DL-Forwarding,
ECGI,
E-RAB-ID,
E-RAB-Level-QoS-Parameters,
E-RAB-List,
EUTRANTraceID,
GlobalENB-ID,
GTPtunnelEndpoint,
GUGroupIDList,
GUMMEI,
HandoverReportType,
HandoverRestrictionList,
LocationReportingInformation,
Neighbour-Information,
PCI,
PDCP-SN,
PLMN-Identity,
ReceiveStatusofULPDCPSDUs,
Registration-Request,
RelativeNarrowbandTxPower,
RadioResourceStatus,
UE-RLF-Report-Container,
RRC-Context,
ServedCell-Information,
ServedCells,
ShortMAC-I,
SRVCCOperationPossible,
SubscriberProfileIDforRFP,
TargeteNBtoSource-eNBTransparentContainer,
TimeToWait,
TraceActivation,
TraceDepth,
TransportLayerAddress,
UEAggregateMaximumBitRate,
UE-HistoryInformation,
UE-S1AP-ID,
UESecurityCapabilities,
UE-X2AP-ID,
UL-HighInterferenceIndicationInfo,
UL-InterferenceOverloadIndication,
HWLoadIndicator,
S1TNLLoadIndicator,
Measurement-ID,
ReportCharacteristics,
MobilityParametersInformation,
MobilityParametersModificationRange
FROM X2AP-IEs
PrivateIE-Container{},
ProtocolExtensionContainer{},
ProtocolIE-Container{},
ProtocolIE-ContainerList{},
ProtocolIE-ContainerPair{},
ProtocolIE-ContainerPairList{},
ProtocolIE-Single-Container{},
X2AP-PRIVATE-IES,
X2AP-PROTOCOL-EXTENSION,
X2AP-PROTOCOL-IES,
X2AP-PROTOCOL-IES-PAIR
FROM X2AP-Containers
id-ActivatedCellList,
id-Cause,
id-CellInformation,
id-CellInformation-Item,
id-CellMeasurementResult,
id-CellMeasurementResult-Item,
id-CellToReport,
id-CellToReport-Item,
id-CompositeAvailableCapacityGroup,
id-CriticalityDiagnostics,
id-DeactivationIndication,
id-E-RABs-Admitted-Item,
id-E-RABs-Admitted-List,
id-E-RABs-NotAdmitted-List,
id-E-RABs-SubjectToStatusTransfer-List,
id-E-RABs-SubjectToStatusTransfer-Item,
id-E-RABs-ToBeSetup-Item,
id-GlobalENB-ID,
id-GUGroupIDList,
id-GUGroupIDToAddList,
id-GUGroupIDToDeleteList,
id-GUMMEI-ID,
id-New-eNB-UE-X2AP-ID,
id-Old-eNB-UE-X2AP-ID,
id-Registration-Request,
id-ReportingPeriodicity,
id-ServedCells,
id-ServedCellsToActivate,
id-ServedCellsToAdd,
id-ServedCellsToModify,
id-ServedCellsToDelete,
id-SRVCCOperationPossible,
id-TargetCell-ID,
id-TargeteNBtoSource-eNBTransparentContainer,
id-TimeToWait,
id-TraceActivation,
id-UE-ContextInformation,
id-UE-HistoryInformation,
id-UE-X2AP-ID,
id-Measurement-ID,
id-ReportCharacteristics,
id-ENB1-Measurement-ID,
id-ENB2-Measurement-ID,
id-ENB1-Cell-ID,
id-ENB2-Cell-ID,
id-ENB2-Proposed-Mobility-Parameters,
id-ENB1-Mobility-Parameters,
id-ENB2-Mobility-Parameters-Modification-Range,
id-FailureCellPCI,
id-Re-establishmentCellECGI,
id-FailureCellCRNTI,
id-ShortMAC-I,
id-SourceCellECGI,
id-FailureCellECGI,
id-HandoverReportType,
id-UE-RLF-Report-Container,
maxCellineNB,
maxnoofBearers,
maxnoofPDCP-SN
FROM X2AP-Constants;
-- **************************************************************
--
-- HANDOVER REQUEST
--
-- **************************************************************
HandoverRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverRequest-IEs}},
...
}
HandoverRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory } |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
{ ID id-TargetCell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory } |
{ ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE mandatory } |
{ ID id-UE-ContextInformation CRITICALITY reject TYPE UE-ContextInformation PRESENCE mandatory } |
{ ID id-UE-HistoryInformation CRITICALITY ignore TYPE UE-HistoryInformation PRESENCE mandatory } |
{ ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional } |
{ ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional },
...
}
UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetup-ItemIEs} }
E-RABs-ToBeSetup-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-ToBeSetup-Item CRITICALITY ignore TYPE E-RABs-ToBeSetup-Item PRESENCE mandatory },
...
}
E-RABs-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER REQUEST ACKNOWLEDGE
--
-- **************************************************************
HandoverRequestAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverRequestAcknowledge-IEs}},
...
}
HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-E-RABs-Admitted-List CRITICALITY ignore TYPE E-RABs-Admitted-List PRESENCE mandatory} |
{ ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE E-RAB-List PRESENCE optional} |
{ ID id-TargeteNBtoSource-eNBTransparentContainer CRITICALITY ignore TYPE TargeteNBtoSource-eNBTransparentContainer PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
E-RAB-List ::= SEQUENCE (SIZE(1.. maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RAB-ItemIEs} }
E-RABs-Admitted-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ItemIEs} }
E-RABs-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-Admitted-Item CRITICALITY ignore TYPE E-RABs-Admitted-Item PRESENCE mandatory }
}
E-RABs-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER PREPARATION FAILURE
--
-- **************************************************************
HandoverPreparationFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverPreparationFailure-IEs}},
...
}
HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Handover Report
--
-- **************************************************************
HandoverReport ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverReport-IEs}},
...
}
HandoverReport-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-HandoverReportType CRITICALITY ignore TYPE HandoverReportType PRESENCE mandatory}|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-SourceCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory}|
{ ID id-FailureCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory} |
{ ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE ECGI PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to “HO to Wrong Cell” -- ,
...
}
-- **************************************************************
--
-- SN Status Transfer
--
-- **************************************************************
SNStatusTransfer ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{SNStatusTransfer-IEs}},
...
}
SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-E-RABs-SubjectToStatusTransfer-List CRITICALITY ignore TYPE E-RABs-SubjectToStatusTransfer-List PRESENCE mandatory} ,
...
}
E-RABs-SubjectToStatusTransfer-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { { E-RABs-SubjectToStatusTransfer-ItemIEs} }
E-RABs-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE E-RABs-SubjectToStatusTransfer-Item PRESENCE mandatory }
}
E-RABs-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- UE Context Release
--
-- **************************************************************
UEContextRelease ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{UEContextRelease-IEs}},
...
}
UEContextRelease-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- HANDOVER CANCEL
--
-- **************************************************************
HandoverCancel ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{HandoverCancel-IEs}},
...
}
HandoverCancel-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}},
...
}
ErrorIndication-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE UE-X2AP-ID PRESENCE optional} |
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional} ,
...
}
-- **************************************************************
--
-- Reset Request
--
-- **************************************************************
ResetRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResetRequest-IEs}},
...
}
ResetRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory },
...
}
-- **************************************************************
--
-- Reset Response
--
-- **************************************************************
ResetResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResetResponse-IEs}},
...
}
ResetResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- X2 SETUP REQUEST
--
-- **************************************************************
X2SetupRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupRequest-IEs}},
...
}
X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory} |
{ ID id-GUGroupIDList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional},
...
}
-- **************************************************************
--
-- X2 SETUP RESPONSE
--
-- **************************************************************
X2SetupResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupResponse-IEs}},
...
}
X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory} |
{ ID id-GUGroupIDList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- X2 SETUP FAILURE
--
-- **************************************************************
X2SetupFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupFailure-IEs}},
...
}
X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- LOAD INFORMATION
--
-- **************************************************************
LoadInformation ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{LoadInformation-IEs}},
...
}
LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation CRITICALITY ignore TYPE CellInformation-List PRESENCE mandatory} ,
...
}
CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} }
CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation-Item CRITICALITY ignore TYPE CellInformation-Item PRESENCE mandatory }
}
CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE
--
-- **************************************************************
ENBConfigurationUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ENBConfigurationUpdate-IEs}},
...
}
ENBConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ServedCellsToAdd CRITICALITY reject TYPE ServedCells PRESENCE optional} |
{ ID id-ServedCellsToModify CRITICALITY reject TYPE ServedCellsToModify PRESENCE optional} |
{ ID id-ServedCellsToDelete CRITICALITY reject TYPE Old-ECGIs PRESENCE optional} |
{ ID id-GUGroupIDToAddList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional} |
{ ID id-GUGroupIDToDeleteList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional},
...
}
ServedCellsToModify::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToModify-Item
ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-DeactivationIndication CRITICALITY ignore EXTENSION DeactivationIndication PRESENCE optional },
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE ACKNOWLEDGE
--
-- **************************************************************
ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ENBConfigurationUpdateAcknowledge-IEs}},
...
}
ENBConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE FAIURE
--
-- **************************************************************
ENBConfigurationUpdateFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ENBConfigurationUpdateFailure-IEs}},
...
}
ENBConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
{ ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Resource Status Request
--
-- **************************************************************
ResourceStatusRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResourceStatusRequest-IEs}},
...
}
ResourceStatusRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY ignore TYPE Measurement-ID PRESENCE conditional}|-- The IE shall be present if the Registration Request IE is set to “Stop”--
{ ID id-Registration-Request CRITICALITY reject TYPE Registration-Request PRESENCE mandatory} |
{ ID id-ReportCharacteristics CRITICALITY reject TYPE ReportCharacteristics PRESENCE optional} |
{ ID id-CellToReport CRITICALITY ignore TYPE CellToReport-List PRESENCE mandatory} |
{ ID id-ReportingPeriodicity CRITICALITY ignore TYPE ReportingPeriodicity PRESENCE optional} ,
...
}
CellToReport-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellToReport-ItemIEs} }
CellToReport-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellToReport-Item CRITICALITY ignore TYPE CellToReport-Item PRESENCE mandatory }
}
CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Resource Status Response
--
-- **************************************************************
ResourceStatusResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResourceStatusResponse-IEs}},
...
}
ResourceStatusResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Resource Status Failure
--
-- **************************************************************
ResourceStatusFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResourceStatusFailure-IEs}},
...
}
ResourceStatusFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Resource Status Update
--
-- **************************************************************
ResourceStatusUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{ResourceStatusUpdate-IEs}},
...
}
ResourceStatusUpdate-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE Measurement-ID PRESENCE mandatory}|
{ ID id-CellMeasurementResult CRITICALITY ignore TYPE CellMeasurementResult-List PRESENCE mandatory},
...
}
CellMeasurementResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellMeasurementResult-ItemIEs} }
CellMeasurementResult-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellMeasurementResult-Item CRITICALITY ignore TYPE CellMeasurementResult-Item PRESENCE mandatory }
}
CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{
ID id-CompositeAvailableCapacityGroup CRITICALITY ignore EXTENSION CompositeAvailableCapacityGroup PRESENCE optional },
...
}
-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************
PrivateMessage ::= SEQUENCE {
privateIEs PrivateIE-Container {{PrivateMessage-IEs}},
...
}
PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
...
}
-- **************************************************************
--
-- MOBILITY CHANGE REQUEST
--
-- **************************************************************
MobilityChangeRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{MobilityChangeRequest-IEs}},
...
}
MobilityChangeRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory }|
{ ID id-ENB1-Mobility-Parameters CRITICALITY ignore TYPE MobilityParametersInformation PRESENCE optional }|
{ ID id-ENB2-Proposed-Mobility-Parameters CRITICALITY reject TYPE MobilityParametersInformation PRESENCE mandatory }|
{ ID id-Cause CRITICALITY reject TYPE Cause PRESENCE mandatory },
...
}
-- **************************************************************
--
-- MOBILITY CHANGE ACKNOWLEDGE
--
-- **************************************************************
MobilityChangeAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{MobilityChangeAcknowledge-IEs}},
...
}
MobilityChangeAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY reject TYPE ECGI PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- MOBILITY CHANGE FAILURE
--
-- **************************************************************
MobilityChangeFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{MobilityChangeFailure-IEs}},
...
}
MobilityChangeFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY ignore TYPE ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY ignore TYPE ECGI PRESENCE mandatory }|
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
{ ID id-ENB2-Mobility-Parameters-Modification-Range CRITICALITY ignore TYPE MobilityParametersModificationRange PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Radio Link Failure Indication
--
-- **************************************************************
RLFIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{RLFIndication-IEs}},
...
}
RLFIndication-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-FailureCellPCI CRITICALITY ignore TYPE PCI PRESENCE mandatory}|
{ ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE ECGI PRESENCE mandatory}|
{ ID id-FailureCellCRNTI CRITICALITY ignore TYPE CRNTI PRESENCE mandatory}|
{ ID id-ShortMAC-I CRITICALITY ignore TYPE ShortMAC-I PRESENCE optional}|
{ ID id-UE-RLF-Report-Container CRITICALITY ignore TYPE UE-RLF-Report-Container PRESENCE optional},
...
}
-- **************************************************************
--
-- Cell Activation Request
--
-- **************************************************************
CellActivationRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{CellActivationRequest-IEs}},
...
}
CellActivationRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ServedCellsToActivate CRITICALITY reject TYPE ServedCellsToActivate PRESENCE mandatory },
...
}
ServedCellsToActivate::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToActivate-Item
ServedCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Cell Activation Response
--
-- **************************************************************
CellActivationResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{CellActivationResponse-IEs}},
...
}
CellActivationResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ActivatedCellList CRITICALITY ignore TYPE ActivatedCellList PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
ActivatedCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
--**************************************************************
--
-- CELL ACTIVATION FAILURE
--
-- **************************************************************
CellActivationFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{CellActivationFailure-IEs}},
...
}
CellActivationFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional },
...
}
AS-SecurityInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
AllocationAndRetentionPriority-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CellType-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CompositeAvailableCapacityGroup-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CompositeAvailableCapacity-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
COUNTvalue-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
CriticalityDiagnostics-IE-List-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
FDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
TDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
ECGI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
E-RAB-Level-QoS-Parameters-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
E-RAB-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
ForbiddenTAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
ForbiddenLAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GBR-QosInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GlobalENB-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GTPtunnelEndpoint-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GU-Group-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
GUMMEI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
HandoverRestrictionList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
HWLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
LastVisitedEUTRANCellInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
LocationReportingInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::={
...
}
MBSFN-Subframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
Neighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
PRACH-Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
RelativeNarrowbandTxPower-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
RadioResourceStatus-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
S1TNLLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
ServedCell-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
SpecialSubframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
TraceActivation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
UEAggregate-MaximumBitrate-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
UESecurityCapabilities-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
UL-HighInterferenceIndicationInfo-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
E-RAB-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RAB-Item CRITICALITY ignore TYPE E-RAB-Item PRESENCE mandatory },
...
}
ServedCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-Number-of-Antennaports CRITICALITY ignore EXTENSION Number-of-Antennaports PRESENCE optional }|
{ ID id-PRACH-Configuration CRITICALITY ignore EXTENSION PRACH-Configuration PRESENCE optional }|
{ ID id-MBSFN-Subframe-Info CRITICALITY ignore EXTENSION MBSFN-Subframe-Infolist PRESENCE optional },
...
}
END
@@ -1,240 +0,0 @@
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM X2AP-CommonDataTypes
CellActivationRequest,
CellActivationResponse,
CellActivationFailure,
ENBConfigurationUpdate,
ENBConfigurationUpdateAcknowledge,
ENBConfigurationUpdateFailure,
ErrorIndication,
HandoverCancel,
HandoverReport,
HandoverPreparationFailure,
HandoverRequest,
HandoverRequestAcknowledge,
LoadInformation,
PrivateMessage,
ResetRequest,
ResetResponse,
ResourceStatusFailure,
ResourceStatusRequest,
ResourceStatusResponse,
ResourceStatusUpdate,
RLFIndication,
SNStatusTransfer,
UEContextRelease,
X2SetupFailure, X2SetupRequest,
X2SetupResponse,
MobilityChangeRequest,
MobilityChangeAcknowledge,
MobilityChangeFailure
FROM X2AP-PDU-Contents
id-cellActivation,
id-eNBConfigurationUpdate,
id-errorIndication,
id-handoverCancel,
id-handoverReport,
id-handoverPreparation,
id-loadIndication,
id-privateMessage,
id-reset,
id-resourceStatusReporting,
id-resourceStatusReportingInitiation,
id-rLFIndication,
id-snStatusTransfer,
id-uEContextRelease,
id-x2Setup,
id-mobilitySettingsChange
FROM X2AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
X2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation |
reset |
x2Setup |
resourceStatusReportingInitiation |
eNBConfigurationUpdate |
mobilitySettingsChange |
cellActivation ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
snStatusTransfer |
uEContextRelease |
handoverCancel |
errorIndication |
resourceStatusReporting |
loadIndication |
privateMessage |
rLFIndication | handoverReport,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-handoverPreparation
CRITICALITY reject
}
snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SNStatusTransfer
PROCEDURE CODE id-snStatusTransfer
CRITICALITY ignore
}
uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextRelease
PROCEDURE CODE id-uEContextRelease
CRITICALITY ignore
}
handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel
PROCEDURE CODE id-handoverCancel
CRITICALITY ignore
}
handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverReport
PROCEDURE CODE id-handoverReport
CRITICALITY ignore
}
errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-errorIndication
CRITICALITY ignore
}
reset X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetRequest
SUCCESSFUL OUTCOME ResetResponse
PROCEDURE CODE id-reset
CRITICALITY reject
}
x2Setup X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE X2SetupRequest
SUCCESSFUL OUTCOME X2SetupResponse
UNSUCCESSFUL OUTCOME X2SetupFailure
PROCEDURE CODE id-x2Setup
CRITICALITY reject
}
loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LoadInformation
PROCEDURE CODE id-loadIndication
CRITICALITY ignore
}
eNBConfigurationUpdate X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBConfigurationUpdate
SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
PROCEDURE CODE id-eNBConfigurationUpdate
CRITICALITY reject
}
resourceStatusReportingInitiation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusRequest
SUCCESSFUL OUTCOME ResourceStatusResponse
UNSUCCESSFUL OUTCOME ResourceStatusFailure
PROCEDURE CODE id-resourceStatusReportingInitiation
CRITICALITY reject
}
resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusUpdate
PROCEDURE CODE id-resourceStatusReporting
CRITICALITY ignore
}
rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RLFIndication
PROCEDURE CODE id-rLFIndication
CRITICALITY ignore
}
privateMessage X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
mobilitySettingsChange X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MobilityChangeRequest
SUCCESSFUL OUTCOME MobilityChangeAcknowledge
UNSUCCESSFUL OUTCOME MobilityChangeFailure
PROCEDURE CODE id-mobilitySettingsChange
CRITICALITY reject
}
cellActivation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CellActivationRequest
SUCCESSFUL OUTCOME CellActivationResponse
UNSUCCESSFUL OUTCOME CellActivationFailure
PROCEDURE CODE id-cellActivation
CRITICALITY reject
}
END
@@ -1,241 +0,0 @@
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
Criticality,
ProcedureCode
FROM X2AP-CommonDataTypes
CellActivationRequest,
CellActivationResponse,
CellActivationFailure,
ENBConfigurationUpdate,
ENBConfigurationUpdateAcknowledge,
ENBConfigurationUpdateFailure,
ErrorIndication,
HandoverCancel,
HandoverReport,
HandoverPreparationFailure,
HandoverRequest,
HandoverRequestAcknowledge,
LoadInformation,
PrivateMessage,
ResetRequest,
ResetResponse,
ResourceStatusFailure,
ResourceStatusRequest,
ResourceStatusResponse,
ResourceStatusUpdate,
RLFIndication,
SNStatusTransfer,
UEContextRelease,
X2SetupFailure, X2SetupRequest,
X2SetupResponse,
MobilityChangeRequest,
MobilityChangeAcknowledge,
MobilityChangeFailure
FROM X2AP-PDU-Contents
id-cellActivation,
id-eNBConfigurationUpdate,
id-errorIndication,
id-handoverCancel,
id-handoverReport,
id-handoverPreparation,
id-loadIndication,
id-privateMessage,
id-reset,
id-resourceStatusReporting,
id-resourceStatusReportingInitiation,
id-rLFIndication,
id-snStatusTransfer,
id-uEContextRelease,
id-x2Setup,
id-mobilitySettingsChange
FROM X2AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
X2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation |
reset |
x2Setup |
resourceStatusReportingInitiation |
eNBConfigurationUpdate |
mobilitySettingsChange |
cellActivation ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
snStatusTransfer |
uEContextRelease |
handoverCancel |
errorIndication |
resourceStatusReporting |
loadIndication |
privateMessage |
rLFIndication | handoverReport,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-handoverPreparation
CRITICALITY reject
}
snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SNStatusTransfer
PROCEDURE CODE id-snStatusTransfer
CRITICALITY ignore
}
uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextRelease
PROCEDURE CODE id-uEContextRelease
CRITICALITY ignore
}
handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel
PROCEDURE CODE id-handoverCancel
CRITICALITY ignore
}
handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverReport
PROCEDURE CODE id-handoverReport
CRITICALITY ignore
}
errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-errorIndication
CRITICALITY ignore
}
reset X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetRequest
SUCCESSFUL OUTCOME ResetResponse
PROCEDURE CODE id-reset
CRITICALITY reject
}
x2Setup X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE X2SetupRequest
SUCCESSFUL OUTCOME X2SetupResponse
UNSUCCESSFUL OUTCOME X2SetupFailure
PROCEDURE CODE id-x2Setup
CRITICALITY reject
}
loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LoadInformation
PROCEDURE CODE id-loadIndication
CRITICALITY ignore
}
eNBConfigurationUpdate X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBConfigurationUpdate
SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
PROCEDURE CODE id-eNBConfigurationUpdate
CRITICALITY reject
}
resourceStatusReportingInitiation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusRequest
SUCCESSFUL OUTCOME ResourceStatusResponse
UNSUCCESSFUL OUTCOME ResourceStatusFailure
PROCEDURE CODE id-resourceStatusReportingInitiation
CRITICALITY reject
}
resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusUpdate
PROCEDURE CODE id-resourceStatusReporting
CRITICALITY ignore
}
rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RLFIndication
PROCEDURE CODE id-rLFIndication
CRITICALITY ignore
}
privateMessage X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
mobilitySettingsChange X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MobilityChangeRequest
SUCCESSFUL OUTCOME MobilityChangeAcknowledge
UNSUCCESSFUL OUTCOME MobilityChangeFailure
PROCEDURE CODE id-mobilitySettingsChange
CRITICALITY reject
}
cellActivation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CellActivationRequest
SUCCESSFUL OUTCOME CellActivationResponse
UNSUCCESSFUL OUTCOME CellActivationFailure
PROCEDURE CODE id-cellActivation
CRITICALITY reject
}
END
@@ -1,199 +0,0 @@
-- **************************************************************
--
-- PDU definitions for X2AP.
--
-- **************************************************************
X2AP-PDU {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
maxProtocolIEs,
Criticality,
ProcedureCode,
ProtocolIE-ID
FROM X2AP-CommonDataTypes;
IE ::= SEQUENCE {
id ProtocolIE-ID,
criticality Criticality,
value ANY
}
X2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode ProcedureCode,
criticality Criticality,
value ANY
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode ProcedureCode,
criticality Criticality,
value ANY
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode ProcedureCode,
criticality Criticality,
value ANY
}
HandoverRequest ::= SEQUENCE {
handoverRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HandoverRequestAcknowledge ::= SEQUENCE {
handoverRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HandoverPreparationFailure ::= SEQUENCE {
handoverPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
SNStatusTransfer ::= SEQUENCE {
snStatusTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
UEContextRelease ::= SEQUENCE {
ueContextRelease-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HandoverCancel ::= SEQUENCE {
handoverCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
HandoverReport ::= SEQUENCE {
handoverReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ErrorIndication ::= SEQUENCE {
errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResetRequest ::= SEQUENCE {
resetRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResetResponse ::= SEQUENCE {
resetResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
X2SetupRequest ::= SEQUENCE {
x2SetupRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
X2SetupResponse ::= SEQUENCE {
x2SetupResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
X2SetupFailure ::= SEQUENCE {
x2SetupFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
LoadInformation ::= SEQUENCE {
loadInformation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ENBConfigurationUpdate ::= SEQUENCE {
eNBConfigurationUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
eNBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ENBConfigurationUpdateFailure ::= SEQUENCE {
eNBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResourceStatusRequest ::= SEQUENCE {
resourceStatusRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResourceStatusResponse ::= SEQUENCE {
resourceStatusResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResourceStatusFailure ::= SEQUENCE {
resourceStatusFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
ResourceStatusUpdate ::= SEQUENCE {
resourceStatusUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
RLFIndication ::= SEQUENCE {
rlfIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
PrivateMessage ::= SEQUENCE {
privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MobilityChangeRequest ::= SEQUENCE {
mobilityChangeRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MobilityChangeAcknowledge ::= SEQUENCE {
mobilityChangeAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
MobilityChangeFailure ::= SEQUENCE {
mobilityChangeFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CellActivationRequest ::= SEQUENCE {
cellActivationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CellActivationResponse ::= SEQUENCE {
cellActivationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
CellActivationFailure ::= SEQUENCE {
cellActivationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
...
}
END
File diff suppressed because it is too large Load Diff
@@ -1,462 +0,0 @@
X2AP_ASN_MODULE_SOURCES= \
X2ap-Criticality.c \
X2ap-Presence.c \
X2ap-PrivateIE-ID.c \
X2ap-ProcedureCode.c \
X2ap-ProtocolIE-ID.c \
X2ap-TriggeringMessage.c \
X2ap-IE-Extensions.c \
X2ap-AS-SecurityInformation.c \
X2ap-AllocationAndRetentionPriority.c \
X2ap-ActivatedCellList.c \
X2ap-ActivatedCellList-Item.c \
X2ap-BitRate.c \
X2ap-BroadcastPLMNs-Item.c \
X2ap-CapacityValue.c \
X2ap-CellCapacityClassValue.c \
X2ap-CellToReport-List.c \
X2ap-CellToReport-Item.c \
X2ap-CellMeasurementResult-List.c \
X2ap-CellMeasurementResult-Item.c \
X2ap-ReportingPeriodicity.c \
X2ap-Cause.c \
X2ap-CauseMisc.c \
X2ap-CauseProtocol.c \
X2ap-CauseRadioNetwork.c \
X2ap-CauseTransport.c \
X2ap-Cell-Size.c \
X2ap-CellInformation-List.c \
X2ap-CellInformation-Item.c \
X2ap-CellType.c \
X2ap-CompositeAvailableCapacityGroup.c \
X2ap-CompositeAvailableCapacity.c \
X2ap-COUNTvalue.c \
X2ap-CriticalityDiagnostics.c \
X2ap-CriticalityDiagnostics-IE-List.c \
X2ap-CriticalityDiagnostics-IE-Elm.c \
X2ap-CRNTI.c \
X2ap-CyclicPrefixDL.c \
X2ap-CyclicPrefixUL.c \
X2ap-DeactivationIndication.c \
X2ap-DL-Forwarding.c \
X2ap-E-RABs-Admitted-List.c \
X2ap-E-RABs-Admitted-Item.c \
X2ap-E-RABs-ToBeSetup-List.c \
X2ap-E-RABs-ToBeSetup-Item.c \
X2ap-E-RABs-SubjectToStatusTransfer-List.c \
X2ap-E-RABs-SubjectToStatusTransfer-Item.c \
X2ap-EARFCN.c \
X2ap-FDD-Info.c \
X2ap-TDD-Info.c \
X2ap-EUTRA-Mode-Info.c \
X2ap-ECGI.c \
X2ap-ENB-ID.c \
X2ap-EncryptionAlgorithms.c \
X2ap-EPLMNs.c \
X2ap-E-RAB-ID.c \
X2ap-E-RAB-Level-QoS-Parameters.c \
X2ap-E-RAB-List.c \
X2ap-E-RAB-Item.c \
X2ap-EUTRANCellIdentifier.c \
X2ap-EUTRANTraceID.c \
X2ap-EventType.c \
X2ap-ForbiddenInterRATs.c \
X2ap-ForbiddenTAs.c \
X2ap-ForbiddenTAs-Item.c \
X2ap-ForbiddenTACs.c \
X2ap-ForbiddenLAs.c \
X2ap-ForbiddenLAs-Item.c \
X2ap-ForbiddenLACs.c \
X2ap-Fourframes.c \
X2ap-GBR-QosInformation.c \
X2ap-GlobalENB-ID.c \
X2ap-GTPtunnelEndpoint.c \
X2ap-GTP-TEI.c \
X2ap-GUGroupIDList.c \
X2ap-GU-Group-ID.c \
X2ap-GUMMEI.c \
X2ap-HandoverReportType.c \
X2ap-HandoverRestrictionList.c \
X2ap-HFN.c \
X2ap-HWLoadIndicator.c \
X2ap-IntegrityProtectionAlgorithms.c \
X2ap-InterfacesToTrace.c \
X2ap-Key-eNodeB-Star.c \
X2ap-LAC.c \
X2ap-LastVisitedCell-Item.c \
X2ap-LastVisitedEUTRANCellInformation.c \
X2ap-LastVisitedUTRANCellInformation.c \
X2ap-LastVisitedGERANCellInformation.c \
X2ap-LoadIndicator.c \
X2ap-LocationReportingInformation.c \
X2ap-MME-Group-ID.c \
X2ap-MME-Code.c \
X2ap-Measurement-ID.c \
X2ap-MBSFN-Subframe-Infolist.c \
X2ap-MBSFN-Subframe-Info.c \
X2ap-MobilityParametersModificationRange.c \
X2ap-MobilityParametersInformation.c \
X2ap-Neighbour-Information.c \
X2ap-Neighbour-Information-Elm.c \
X2ap-NextHopChainingCount.c \
X2ap-Number-of-Antennaports.c \
X2ap-Oneframe.c \
X2ap-PDCP-SN.c \
X2ap-PCI.c \
X2ap-PLMN-Identity.c \
X2ap-PRACH-Configuration.c \
X2ap-Pre-emptionCapability.c \
X2ap-Pre-emptionVulnerability.c \
X2ap-PriorityLevel.c \
X2ap-QCI.c \
X2ap-ReceiveStatusofULPDCPSDUs.c \
X2ap-Registration-Request.c \
X2ap-RelativeNarrowbandTxPower.c \
X2ap-ReportArea.c \
X2ap-ReportCharacteristics.c \
X2ap-RNTP-Threshold.c \
X2ap-RRC-Context.c \
X2ap-RadioResourceStatus.c \
X2ap-DL-GBR-PRB-usage.c \
X2ap-UL-GBR-PRB-usage.c \
X2ap-DL-non-GBR-PRB-usage.c \
X2ap-UL-non-GBR-PRB-usage.c \
X2ap-DL-Total-PRB-usage.c \
X2ap-UL-Total-PRB-usage.c \
X2ap-RadioframeAllocationPeriod.c \
X2ap-RadioframeAllocationOffset.c \
X2ap-S1TNLLoadIndicator.c \
X2ap-ServedCellsToActivate.c \
X2ap-ServedCellsToActivate-Item.c \
X2ap-ServedCellsToModify.c \
X2ap-ServedCellsToModify-Item.c \
X2ap-Old-ECGIs.c \
X2ap-ServedCells.c \
X2ap-ServedCellItem.c \
X2ap-ServedCell-Information.c \
X2ap-ShortMAC-I.c \
X2ap-SRVCCOperationPossible.c \
X2ap-SubframeAssignment.c \
X2ap-SpecialSubframe-Info.c \
X2ap-SpecialSubframePatterns.c \
X2ap-SubscriberProfileIDforRFP.c \
X2ap-SubframeAllocation.c \
X2ap-TAC.c \
X2ap-TargeteNBtoSource-eNBTransparentContainer.c \
X2ap-TimeToWait.c \
X2ap-Time-UE-StayedInCell.c \
X2ap-TraceActivation.c \
X2ap-TraceCollectionEntityIPAddress.c \
X2ap-TraceDepth.c \
X2ap-Transmission-Bandwidth.c \
X2ap-TransportLayerAddress.c \
X2ap-TypeOfError.c \
X2ap-UE-HistoryInformation.c \
X2ap-UE-S1AP-ID.c \
X2ap-UE-X2AP-ID.c \
X2ap-UEAggregateMaximumBitRate.c \
X2ap-UESecurityCapabilities.c \
X2ap-UE-ContextInformation.c \
X2ap-UL-InterferenceOverloadIndication.c \
X2ap-UL-InterferenceOverloadIndication-Item.c \
X2ap-UL-HighInterferenceIndicationInfo.c \
X2ap-UL-HighInterferenceIndicationInfo-Item.c \
X2ap-UL-HighInterferenceIndication.c \
X2ap-UE-RLF-Report-Container.c \
X2ap-IE.c \
X2AP-PDU.c \
X2ap-InitiatingMessage.c \
X2ap-SuccessfulOutcome.c \
X2ap-UnsuccessfulOutcome.c \
X2ap-HandoverRequest.c \
X2ap-HandoverRequestAcknowledge.c \
X2ap-HandoverPreparationFailure.c \
X2ap-SNStatusTransfer.c \
X2ap-UEContextRelease.c \
X2ap-HandoverCancel.c \
X2ap-HandoverReport.c \
X2ap-ErrorIndication.c \
X2ap-ResetRequest.c \
X2ap-ResetResponse.c \
X2ap-X2SetupRequest.c \
X2ap-X2SetupResponse.c \
X2ap-X2SetupFailure.c \
X2ap-LoadInformation.c \
X2ap-ENBConfigurationUpdate.c \
X2ap-ENBConfigurationUpdateAcknowledge.c \
X2ap-ENBConfigurationUpdateFailure.c \
X2ap-ResourceStatusRequest.c \
X2ap-ResourceStatusResponse.c \
X2ap-ResourceStatusFailure.c \
X2ap-ResourceStatusUpdate.c \
X2ap-RLFIndication.c \
X2ap-PrivateMessage.c \
X2ap-MobilityChangeRequest.c \
X2ap-MobilityChangeAcknowledge.c \
X2ap-MobilityChangeFailure.c \
X2ap-CellActivationRequest.c \
X2ap-CellActivationResponse.c \
X2ap-CellActivationFailure.c
X2AP_ASN_MODULE_HEADERS= \
X2ap-Criticality.h \
X2ap-Presence.h \
X2ap-PrivateIE-ID.h \
X2ap-ProcedureCode.h \
X2ap-ProtocolIE-ID.h \
X2ap-TriggeringMessage.h \
X2ap-IE-Extensions.h \
X2ap-AS-SecurityInformation.h \
X2ap-AllocationAndRetentionPriority.h \
X2ap-ActivatedCellList.h \
X2ap-ActivatedCellList-Item.h \
X2ap-BitRate.h \
X2ap-BroadcastPLMNs-Item.h \
X2ap-CapacityValue.h \
X2ap-CellCapacityClassValue.h \
X2ap-CellToReport-List.h \
X2ap-CellToReport-Item.h \
X2ap-CellMeasurementResult-List.h \
X2ap-CellMeasurementResult-Item.h \
X2ap-ReportingPeriodicity.h \
X2ap-Cause.h \
X2ap-CauseMisc.h \
X2ap-CauseProtocol.h \
X2ap-CauseRadioNetwork.h \
X2ap-CauseTransport.h \
X2ap-Cell-Size.h \
X2ap-CellInformation-List.h \
X2ap-CellInformation-Item.h \
X2ap-CellType.h \
X2ap-CompositeAvailableCapacityGroup.h \
X2ap-CompositeAvailableCapacity.h \
X2ap-COUNTvalue.h \
X2ap-CriticalityDiagnostics.h \
X2ap-CriticalityDiagnostics-IE-List.h \
X2ap-CriticalityDiagnostics-IE-Elm.h \
X2ap-CRNTI.h \
X2ap-CyclicPrefixDL.h \
X2ap-CyclicPrefixUL.h \
X2ap-DeactivationIndication.h \
X2ap-DL-Forwarding.h \
X2ap-E-RABs-Admitted-List.h \
X2ap-E-RABs-Admitted-Item.h \
X2ap-E-RABs-ToBeSetup-List.h \
X2ap-E-RABs-ToBeSetup-Item.h \
X2ap-E-RABs-SubjectToStatusTransfer-List.h \
X2ap-E-RABs-SubjectToStatusTransfer-Item.h \
X2ap-EARFCN.h \
X2ap-FDD-Info.h \
X2ap-TDD-Info.h \
X2ap-EUTRA-Mode-Info.h \
X2ap-ECGI.h \
X2ap-ENB-ID.h \
X2ap-EncryptionAlgorithms.h \
X2ap-EPLMNs.h \
X2ap-E-RAB-ID.h \
X2ap-E-RAB-Level-QoS-Parameters.h \
X2ap-E-RAB-List.h \
X2ap-E-RAB-Item.h \
X2ap-EUTRANCellIdentifier.h \
X2ap-EUTRANTraceID.h \
X2ap-EventType.h \
X2ap-ForbiddenInterRATs.h \
X2ap-ForbiddenTAs.h \
X2ap-ForbiddenTAs-Item.h \
X2ap-ForbiddenTACs.h \
X2ap-ForbiddenLAs.h \
X2ap-ForbiddenLAs-Item.h \
X2ap-ForbiddenLACs.h \
X2ap-Fourframes.h \
X2ap-GBR-QosInformation.h \
X2ap-GlobalENB-ID.h \
X2ap-GTPtunnelEndpoint.h \
X2ap-GTP-TEI.h \
X2ap-GUGroupIDList.h \
X2ap-GU-Group-ID.h \
X2ap-GUMMEI.h \
X2ap-HandoverReportType.h \
X2ap-HandoverRestrictionList.h \
X2ap-HFN.h \
X2ap-HWLoadIndicator.h \
X2ap-IntegrityProtectionAlgorithms.h \
X2ap-InterfacesToTrace.h \
X2ap-Key-eNodeB-Star.h \
X2ap-LAC.h \
X2ap-LastVisitedCell-Item.h \
X2ap-LastVisitedEUTRANCellInformation.h \
X2ap-LastVisitedUTRANCellInformation.h \
X2ap-LastVisitedGERANCellInformation.h \
X2ap-LoadIndicator.h \
X2ap-LocationReportingInformation.h \
X2ap-MME-Group-ID.h \
X2ap-MME-Code.h \
X2ap-Measurement-ID.h \
X2ap-MBSFN-Subframe-Infolist.h \
X2ap-MBSFN-Subframe-Info.h \
X2ap-MobilityParametersModificationRange.h \
X2ap-MobilityParametersInformation.h \
X2ap-Neighbour-Information.h \
X2ap-Neighbour-Information-Elm.h \
X2ap-NextHopChainingCount.h \
X2ap-Number-of-Antennaports.h \
X2ap-Oneframe.h \
X2ap-PDCP-SN.h \
X2ap-PCI.h \
X2ap-PLMN-Identity.h \
X2ap-PRACH-Configuration.h \
X2ap-Pre-emptionCapability.h \
X2ap-Pre-emptionVulnerability.h \
X2ap-PriorityLevel.h \
X2ap-QCI.h \
X2ap-ReceiveStatusofULPDCPSDUs.h \
X2ap-Registration-Request.h \
X2ap-RelativeNarrowbandTxPower.h \
X2ap-ReportArea.h \
X2ap-ReportCharacteristics.h \
X2ap-RNTP-Threshold.h \
X2ap-RRC-Context.h \
X2ap-RadioResourceStatus.h \
X2ap-DL-GBR-PRB-usage.h \
X2ap-UL-GBR-PRB-usage.h \
X2ap-DL-non-GBR-PRB-usage.h \
X2ap-UL-non-GBR-PRB-usage.h \
X2ap-DL-Total-PRB-usage.h \
vUL-Total-PRB-usage.h \
X2ap-RadioframeAllocationPeriod.h \
X2ap-RadioframeAllocationOffset.h \
X2ap-S1TNLLoadIndicator.h \
X2ap-ServedCellsToActivate.h \
X2ap-ServedCellsToActivate-Item.h \
X2ap-ServedCellsToModify.h \
X2ap-ServedCellsToModify-Item.h \
X2ap-Old-ECGIs.h \
X2ap-ServedCells.h \
X2ap-ServedCellItem.h \
X2ap-ServedCell-Information.h \
X2ap-ShortMAC-I.h \
X2ap-SRVCCOperationPossible.h \
X2ap-SubframeAssignment.h \
X2ap-SpecialSubframe-Info.h \
X2ap-SpecialSubframePatterns.h \
X2ap-SubscriberProfileIDforRFP.h \
X2ap-SubframeAllocation.h \
X2ap-TAC.h \
X2ap-TargeteNBtoSource-eNBTransparentContainer.h \
X2ap-TimeToWait.h \
X2ap-Time-UE-StayedInCell.h \
X2ap-TraceActivation.h \
X2ap-TraceCollectionEntityIPAddress.h \
X2ap-TraceDepth.h \
X2ap-Transmission-Bandwidth.h \
X2ap-TransportLayerAddress.h \
X2ap-TypeOfError.h \
X2ap-UE-HistoryInformation.h \
X2ap-UE-S1AP-ID.h \
X2ap-UE-X2AP-ID.h \
X2ap-UEAggregateMaximumBitRate.h \
X2ap-UESecurityCapabilities.h \
X2ap-UE-ContextInformation.h \
X2ap-UL-InterferenceOverloadIndication.h \
X2ap-UL-InterferenceOverloadIndication-Item.h \
X2ap-UL-HighInterferenceIndicationInfo.h \
X2ap-UL-HighInterferenceIndicationInfo-Item.h \
X2ap-UL-HighInterferenceIndication.h \
X2ap-UE-RLF-Report-Container.h \
X2ap-IE.h \
X2ap-X2AP-PDU.h \
X2ap-InitiatingMessage.h \
X2ap-SuccessfulOutcome.h \
X2ap-UnsuccessfulOutcome.h \
X2ap-HandoverRequest.h \
X2ap-HandoverRequestAcknowledge.h \
X2ap-HandoverPreparationFailure.h \
X2ap-SNStatusTransfer.h \
X2ap-UEContextRelease.h \
X2ap-HandoverCancel.h \
X2ap-HandoverReport.h \
X2ap-ErrorIndication.h \
X2ap-ResetRequest.h \
X2ap-ResetResponse.h \
X2ap-X2SetupRequest.h \
X2ap-X2SetupResponse.h \
X2ap-X2SetupFailure.h \
X2ap-LoadInformation.h \
X2ap-ENBConfigurationUpdate.h \
X2ap-ENBConfigurationUpdateAcknowledge.h \
X2ap-ENBConfigurationUpdateFailure.h \
X2ap-ResourceStatusRequest.h \
X2ap-ResourceStatusResponse.h \
X2ap-ResourceStatusFailure.h \
X2ap-ResourceStatusUpdate.h \
X2ap-RLFIndication.h \
X2ap-PrivateMessage.h \
X2ap-MobilityChangeRequest.h \
X2ap-MobilityChangeAcknowledge.h \
X2ap-MobilityChangeFailure.h \
X2ap-CellActivationRequest.h \
X2ap-CellActivationResponse.h \
X2ap-CellActivationFailure.h
X2AP_ASN_MODULE_HEADERS+=ANY.h
X2AP_ASN_MODULE_SOURCES+=ANY.o
X2AP_ASN_MODULE_HEADERS+=BOOLEAN.h
X2AP_ASN_MODULE_SOURCES+=BOOLEAN.o
X2AP_ASN_MODULE_HEADERS+=INTEGER.h
X2AP_ASN_MODULE_HEADERS+=NativeEnumerated.h
X2AP_ASN_MODULE_SOURCES+=INTEGER.o
X2AP_ASN_MODULE_HEADERS+=NULL.h
X2AP_ASN_MODULE_SOURCES+=NULL.o
X2AP_ASN_MODULE_SOURCES+=NativeEnumerated.o
X2AP_ASN_MODULE_HEADERS+=NativeInteger.h
X2AP_ASN_MODULE_SOURCES+=NativeInteger.o
X2AP_ASN_MODULE_HEADERS+=OBJECT_IDENTIFIER.h
X2AP_ASN_MODULE_SOURCES+=OBJECT_IDENTIFIER.o
X2AP_ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
X2AP_ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.o
X2AP_ASN_MODULE_HEADERS+=asn_SET_OF.h
X2AP_ASN_MODULE_SOURCES+=asn_SET_OF.o
X2AP_ASN_MODULE_HEADERS+=constr_CHOICE.h
X2AP_ASN_MODULE_SOURCES+=constr_CHOICE.o
X2AP_ASN_MODULE_HEADERS+=constr_SEQUENCE.h
X2AP_ASN_MODULE_SOURCES+=constr_SEQUENCE.o
X2AP_ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
X2AP_ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.o
X2AP_ASN_MODULE_HEADERS+=constr_SET_OF.h
X2AP_ASN_MODULE_SOURCES+=constr_SET_OF.o
X2AP_ASN_MODULE_HEADERS+=asn_application.h
X2AP_ASN_MODULE_HEADERS+=asn_system.h
X2AP_ASN_MODULE_HEADERS+=asn_codecs.h
X2AP_ASN_MODULE_HEADERS+=asn_internal.h
X2AP_ASN_MODULE_HEADERS+=OCTET_STRING.h
X2AP_ASN_MODULE_SOURCES+=OCTET_STRING.o
X2AP_ASN_MODULE_HEADERS+=BIT_STRING.h
X2AP_ASN_MODULE_SOURCES+=BIT_STRING.o
X2AP_ASN_MODULE_SOURCES+=asn_codecs_prim.o
X2AP_ASN_MODULE_HEADERS+=asn_codecs_prim.h
X2AP_ASN_MODULE_HEADERS+=ber_tlv_length.h
X2AP_ASN_MODULE_SOURCES+=ber_tlv_length.o
X2AP_ASN_MODULE_HEADERS+=ber_tlv_tag.h
X2AP_ASN_MODULE_SOURCES+=ber_tlv_tag.o
X2AP_ASN_MODULE_HEADERS+=ber_decoder.h
X2AP_ASN_MODULE_SOURCES+=ber_decoder.o
X2AP_ASN_MODULE_HEADERS+=der_encoder.h
X2AP_ASN_MODULE_SOURCES+=der_encoder.o
X2AP_ASN_MODULE_HEADERS+=constr_TYPE.h
X2AP_ASN_MODULE_SOURCES+=constr_TYPE.o
X2AP_ASN_MODULE_HEADERS+=constraints.h
X2AP_ASN_MODULE_SOURCES+=constraints.o
X2AP_ASN_MODULE_HEADERS+=xer_support.h
X2AP_ASN_MODULE_SOURCES+=xer_support.o
X2AP_ASN_MODULE_HEADERS+=xer_decoder.h
X2AP_ASN_MODULE_SOURCES+=xer_decoder.o
X2AP_ASN_MODULE_HEADERS+=xer_encoder.h
X2AP_ASN_MODULE_SOURCES+=xer_encoder.o
X2AP_ASN_MODULE_HEADERS+=per_support.h
X2AP_ASN_MODULE_SOURCES+=per_support.o
X2AP_ASN_MODULE_HEADERS+=per_decoder.h
X2AP_ASN_MODULE_SOURCES+=per_decoder.o
X2AP_ASN_MODULE_HEADERS+=per_encoder.h
X2AP_ASN_MODULE_SOURCES+=per_encoder.o
X2AP_ASN_MODULE_HEADERS+=per_opentype.h
X2AP_ASN_MODULE_SOURCES+=per_opentype.o
@@ -1,142 +0,0 @@
X2AP-CommonDataTypes {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-CommonDataTypes (3) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- Extension constants
--
-- **************************************************************
x2ap-maxPrivateIEs INTEGER ::= 65535
x2ap-maxProtocolExtensions INTEGER ::= 65535
x2ap-maxProtocolIEs INTEGER ::= 65535
-- **************************************************************
--
-- Common Data Types
--
-- **************************************************************
X2ap-Criticality ::= ENUMERATED { reject, ignore, notify }
X2ap-Presence ::= ENUMERATED { optional, conditional, mandatory }
X2ap-PrivateIE-ID ::= CHOICE {
local INTEGER (0.. x2ap-maxPrivateIEs),
global OBJECT IDENTIFIER
}
--X2ap-ProcedureCode ::= INTEGER (0..255)
X2ap-ProcedureCode ::= INTEGER {
id-handoverPreparation (0),
id-handoverCancel (1),
id-loadIndication (2),
id-errorIndication (3),
id-snStatusTransfer (4),
id-uEContextRelease (5),
id-x2Setup (6),
id-reset (7),
id-eNBConfigurationUpdate (8),
id-resourceStatusReportingInitiation (9),
id-resourceStatusReporting (10),
id-privateMessage (11),
id-mobilitySettingsChange (12),
id-rLFIndication (13),
id-handoverReport (14),
id-cellActivation (15)
} (0..255)
--X2ap-ProtocolIE-ID ::= INTEGER (0..x2ap-maxProtocolIEs)
X2ap-ProtocolIE-ID ::= INTEGER {
id-E-RABs-Admitted-Item (0),
id-E-RABs-Admitted-List (1),
id-E-RAB-Item (2),
id-E-RABs-NotAdmitted-List (3),
id-E-RABs-ToBeSetup-Item (4),
id-Cause (5),
id-CellInformation (6),
id-CellInformation-Item (7),
id-New-eNB-UE-X2AP-ID (9),
id-Old-eNB-UE-X2AP-ID (10),
id-TargetCell-ID (11),
id-TargeteNBtoSource-eNBTransparentContainer (12),
id-TraceActivation (13),
id-UE-ContextInformation (14),
id-UE-HistoryInformation (15),
id-UE-X2AP-ID (16),
id-CriticalityDiagnostics (17),
id-E-RABs-SubjectToStatusTransfer-List (18),
id-E-RABs-SubjectToStatusTransfer-Item (19),
id-ServedCells (20),
id-GlobalENB-ID (21),
id-TimeToWait (22),
id-GUMMEI-ID (23),
id-GUGroupIDList (24),
id-ServedCellsToAdd (25),
id-ServedCellsToModify (26),
id-ServedCellsToDelete (27),
id-Registration-Request (28),
id-CellToReport (29),
id-ReportingPeriodicity (30),
id-CellToReport-Item (31),
id-CellMeasurementResult (32),
id-CellMeasurementResult-Item (33),
id-GUGroupIDToAddList (34),
id-GUGroupIDToDeleteList (35),
id-SRVCCOperationPossible (36),
id-Measurement-ID (37),
id-ReportCharacteristics (38),
id-ENB1-Measurement-ID (39),
id-ENB2-Measurement-ID (40),
id-Number-of-Antennaports (41),
id-CompositeAvailableCapacityGroup (42),
id-ENB1-Cell-ID (43),
id-ENB2-Cell-ID (44),
id-ENB2-Proposed-Mobility-Parameters (45),
id-ENB1-Mobility-Parameters (46),
id-ENB2-Mobility-Parameters-Modification-Range (47),
id-FailureCellPCI (48),
id-Re-establishmentCellECGI (49),
id-FailureCellCRNTI (50),
id-ShortMAC-I (51),
id-SourceCellECGI (52),
id-FailureCellECGI (53),
id-HandoverReportType (54),
id-PRACH-Configuration (55),
id-MBSFN-Subframe-Info (56),
id-ServedCellsToActivate (57),
id-ActivatedCellList (58),
id-DeactivationIndication (59),
id-UE-RLF-Report-Container (60),
id-ABSInformation (61),
id-InvokeIndication (62),
id-ABS-Status (63),
id-PartialSuccessIndicator (64),
id-MeasurementInitiationResult-List (65),
id-MeasurementInitiationResult-Item (66),
id-MeasurementFailureCause-Item (67),
id-CompleteFailureCauseInformation-List (68),
id-CompleteFailureCauseInformation-Item (69),
id-CSG-Id (70),
id-CSGMembershipStatus (71),
id-MDTConfiguration (72),
id-ManagementBasedMDTallowed (74),
id-RRCConnSetupIndicator (75),
id-NeighbourTAC (76),
id-Time-UE-StayedInCell-EnhancedGranularity (77),
id-RRCConnReestabIndicator (78),
id-MBMS-Service-Area-List (79),
id-HO-cause (80),
id-TargetCellInUTRAN (81),
id-MultibandInfoList (84)
} (0..x2ap-maxProtocolIEs)
X2ap-TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}
END
@@ -1,162 +0,0 @@
-- **************************************************************
--
-- Constant definitions
--
-- **************************************************************
X2AP-Constants {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Constants (4) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
X2ap-ProcedureCode,
X2ap-ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Elementary Procedures
--
-- **************************************************************
id-handoverPreparation X2ap-ProcedureCode ::= 0
id-handoverCancel X2ap-ProcedureCode ::= 1
id-loadIndication X2ap-ProcedureCode ::= 2
id-errorIndication X2ap-ProcedureCode ::= 3
id-snStatusTransfer X2ap-ProcedureCode ::= 4
id-uEContextRelease X2ap-ProcedureCode ::= 5
id-x2Setup X2ap-ProcedureCode ::= 6
id-reset X2ap-ProcedureCode ::= 7
id-eNBConfigurationUpdate X2ap-ProcedureCode ::= 8
id-resourceStatusReportingInitiation X2ap-ProcedureCode ::= 9
id-resourceStatusReporting X2ap-ProcedureCode ::= 10
id-privateMessage X2ap-ProcedureCode ::= 11
id-mobilitySettingsChange X2ap-ProcedureCode ::= 12
id-rLFIndication X2ap-ProcedureCode ::= 13
id-handoverReport X2ap-ProcedureCode ::= 14
id-cellActivation X2ap-ProcedureCode ::= 15
-- **************************************************************
--
-- Lists
--
-- **************************************************************
x2ap-maxEARFCN INTEGER ::= 65535
x2ap-maxInterfaces INTEGER ::= 16
x2ap-maxCellineNB INTEGER ::= 256
x2ap-maxnoofBands INTEGER ::= 16
x2ap-maxnoofBearers INTEGER ::= 256
x2ap-maxNrOfErrors INTEGER ::= 256
x2ap-maxnoofPDCP-SN INTEGER ::= 16
x2ap-maxnoofEPLMNs INTEGER ::= 15
x2ap-maxnoofEPLMNsPlusOne INTEGER ::= 16
x2ap-maxnoofForbLACs INTEGER ::= 4096
x2ap-maxnoofForbTACs INTEGER ::= 4096
x2ap-maxnoofBPLMNs INTEGER ::= 6
x2ap-maxnoofNeighbours INTEGER ::= 512
x2ap-maxnoofPRBs INTEGER ::= 110
x2ap-maxPools INTEGER ::= 16
x2ap-maxnoofCells INTEGER ::= 16
x2ap-maxnoofMBSFN INTEGER ::= 8
x2ap-maxFailedMeasObjects INTEGER ::= 32
x2ap-maxnoofCellIDforMDT INTEGER ::= 32
x2ap-maxnoofTAforMDT INTEGER ::= 8
x2ap-maxnoofMBMSServiceAreaIdentities INTEGER ::= 256
-- **************************************************************
--
-- IEs
--
-- **************************************************************
id-E-RABs-Admitted-Item X2ap-ProtocolIE-ID ::= 0
id-E-RABs-Admitted-List X2ap-ProtocolIE-ID ::= 1
id-E-RAB-Item X2ap-ProtocolIE-ID ::= 2
id-E-RABs-NotAdmitted-List X2ap-ProtocolIE-ID ::= 3
id-E-RABs-ToBeSetup-Item X2ap-ProtocolIE-ID ::= 4
id-Cause X2ap-ProtocolIE-ID ::= 5
id-CellInformation X2ap-ProtocolIE-ID ::= 6
id-CellInformation-Item X2ap-ProtocolIE-ID ::= 7
id-New-eNB-UE-X2AP-ID X2ap-ProtocolIE-ID ::= 9
id-Old-eNB-UE-X2AP-ID X2ap-ProtocolIE-ID ::= 10
id-TargetCell-ID X2ap-ProtocolIE-ID ::= 11
id-TargeteNBtoSource-eNBTransparentContainer X2ap-ProtocolIE-ID ::= 12
id-TraceActivation X2ap-ProtocolIE-ID ::= 13
id-UE-ContextInformation X2ap-ProtocolIE-ID ::= 14
id-UE-HistoryInformation X2ap-ProtocolIE-ID ::= 15
id-UE-X2AP-ID X2ap-ProtocolIE-ID ::= 16
id-CriticalityDiagnostics X2ap-ProtocolIE-ID ::= 17
id-E-RABs-SubjectToStatusTransfer-List X2ap-ProtocolIE-ID ::= 18
id-E-RABs-SubjectToStatusTransfer-Item X2ap-ProtocolIE-ID ::= 19
id-ServedCells X2ap-ProtocolIE-ID ::= 20
id-GlobalENB-ID X2ap-ProtocolIE-ID ::= 21
id-TimeToWait X2ap-ProtocolIE-ID ::= 22
id-GUMMEI-ID X2ap-ProtocolIE-ID ::= 23
id-GUGroupIDList X2ap-ProtocolIE-ID ::= 24
id-ServedCellsToAdd X2ap-ProtocolIE-ID ::= 25
id-ServedCellsToModify X2ap-ProtocolIE-ID ::= 26
id-ServedCellsToDelete X2ap-ProtocolIE-ID ::= 27
id-Registration-Request X2ap-ProtocolIE-ID ::= 28
id-CellToReport X2ap-ProtocolIE-ID ::= 29
id-ReportingPeriodicity X2ap-ProtocolIE-ID ::= 30
id-CellToReport-Item X2ap-ProtocolIE-ID ::= 31
id-CellMeasurementResult X2ap-ProtocolIE-ID ::= 32
id-CellMeasurementResult-Item X2ap-ProtocolIE-ID ::= 33
id-GUGroupIDToAddList X2ap-ProtocolIE-ID ::= 34
id-GUGroupIDToDeleteList X2ap-ProtocolIE-ID ::= 35
id-SRVCCOperationPossible X2ap-ProtocolIE-ID ::= 36
id-Measurement-ID X2ap-ProtocolIE-ID ::= 37
id-ReportCharacteristics X2ap-ProtocolIE-ID ::= 38
id-ENB1-Measurement-ID X2ap-ProtocolIE-ID ::= 39
id-ENB2-Measurement-ID X2ap-ProtocolIE-ID ::= 40
id-Number-of-Antennaports X2ap-ProtocolIE-ID ::= 41
id-CompositeAvailableCapacityGroup X2ap-ProtocolIE-ID ::= 42
id-ENB1-Cell-ID X2ap-ProtocolIE-ID ::= 43
id-ENB2-Cell-ID X2ap-ProtocolIE-ID ::= 44
id-ENB2-Proposed-Mobility-Parameters X2ap-ProtocolIE-ID ::= 45
id-ENB1-Mobility-Parameters X2ap-ProtocolIE-ID ::= 46
id-ENB2-Mobility-Parameters-Modification-Range X2ap-ProtocolIE-ID ::= 47
id-FailureCellPCI X2ap-ProtocolIE-ID ::= 48
id-Re-establishmentCellECGI X2ap-ProtocolIE-ID ::= 49
id-FailureCellCRNTI X2ap-ProtocolIE-ID ::= 50
id-ShortMAC-I X2ap-ProtocolIE-ID ::= 51
id-SourceCellECGI X2ap-ProtocolIE-ID ::= 52
id-FailureCellECGI X2ap-ProtocolIE-ID ::= 53
id-HandoverReportType X2ap-ProtocolIE-ID ::= 54
id-PRACH-Configuration X2ap-ProtocolIE-ID ::= 55
id-MBSFN-Subframe-Info X2ap-ProtocolIE-ID ::= 56
id-ServedCellsToActivate X2ap-ProtocolIE-ID ::= 57
id-ActivatedCellList X2ap-ProtocolIE-ID ::= 58
id-DeactivationIndication X2ap-ProtocolIE-ID ::= 59
id-UE-RLF-Report-Container X2ap-ProtocolIE-ID ::= 60
id-ABSInformation X2ap-ProtocolIE-ID ::= 61
id-InvokeIndication X2ap-ProtocolIE-ID ::= 62
id-ABS-Status X2ap-ProtocolIE-ID ::= 63
id-PartialSuccessIndicator X2ap-ProtocolIE-ID ::= 64
id-MeasurementInitiationResult-List X2ap-ProtocolIE-ID ::= 65
id-MeasurementInitiationResult-Item X2ap-ProtocolIE-ID ::= 66
id-MeasurementFailureCause-Item X2ap-ProtocolIE-ID ::= 67
id-CompleteFailureCauseInformation-List X2ap-ProtocolIE-ID ::= 68
id-CompleteFailureCauseInformation-Item X2ap-ProtocolIE-ID ::= 69
id-CSG-Id X2ap-ProtocolIE-ID ::= 70
id-CSGMembershipStatus X2ap-ProtocolIE-ID ::= 71
id-MDTConfiguration X2ap-ProtocolIE-ID ::= 72
id-ManagementBasedMDTallowed X2ap-ProtocolIE-ID ::= 74
id-RRCConnSetupIndicator X2ap-ProtocolIE-ID ::= 75
id-NeighbourTAC X2ap-ProtocolIE-ID ::= 76
id-Time-UE-StayedInCell-EnhancedGranularity X2ap-ProtocolIE-ID ::= 77
id-RRCConnReestabIndicator X2ap-ProtocolIE-ID ::= 78
id-MBMS-Service-Area-List X2ap-ProtocolIE-ID ::= 79
id-HO-cause X2ap-ProtocolIE-ID ::= 80
id-TargetCellInUTRAN X2ap-ProtocolIE-ID ::= 81
id-MultibandInfoList X2ap-ProtocolIE-ID ::= 84
END
@@ -1,195 +0,0 @@
-- **************************************************************
--
-- Container definitions
--
-- **************************************************************
X2AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-Containers (5) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
x2ap-maxPrivateIEs,
x2ap-maxProtocolExtensions,
x2ap-maxProtocolIEs,
X2ap-Criticality,
X2ap-Presence,
X2ap-PrivateIE-ID,
X2ap-ProtocolIE-ID
FROM X2AP-CommonDataTypes;
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES ::= CLASS {
&id X2ap-ProtocolIE-ID UNIQUE,
&criticality X2ap-Criticality,
&Value,
&presence X2ap-Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************
X2AP-PROTOCOL-IES-PAIR ::= CLASS {
&id X2ap-ProtocolIE-ID UNIQUE,
&firstCriticality X2ap-Criticality,
&FirstValue,
&secondCriticality X2ap-Criticality,
&SecondValue,
&presence X2ap-Presence
}
WITH SYNTAX {
ID &id
FIRST CRITICALITY &firstCriticality
FIRST TYPE &FirstValue
SECOND CRITICALITY &secondCriticality
SECOND TYPE &SecondValue
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************
X2AP-PROTOCOL-EXTENSION ::= CLASS {
&id X2ap-ProtocolIE-ID UNIQUE,
&criticality X2ap-Criticality,
&Extension,
&presence X2ap-Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************
X2AP-PRIVATE-IES ::= CLASS {
&id X2ap-PrivateIE-ID,
&criticality X2ap-Criticality,
&Value,
&presence X2ap-Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
TYPE &Value
PRESENCE &presence
}
-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************
ProtocolIE-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Single-Container {X2AP-PROTOCOL-IES : IEsSetParam} ::=
ProtocolIE-Field {{IEsSetParam}}
ProtocolIE-Field {X2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES.&id ({IEsSetParam}),
criticality X2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container for Protocol IE Pairs
--
-- **************************************************************
ProtocolIE-ContainerPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF
ProtocolIE-FieldPair {{IEsSetParam}}
ProtocolIE-FieldPair {X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}),
firstCriticality X2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}),
firstValue X2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}),
secondCriticality X2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}),
secondValue X2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id})
}
-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************
ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-Container {{IEsSetParam}}
ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, X2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
SEQUENCE (SIZE (lowerBound..upperBound)) OF
ProtocolIE-ContainerPair {{IEsSetParam}}
-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************
ProtocolExtensionContainer {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..x2ap-maxProtocolExtensions)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {X2AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id X2AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality X2AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue X2AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************
PrivateIE-Container {X2AP-PRIVATE-IES : IEsSetParam} ::=
SEQUENCE (SIZE (1..x2ap-maxPrivateIEs)) OF
PrivateIE-Field {{IEsSetParam}}
PrivateIE-Field {X2AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
id X2AP-PRIVATE-IES.&id ({IEsSetParam}),
criticality X2AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}),
value X2AP-PRIVATE-IES.&Value ({IEsSetParam}{@id})
}
END
File diff suppressed because it is too large Load Diff
@@ -1,892 +0,0 @@
-- **************************************************************
--
-- PDU definitions for X2AP.
--
-- **************************************************************
X2AP-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Contents (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
X2ap-ABSInformation,
X2ap-ABS-Status,
X2ap-AS-SecurityInformation,
X2ap-Cause,
X2ap-CompositeAvailableCapacityGroup,
X2ap-COUNTvalue,
X2ap-CriticalityDiagnostics,
X2ap-CRNTI,
X2ap-CSGMembershipStatus,
X2ap-CSG-Id,
X2ap-DeactivationIndication,
X2ap-DL-Forwarding,
X2ap-ECGI,
X2ap-E-RAB-ID,
X2ap-E-RAB-Level-QoS-Parameters,
X2ap-E-RAB-List,
X2ap-EUTRANTraceID,
X2ap-GlobalENB-ID,
X2ap-GTPtunnelEndpoint,
X2ap-GUGroupIDList,
X2ap-GUMMEI,
X2ap-HandoverReportType,
X2ap-HandoverRestrictionList,
X2ap-InvokeIndication,
X2ap-LocationReportingInformation,
X2ap-MDT-Configuration,
X2ap-ManagementBasedMDTallowed,
X2ap-Neighbour-Information,
X2ap-PCI,
X2ap-PDCP-SN,
X2ap-PLMN-Identity,
X2ap-ReceiveStatusofULPDCPSDUs,
X2ap-Registration-Request,
X2ap-RelativeNarrowbandTxPower,
X2ap-RadioResourceStatus,
X2ap-RRCConnReestabIndicator,
X2ap-RRCConnSetupIndicator,
X2ap-UE-RLF-Report-Container,
X2ap-RRC-Context,
X2ap-ServedCell-Information,
X2ap-ServedCells,
X2ap-ShortMAC-I,
X2ap-SRVCCOperationPossible,
X2ap-SubscriberProfileIDforRFP,
X2ap-TargetCellInUTRAN,
X2ap-TargeteNBtoSource-eNBTransparentContainer,
X2ap-TimeToWait,
X2ap-TraceActivation,
X2ap-TraceDepth,
X2ap-TransportLayerAddress,
X2ap-UEAggregateMaximumBitRate,
X2ap-UE-HistoryInformation,
X2ap-UE-S1AP-ID,
X2ap-UESecurityCapabilities,
X2ap-UE-X2AP-ID,
X2ap-UL-HighInterferenceIndicationInfo,
X2ap-UL-InterferenceOverloadIndication,
X2ap-HWLoadIndicator,
X2ap-S1TNLLoadIndicator,
X2ap-Measurement-ID,
X2ap-ReportCharacteristics,
X2ap-MobilityParametersInformation,
X2ap-MobilityParametersModificationRange
FROM X2AP-IEs
PrivateIE-Container{},
ProtocolExtensionContainer{},
ProtocolIE-Container{},
ProtocolIE-ContainerList{},
ProtocolIE-ContainerPair{},
ProtocolIE-ContainerPairList{},
ProtocolIE-Single-Container{},
X2AP-PRIVATE-IES,
X2AP-PROTOCOL-EXTENSION,
X2AP-PROTOCOL-IES,
X2AP-PROTOCOL-IES-PAIR
FROM X2AP-Containers
id-ABSInformation,
id-ActivatedCellList,
id-Cause,
id-CellInformation,
id-CellInformation-Item,
id-CellMeasurementResult,
id-CellMeasurementResult-Item,
id-CellToReport,
id-CellToReport-Item,
id-CompositeAvailableCapacityGroup,
id-CriticalityDiagnostics,
id-DeactivationIndication,
id-E-RABs-Admitted-Item,
id-E-RABs-Admitted-List,
id-E-RABs-NotAdmitted-List,
id-E-RABs-SubjectToStatusTransfer-List,
id-E-RABs-SubjectToStatusTransfer-Item,
id-E-RABs-ToBeSetup-Item,
id-GlobalENB-ID,
id-GUGroupIDList,
id-GUGroupIDToAddList,
id-GUGroupIDToDeleteList,
id-GUMMEI-ID,
id-InvokeIndication,
id-New-eNB-UE-X2AP-ID,
id-Old-eNB-UE-X2AP-ID,
id-Registration-Request,
id-ReportingPeriodicity,
id-ServedCells,
id-ServedCellsToActivate,
id-ServedCellsToAdd,
id-ServedCellsToModify,
id-ServedCellsToDelete,
id-SRVCCOperationPossible,
id-TargetCell-ID,
id-TargeteNBtoSource-eNBTransparentContainer,
id-TimeToWait,
id-TraceActivation,
id-UE-ContextInformation,
id-UE-HistoryInformation,
id-UE-X2AP-ID,
id-Measurement-ID,
id-ReportCharacteristics,
id-ENB1-Measurement-ID,
id-ENB2-Measurement-ID,
id-ENB1-Cell-ID,
id-ENB2-Cell-ID,
id-ENB2-Proposed-Mobility-Parameters,
id-ENB1-Mobility-Parameters,
id-ENB2-Mobility-Parameters-Modification-Range,
id-FailureCellPCI,
id-Re-establishmentCellECGI,
id-FailureCellCRNTI,
id-ShortMAC-I,
id-SourceCellECGI,
id-FailureCellECGI,
id-HandoverReportType,
id-UE-RLF-Report-Container,
id-PartialSuccessIndicator,
id-MeasurementInitiationResult-List,
id-MeasurementInitiationResult-Item,
id-MeasurementFailureCause-Item,
id-CompleteFailureCauseInformation-List,
id-CompleteFailureCauseInformation-Item,
id-CSGMembershipStatus,
id-CSG-Id,
id-MDTConfiguration,
id-ManagementBasedMDTallowed,
id-ABS-Status,
id-RRCConnSetupIndicator,
id-RRCConnReestabIndicator,
id-TargetCellInUTRAN,
x2ap-maxCellineNB,
x2ap-maxnoofBearers,
x2ap-maxnoofPDCP-SN,
x2ap-maxFailedMeasObjects,
x2ap-maxnoofCellIDforMDT,
x2ap-maxnoofTAforMDT
FROM X2AP-Constants;
-- **************************************************************
--
-- HANDOVER REQUEST
--
-- **************************************************************
X2ap-HandoverRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-HandoverRequest-IEs}},
...
}
X2ap-HandoverRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory }|
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory }|
{ ID id-TargetCell-ID CRITICALITY reject TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-GUMMEI-ID CRITICALITY reject TYPE X2ap-GUMMEI PRESENCE mandatory }|
{ ID id-UE-ContextInformation CRITICALITY reject TYPE X2ap-UE-ContextInformation PRESENCE mandatory }|
{ ID id-UE-HistoryInformation CRITICALITY ignore TYPE X2ap-UE-HistoryInformation PRESENCE mandatory }|
{ ID id-TraceActivation CRITICALITY ignore TYPE X2ap-TraceActivation PRESENCE optional}|
{ ID id-SRVCCOperationPossible CRITICALITY ignore TYPE X2ap-SRVCCOperationPossible PRESENCE optional}|
{ ID id-CSGMembershipStatus CRITICALITY reject TYPE X2ap-CSGMembershipStatus PRESENCE optional},
...
}
X2ap-UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-ManagementBasedMDTallowed CRITICALITY ignore EXTENSION X2ap-ManagementBasedMDTallowed PRESENCE optional },
...
}
X2ap-E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..x2ap-maxnoofBearers)) OF ProtocolIE-Single-Container { {X2ap-E-RABs-ToBeSetup-ItemIEs} }
X2ap-E-RABs-ToBeSetup-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-ToBeSetup-Item CRITICALITY ignore TYPE X2ap-E-RABs-ToBeSetup-Item PRESENCE mandatory },
...
}
X2ap-E-RABs-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER REQUEST ACKNOWLEDGE
--
-- **************************************************************
X2ap-HandoverRequestAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-HandoverRequestAcknowledge-IEs}},
...
}
X2ap-HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-E-RABs-Admitted-List CRITICALITY ignore TYPE X2ap-E-RABs-Admitted-List PRESENCE mandatory} |
{ ID id-E-RABs-NotAdmitted-List CRITICALITY ignore TYPE X2ap-E-RAB-List PRESENCE optional} |
{ ID id-TargeteNBtoSource-eNBTransparentContainer CRITICALITY ignore TYPE X2ap-TargeteNBtoSource-eNBTransparentContainer PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
X2ap-E-RABs-Admitted-List ::= SEQUENCE (SIZE (1..x2ap-maxnoofBearers)) OF ProtocolIE-Single-Container { {X2ap-E-RABs-Admitted-ItemIEs} }
X2ap-E-RABs-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-Admitted-Item CRITICALITY ignore TYPE X2ap-E-RABs-Admitted-Item PRESENCE mandatory }
}
X2ap-E-RABs-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- HANDOVER PREPARATION FAILURE
--
-- **************************************************************
X2ap-HandoverPreparationFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-HandoverPreparationFailure-IEs}},
...
}
X2ap-HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Handover Report
--
-- **************************************************************
X2ap-HandoverReport ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-HandoverReport-IEs}},
...
}
X2ap-HandoverReport-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-HandoverReportType CRITICALITY ignore TYPE X2ap-HandoverReportTYPE X2ap-PRESENCE mandatory}|
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory} |
{ ID id-SourceCellECGI CRITICALITY ignore TYPE X2ap-ECGI PRESENCE mandatory}|
{ ID id-FailureCellECGI CRITICALITY ignore TYPE X2ap-ECGI PRESENCE mandatory} |
{ ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE X2ap-ECGI PRESENCE conditional} -- The IE shall be present if the Handover Report TYPE X2ap-IE is set to “HO to Wrong Cell” -- |
{ ID id-TargetCellInUTRAN CRITICALITY ignore TYPE X2ap-TargetCellInUTRAN PRESENCE conditional} -- The IE shall be present if the Handover Report TYPE X2ap-IE is set to "InterRAT ping-pong" --,
...
}
-- **************************************************************
--
-- SN Status Transfer
--
-- **************************************************************
X2ap-SNStatusTransfer ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-SNStatusTransfer-IEs}},
...
}
X2ap-SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-E-RABs-SubjectToStatusTransfer-List CRITICALITY ignore TYPE X2ap-E-RABs-SubjectToStatusTransfer-List PRESENCE mandatory} ,
...
}
X2ap-E-RABs-SubjectToStatusTransfer-List ::= SEQUENCE (SIZE (1..x2ap-maxnoofBearers)) OF ProtocolIE-Single-Container { { X2ap-E-RABs-SubjectToStatusTransfer-ItemIEs} }
X2ap-E-RABs-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-E-RABs-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE X2ap-E-RABs-SubjectToStatusTransfer-Item PRESENCE mandatory }
}
X2ap-E-RABs-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- UE Context Release
--
-- **************************************************************
X2ap-UEContextRelease ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-UEContextRelease-IEs}},
...
}
X2ap-UEContextRelease-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- HANDOVER CANCEL
--
-- **************************************************************
X2ap-HandoverCancel ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-HandoverCancel-IEs}},
...
}
X2ap-HandoverCancel-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY reject TYPE X2ap-UE-X2AP-ID PRESENCE mandatory} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE optional} |
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory} ,
...
}
-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************
X2ap-ErrorIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ErrorIndication-IEs}},
...
}
X2ap-ErrorIndication-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Old-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE optional} |
{ ID id-New-eNB-UE-X2AP-ID CRITICALITY ignore TYPE X2ap-UE-X2AP-ID PRESENCE optional} |
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE optional} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional} ,
...
}
-- **************************************************************
--
-- Reset Request
--
-- **************************************************************
X2ap-ResetRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResetRequest-IEs}},
...
}
X2ap-ResetRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory },
...
}
-- **************************************************************
--
-- Reset Response
--
-- **************************************************************
X2ap-ResetResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResetResponse-IEs}},
...
}
X2ap-ResetResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- X2 SETUP REQUEST
--
-- **************************************************************
X2SetupRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupRequest-IEs}},
...
}
X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-GlobalENB-ID CRITICALITY reject TYPE X2ap-GlobalENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE X2ap-ServedCells PRESENCE mandatory} |
{ ID id-GUGroupIDList CRITICALITY reject TYPE X2ap-GUGroupIDList PRESENCE optional},
...
}
-- **************************************************************
--
-- X2 SETUP RESPONSE
--
-- **************************************************************
X2SetupResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupResponse-IEs}},
...
}
X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-GlobalENB-ID CRITICALITY reject TYPE X2ap-GlobalENB-ID PRESENCE mandatory} |
{ ID id-ServedCells CRITICALITY reject TYPE X2ap-ServedCells PRESENCE mandatory} |
{ ID id-GUGroupIDList CRITICALITY reject TYPE X2ap-GUGroupIDList PRESENCE optional}|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- X2 SETUP FAILURE
--
-- **************************************************************
X2SetupFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2SetupFailure-IEs}},
...
}
X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory} |
{ ID id-TimeToWait CRITICALITY ignore TYPE X2ap-TimeToWait PRESENCE optional} |
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- LOAD INFORMATION
--
-- **************************************************************
X2ap-LoadInformation ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-LoadInformation-IEs}},
...
}
X2ap-LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation CRITICALITY ignore TYPE X2ap-CellInformation-List PRESENCE mandatory} ,
...
}
X2ap-CellInformation-List ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF ProtocolIE-Single-Container { {X2ap-CellInformation-ItemIEs} }
X2ap-CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellInformation-Item CRITICALITY ignore TYPE X2ap-CellInformation-Item PRESENCE mandatory }
}
X2ap-CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-ABSInformation CRITICALITY ignore EXTENSION X2ap-ABSInformation PRESENCE optional }|
{ ID id-InvokeIndication CRITICALITY ignore EXTENSION X2ap-InvokeIndication PRESENCE optional },
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE
--
-- **************************************************************
X2ap-ENBConfigurationUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ENBConfigurationUpdate-IEs}},
...
}
X2ap-ENBConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ServedCellsToAdd CRITICALITY reject TYPE X2ap-ServedCells PRESENCE optional} |
{ ID id-ServedCellsToModify CRITICALITY reject TYPE X2ap-ServedCellsToModify PRESENCE optional} |
{ ID id-ServedCellsToDelete CRITICALITY reject TYPE X2ap-Old-ECGIs PRESENCE optional} |
{ ID id-GUGroupIDToAddList CRITICALITY reject TYPE X2ap-GUGroupIDList PRESENCE optional} |
{ ID id-GUGroupIDToDeleteList CRITICALITY reject TYPE X2ap-GUGroupIDList PRESENCE optional},
...
}
X2ap-ServedCellsToModify::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF X2ap-ServedCellsToModify-Item
ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-DeactivationIndication CRITICALITY ignore EXTENSION X2ap-DeactivationIndication PRESENCE optional },
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE ACKNOWLEDGE
--
-- **************************************************************
X2ap-ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ENBConfigurationUpdateAcknowledge-IEs}},
...
}
X2ap-ENBConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- ENB CONFIGURATION UPDATE FAIURE
--
-- **************************************************************
X2ap-ENBConfigurationUpdateFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ENBConfigurationUpdateFailure-IEs}},
...
}
X2ap-ENBConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory }|
{ ID id-TimeToWait CRITICALITY ignore TYPE X2ap-TimeToWait PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Resource Status Request
--
-- **************************************************************
X2ap-ResourceStatusRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResourceStatusRequest-IEs}},
...
}
X2ap-ResourceStatusRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY ignore TYPE X2ap-Measurement-ID PRESENCE conditional}|-- The IE shall be present if the Registration Request IE is set to “Stop”--
{ ID id-Registration-Request CRITICALITY reject TYPE X2ap-Registration-Request PRESENCE mandatory}|
{ ID id-ReportCharacteristics CRITICALITY reject TYPE X2ap-ReportCharacteristics PRESENCE optional}|
{ ID id-CellToReport CRITICALITY ignore TYPE X2ap-CellToReport-List PRESENCE mandatory}|
{ ID id-ReportingPeriodicity CRITICALITY ignore TYPE X2ap-ReportingPeriodicity PRESENCE optional}|
{ ID id-PartialSuccessIndicator CRITICALITY ignore TYPE X2ap-PartialSuccessIndicator PRESENCE optional},
...
}
X2ap-CellToReport-List ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF ProtocolIE-Single-Container { {X2ap-CellToReport-ItemIEs} }
X2ap-CellToReport-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellToReport-Item CRITICALITY ignore TYPE X2ap-CellToReport-Item PRESENCE mandatory }
}
X2ap-CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
X2ap-ReportingPeriodicity ::= ENUMERATED {
one-thousand-ms,
two-thousand-ms,
five-thousand-ms,
ten-thousand-ms,
...
}
X2ap-PartialSuccessIndicator ::= ENUMERATED {
partial-success-allowed,
...
}
-- **************************************************************
--
-- Resource Status Response
--
-- **************************************************************
X2ap-ResourceStatusResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResourceStatusResponse-IEs}},
...
}
X2ap-ResourceStatusResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional}|
{ ID id-MeasurementInitiationResult-List CRITICALITY ignore TYPE X2ap-MeasurementInitiationResult-List PRESENCE optional},
...
}
X2ap-MeasurementInitiationResult-List ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF ProtocolIE-Single-Container { { X2ap-MeasurementInitiationResult-ItemIEs} }
X2ap-MeasurementInitiationResult-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-MeasurementInitiationResult-Item CRITICALITY ignore TYPE X2ap-MeasurementInitiationResult-Item PRESENCE mandatory}
}
X2ap-MeasurementInitiationResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
X2ap-MeasurementFailureCause-List ::= SEQUENCE (SIZE (1..x2ap-maxFailedMeasObjects)) OF ProtocolIE-Single-Container { { X2ap-MeasurementFailureCause-ItemIEs} }
X2ap-MeasurementFailureCause-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-MeasurementFailureCause-Item CRITICALITY ignore TYPE X2ap-MeasurementFailureCause-Item PRESENCE mandatory}
}
X2ap-MeasurementFailureCause-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Resource Status Failure
--
-- **************************************************************
X2ap-ResourceStatusFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResourceStatusFailure-IEs}},
...
}
X2ap-ResourceStatusFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory}|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional}|
{ ID id-CompleteFailureCauseInformation-List CRITICALITY ignore TYPE X2ap-CompleteFailureCauseInformation-List PRESENCE optional},
...
}
X2ap-CompleteFailureCauseInformation-List ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF ProtocolIE-Single-Container { {X2ap-CompleteFailureCauseInformation-ItemIEs} }
X2ap-CompleteFailureCauseInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CompleteFailureCauseInformation-Item CRITICALITY ignore TYPE X2ap-CompleteFailureCauseInformation-Item PRESENCE mandatory}
}
X2ap-CompleteFailureCauseInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Resource Status Update
--
-- **************************************************************
X2ap-ResourceStatusUpdate ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-ResourceStatusUpdate-IEs}},
...
}
X2ap-ResourceStatusUpdate-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-ENB2-Measurement-ID CRITICALITY reject TYPE X2ap-Measurement-ID PRESENCE mandatory}|
{ ID id-CellMeasurementResult CRITICALITY ignore TYPE X2ap-CellMeasurementResult-List PRESENCE mandatory},
...
}
X2ap-CellMeasurementResult-List ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF ProtocolIE-Single-Container { {X2ap-CellMeasurementResult-ItemIEs} }
X2ap-CellMeasurementResult-ItemIEs X2AP-PROTOCOL-IES ::= {
{ ID id-CellMeasurementResult-Item CRITICALITY ignore TYPE X2ap-CellMeasurementResult-Item PRESENCE mandatory }
}
X2ap-CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-CompositeAvailableCapacityGroup CRITICALITY ignore EXTENSION X2ap-CompositeAvailableCapacityGroup PRESENCE optional}|
{ ID id-ABS-Status CRITICALITY ignore EXTENSION X2ap-ABS-Status PRESENCE optional},
...
}
-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************
X2ap-PrivateMessage ::= SEQUENCE {
privateIEs PrivateIE-Container {{X2ap-PrivateMessage-IEs}},
...
}
X2ap-PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
...
}
-- **************************************************************
--
-- MOBILITY CHANGE REQUEST
--
-- **************************************************************
X2ap-MobilityChangeRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-MobilityChangeRequest-IEs}},
...
}
X2ap-MobilityChangeRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY reject TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY reject TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-ENB1-Mobility-Parameters CRITICALITY ignore TYPE X2ap-MobilityParametersInformation PRESENCE optional }|
{ ID id-ENB2-Proposed-Mobility-Parameters CRITICALITY reject TYPE X2ap-MobilityParametersInformation PRESENCE mandatory }|
{ ID id-Cause CRITICALITY reject TYPE X2ap-Cause PRESENCE mandatory },
...
}
-- **************************************************************
--
-- MOBILITY CHANGE ACKNOWLEDGE
--
-- **************************************************************
X2ap-MobilityChangeAcknowledge ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-MobilityChangeAcknowledge-IEs}},
...
}
X2ap-MobilityChangeAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY reject TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY reject TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- MOBILITY CHANGE FAILURE
--
-- **************************************************************
X2ap-MobilityChangeFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-MobilityChangeFailure-IEs}},
...
}
X2ap-MobilityChangeFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ENB1-Cell-ID CRITICALITY ignore TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-ENB2-Cell-ID CRITICALITY ignore TYPE X2ap-ECGI PRESENCE mandatory }|
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory }|
{ ID id-ENB2-Mobility-Parameters-Modification-Range CRITICALITY ignore TYPE X2ap-MobilityParametersModificationRange PRESENCE optional }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
-- **************************************************************
--
-- Radio Link Failure Indication
--
-- **************************************************************
X2ap-RLFIndication ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-RLFIndication-IEs}},
...
}
X2ap-RLFIndication-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-FailureCellPCI CRITICALITY ignore TYPE X2ap-PCI PRESENCE mandatory}|
{ ID id-Re-establishmentCellECGI CRITICALITY ignore TYPE X2ap-ECGI PRESENCE mandatory}|
{ ID id-FailureCellCRNTI CRITICALITY ignore TYPE X2ap-CRNTI PRESENCE mandatory}|
{ ID id-ShortMAC-I CRITICALITY ignore TYPE X2ap-ShortMAC-I PRESENCE optional}|
{ ID id-UE-RLF-Report-Container CRITICALITY ignore TYPE X2ap-UE-RLF-Report-Container PRESENCE optional}|
{ ID id-RRCConnSetupIndicator CRITICALITY reject TYPE X2ap-RRCConnSetupIndicator PRESENCE optional}|
{ ID id-RRCConnReestabIndicator CRITICALITY ignore TYPE X2ap-RRCConnReestabIndicator PRESENCE optional},
...
}
-- **************************************************************
--
-- Cell Activation Request
--
-- **************************************************************
X2ap-CellActivationRequest ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-CellActivationRequest-IEs}},
...
}
X2ap-CellActivationRequest-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ServedCellsToActivate CRITICALITY reject TYPE X2ap-ServedCellsToActivate PRESENCE mandatory },
...
}
X2ap-ServedCellsToActivate::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF X2ap-ServedCellsToActivate-Item
X2ap-ServedCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
-- **************************************************************
--
-- Cell Activation Response
--
-- **************************************************************
X2ap-CellActivationResponse ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-CellActivationResponse-IEs}},
...
}
X2ap-CellActivationResponse-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-ActivatedCellList CRITICALITY ignore TYPE X2ap-ActivatedCellList PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
X2ap-ActivatedCellList ::= SEQUENCE (SIZE (1..x2ap-maxCellineNB)) OF X2ap-ActivatedCellList-Item
X2ap-ActivatedCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
...
}
--**************************************************************
--
-- CELL ACTIVATION FAILURE
--
-- **************************************************************
X2ap-CellActivationFailure ::= SEQUENCE {
protocolIEs ProtocolIE-Container {{X2ap-CellActivationFailure-IEs}},
...
}
X2ap-CellActivationFailure-IEs X2AP-PROTOCOL-IES ::= {
{ ID id-Cause CRITICALITY ignore TYPE X2ap-Cause PRESENCE mandatory }|
{ ID id-CriticalityDiagnostics CRITICALITY ignore TYPE X2ap-CriticalityDiagnostics PRESENCE optional },
...
}
END
@@ -1,243 +0,0 @@
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************
IMPORTS
X2ap-Criticality,
X2ap-ProcedureCode
FROM X2AP-CommonDataTypes
X2ap-CellActivationRequest,
X2ap-CellActivationResponse,
X2ap-CellActivationFailure,
X2ap-ENBConfigurationUpdate,
X2ap-ENBConfigurationUpdateAcknowledge,
X2ap-ENBConfigurationUpdateFailure,
X2ap-ErrorIndication,
X2ap-HandoverCancel,
X2ap-HandoverReport,
X2ap-HandoverPreparationFailure,
X2ap-HandoverRequest,
X2ap-HandoverRequestAcknowledge,
X2ap-LoadInformation,
X2ap-PrivateMessage,
X2ap-ResetRequest,
X2ap-ResetResponse,
X2ap-ResourceStatusFailure,
X2ap-ResourceStatusRequest,
X2ap-ResourceStatusResponse,
X2ap-ResourceStatusUpdate,
X2ap-RLFIndication,
X2ap-SNStatusTransfer,
X2ap-UEContextRelease,
X2SetupFailure, X2SetupRequest,
X2SetupResponse,
X2ap-MobilityChangeRequest,
X2ap-MobilityChangeAcknowledge,
X2ap-MobilityChangeFailure
FROM X2AP-PDU-Contents
id-cellActivation,
id-eNBConfigurationUpdate,
id-errorIndication,
id-handoverCancel,
id-handoverReport,
id-handoverPreparation,
id-loadIndication,
id-privateMessage,
id-reset,
id-resourceStatusReporting,
id-resourceStatusReportingInitiation,
id-rLFIndication,
id-snStatusTransfer,
id-uEContextRelease,
id-x2Setup,
id-mobilitySettingsChange
FROM X2AP-Constants;
-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURE ::= CLASS {
&InitiatingMessage ,
&SuccessfulOutcome OPTIONAL,
&UnsuccessfulOutcome OPTIONAL,
&procedureCode ProcedureCode UNIQUE,
&criticality Criticality DEFAULT ignore
}
WITH SYNTAX {
INITIATING MESSAGE &InitiatingMessage
[SUCCESSFUL OUTCOME &SuccessfulOutcome]
[UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome]
PROCEDURE CODE &procedureCode
[CRITICALITY &criticality]
}
-- **************************************************************
--
-- Interface PDU Definition
--
-- **************************************************************
X2AP-PDU ::= CHOICE {
initiatingMessage InitiatingMessage,
successfulOutcome SuccessfulOutcome,
unsuccessfulOutcome UnsuccessfulOutcome,
...
}
InitiatingMessage ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
SuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
UnsuccessfulOutcome ::= SEQUENCE {
procedureCode X2AP-ELEMENTARY-PROCEDURE.&procedureCode ({X2AP-ELEMENTARY-PROCEDURES}),
criticality X2AP-ELEMENTARY-PROCEDURE.&criticality ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode}),
value X2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({X2AP-ELEMENTARY-PROCEDURES}{@procedureCode})
}
-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************
X2AP-ELEMENTARY-PROCEDURES X2AP-ELEMENTARY-PROCEDURE ::= {
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 |
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
handoverPreparation |
reset |
x2Setup |
resourceStatusReportingInitiation |
eNBConfigurationUpdate |
mobilitySettingsChange |
cellActivation ,
...
}
X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
snStatusTransfer |
uEContextRelease |
handoverCancel |
errorIndication |
resourceStatusReporting |
loadIndication |
privateMessage |
rLFIndication | handoverReport,
...
}
-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************
handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverRequest
SUCCESSFUL OUTCOME HandoverRequestAcknowledge
UNSUCCESSFUL OUTCOME HandoverPreparationFailure
PROCEDURE CODE id-handoverPreparation
CRITICALITY reject
}
snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE SNStatusTransfer
PROCEDURE CODE id-snStatusTransfer
CRITICALITY ignore
}
uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE UEContextRelease
PROCEDURE CODE id-uEContextRelease
CRITICALITY ignore
}
handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverCancel
PROCEDURE CODE id-handoverCancel
CRITICALITY ignore
}
handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE HandoverReport
PROCEDURE CODE id-handoverReport
CRITICALITY ignore
}
errorIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ErrorIndication
PROCEDURE CODE id-errorIndication
CRITICALITY ignore
}
reset X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResetRequest
SUCCESSFUL OUTCOME ResetResponse
PROCEDURE CODE id-reset
CRITICALITY reject
}
x2Setup X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE X2SetupRequest
SUCCESSFUL OUTCOME X2SetupResponse
UNSUCCESSFUL OUTCOME X2SetupFailure
PROCEDURE CODE id-x2Setup
CRITICALITY reject
}
loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE LoadInformation
PROCEDURE CODE id-loadIndication
CRITICALITY ignore
}
eNBConfigurationUpdate X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ENBConfigurationUpdate
SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge
UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure
PROCEDURE CODE id-eNBConfigurationUpdate
CRITICALITY reject
}
resourceStatusReportingInitiation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusRequest
SUCCESSFUL OUTCOME ResourceStatusResponse
UNSUCCESSFUL OUTCOME ResourceStatusFailure
PROCEDURE CODE id-resourceStatusReportingInitiation
CRITICALITY reject
}
resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE ResourceStatusUpdate
PROCEDURE CODE id-resourceStatusReporting
CRITICALITY ignore
}
rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE RLFIndication
PROCEDURE CODE id-rLFIndication
CRITICALITY ignore
}
privateMessage X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE PrivateMessage
PROCEDURE CODE id-privateMessage
CRITICALITY ignore
}
mobilitySettingsChange X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE MobilityChangeRequest
SUCCESSFUL OUTCOME MobilityChangeAcknowledge
UNSUCCESSFUL OUTCOME MobilityChangeFailure
PROCEDURE CODE id-mobilitySettingsChange
CRITICALITY reject
}
cellActivation X2AP-ELEMENTARY-PROCEDURE ::= {
INITIATING MESSAGE CellActivationRequest
SUCCESSFUL OUTCOME CellActivationResponse
UNSUCCESSFUL OUTCOME CellActivationFailure
PROCEDURE CODE id-cellActivation
CRITICALITY reject
}
END
@@ -1,199 +0,0 @@
-- **************************************************************
--
-- PDU definitions for X2AP.
--
-- **************************************************************
X2AP-PDU {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU (1) }
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
x2ap-maxProtocolIEs,
X2ap-Criticality,
X2ap-ProcedureCode,
X2ap-ProtocolIE-ID
FROM X2AP-CommonDataTypes;
X2ap-IE ::= SEQUENCE {
id X2ap-ProtocolIE-ID,
criticality X2ap-Criticality,
value ANY
}
X2AP-PDU ::= CHOICE {
initiatingMessage X2ap-InitiatingMessage,
successfulOutcome X2ap-SuccessfulOutcome,
unsuccessfulOutcome X2ap-UnsuccessfulOutcome,
...
}
X2ap-InitiatingMessage ::= SEQUENCE {
procedureCode X2ap-ProcedureCode,
criticality X2ap-Criticality,
value ANY
}
X2ap-SuccessfulOutcome ::= SEQUENCE {
procedureCode X2ap-ProcedureCode,
criticality X2ap-Criticality,
value ANY
}
X2ap-UnsuccessfulOutcome ::= SEQUENCE {
procedureCode X2ap-ProcedureCode,
criticality X2ap-Criticality,
value ANY
}
X2ap-HandoverRequest ::= SEQUENCE {
x2ap-HandoverRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-HandoverRequestAcknowledge ::= SEQUENCE {
x2ap-HandoverRequestAcknowledge-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-HandoverPreparationFailure ::= SEQUENCE {
x2ap-HandoverPreparationFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-SNStatusTransfer ::= SEQUENCE {
x2ap-SNStatusTransfer-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-UEContextRelease ::= SEQUENCE {
x2ap-UEContextRelease-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-HandoverCancel ::= SEQUENCE {
x2ap-HandoverCancel-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-HandoverReport ::= SEQUENCE {
x2ap-HandoverReport-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ErrorIndication ::= SEQUENCE {
x2ap-ErrorIndication-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResetRequest ::= SEQUENCE {
x2ap-ResetRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResetResponse ::= SEQUENCE {
x2ap-ResetResponse-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2SetupRequest ::= SEQUENCE {
x2SetupRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2SetupResponse ::= SEQUENCE {
x2SetupResponse-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2SetupFailure ::= SEQUENCE {
x2SetupFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-LoadInformation ::= SEQUENCE {
x2ap-LoadInformation-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ENBConfigurationUpdate ::= SEQUENCE {
x2ap-ENBConfigurationUpdate-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
x2ap-ENBConfigurationUpdateAcknowledge-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ENBConfigurationUpdateFailure ::= SEQUENCE {
x2ap-ENBConfigurationUpdateFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResourceStatusRequest ::= SEQUENCE {
x2ap-ResourceStatusRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResourceStatusResponse ::= SEQUENCE {
x2ap-ResourceStatusResponse-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResourceStatusFailure ::= SEQUENCE {
x2ap-ResourceStatusFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-ResourceStatusUpdate ::= SEQUENCE {
x2ap-ResourceStatusUpdate-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-RLFIndication ::= SEQUENCE {
x2ap-RLFIndication-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-PrivateMessage ::= SEQUENCE {
x2ap-PrivateMessage-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-MobilityChangeRequest ::= SEQUENCE {
x2ap-MobilityChangeRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-MobilityChangeAcknowledge ::= SEQUENCE {
x2ap-MobilityChangeAcknowledge-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-MobilityChangeFailure ::= SEQUENCE {
x2ap-MobilityChangeFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-CellActivationRequest ::= SEQUENCE {
x2ap-CellActivationRequest-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-CellActivationResponse ::= SEQUENCE {
x2ap-CellActivationResponse-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
X2ap-CellActivationFailure ::= SEQUENCE {
x2ap-CellActivationFailure-ies SEQUENCE (SIZE (0..x2ap-maxProtocolIEs)) OF X2ap-IE,
...
}
END
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-1
View File
@@ -28,7 +28,6 @@ CFLAGS = \
-Wall \
-DENB_MODE \
-DENABLE_USE_MME \
-DUSER_MODE \
-I. \
-I$(ASN1MESSAGESDIR)/ASN1/$(ASN1RELDIR) \
-I$(ASN1MESSAGESDIR) \
+26 -67
View File
@@ -29,7 +29,7 @@
#include <stdint.h>
#include "x2ap_common.h"
#include "X2AP-PDU.h"
#include "X2AP_X2AP-PDU.h"
int asn_debug = 0;
int asn1_xer_print = 0;
@@ -55,29 +55,27 @@ inline void ASN_DEBUG(const char *fmt, ...)
ssize_t x2ap_generate_initiating_message(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr)
{
X2AP_PDU_t pdu;
X2AP_X2AP_PDU_t pdu;
ssize_t encoded;
memset(&pdu, 0, sizeof(X2AP_PDU_t));
pdu.present = X2AP_PDU_PR_initiatingMessage;
memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
pdu.present = X2AP_X2AP_PDU_PR_initiatingMessage;
pdu.choice.initiatingMessage.procedureCode = procedureCode;
pdu.choice.initiatingMessage.criticality = criticality;
ANY_fromType_aper(&pdu.choice.initiatingMessage.value, td, sptr);
ANY_fromType_aper((ANY_t *)&pdu.choice.initiatingMessage.value, td, sptr);
if (asn1_xer_print) {
xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
}
/* We can safely free list of IE from sptr */
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
(void **)buffer)) < 0) {
return -1;
}
@@ -89,107 +87,68 @@ ssize_t x2ap_generate_initiating_message(
ssize_t x2ap_generate_successfull_outcome(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr)
{
X2AP_PDU_t pdu;
X2AP_X2AP_PDU_t pdu;
ssize_t encoded;
memset(&pdu, 0, sizeof(X2AP_PDU_t));
pdu.present = X2AP_PDU_PR_successfulOutcome;
memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
pdu.present = X2AP_X2AP_PDU_PR_successfulOutcome;
pdu.choice.successfulOutcome.procedureCode = procedureCode;
pdu.choice.successfulOutcome.criticality = criticality;
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
ANY_fromType_aper((ANY_t *)&pdu.choice.successfulOutcome.value, td, sptr);
if (asn1_xer_print) {
xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
}
/* We can safely free list of IE from sptr */
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
(void **)buffer)) < 0) {
return -1;
}
*length = encoded;
return encoded;
}
ssize_t x2ap_generate_unsuccessfull_outcome(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr)
{
X2AP_PDU_t pdu;
X2AP_X2AP_PDU_t pdu;
ssize_t encoded;
memset(&pdu, 0, sizeof(X2AP_PDU_t));
pdu.present = X2AP_PDU_PR_unsuccessfulOutcome;
memset(&pdu, 0, sizeof(X2AP_X2AP_PDU_t));
pdu.present = X2AP_X2AP_PDU_PR_unsuccessfulOutcome;
pdu.choice.successfulOutcome.procedureCode = procedureCode;
pdu.choice.successfulOutcome.criticality = criticality;
ANY_fromType_aper(&pdu.choice.successfulOutcome.value, td, sptr);
ANY_fromType_aper((ANY_t *)&pdu.choice.successfulOutcome.value, td, sptr);
if (asn1_xer_print) {
xer_fprint(stdout, &asn_DEF_X2AP_PDU, (void *)&pdu);
xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)&pdu);
}
/* We can safely free list of IE from sptr */
ASN_STRUCT_FREE_CONTENTS_ONLY(*td, sptr);
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_PDU, 0, &pdu,
if ((encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, &pdu,
(void **)buffer)) < 0) {
return -1;
}
*length = encoded;
return encoded;
}
X2ap_IE_t *x2ap_new_ie(
X2ap_ProtocolIE_ID_t id,
X2ap_Criticality_t criticality,
asn_TYPE_descriptor_t *type,
void *sptr)
{
X2ap_IE_t *buff;
if ((buff = malloc(sizeof(X2ap_IE_t))) == NULL) {
// Possible error on malloc
return NULL;
}
memset((void *)buff, 0, sizeof(X2ap_IE_t));
buff->id = id;
buff->criticality = criticality;
if (ANY_fromType_aper(&buff->value, type, sptr) < 0) {
fprintf(stderr, "Encoding of %s failed\n", type->name);
free(buff);
return NULL;
}
if (asn1_xer_print)
if (xer_fprint(stdout, &asn_DEF_X2ap_IE, buff) < 0) {
free(buff);
return NULL;
}
return buff;
}
void x2ap_handle_criticality(X2ap_Criticality_t criticality)
void x2ap_handle_criticality(X2AP_Criticality_t criticality)
{
}
+37 -266
View File
@@ -23,247 +23,17 @@
# include "config.h"
#endif
#include "X2ap-ABSInformationFDD.h"
#include "X2ap-ABSInformation.h"
#include "X2ap-ABSInformationTDD.h"
#include "X2ap-ABS-Status.h"
#include "X2ap-ActivatedCellList.h"
#include "X2ap-AllocationAndRetentionPriority.h"
#include "X2ap-AreaScopeOfMDT.h"
#include "X2ap-AS-SecurityInformation.h"
#include "X2ap-BandInfo.h"
#include "X2ap-BitRate.h"
#include "X2ap-BroadcastPLMNs-Item.h"
#include "X2ap-CapacityValue.h"
#include "X2ap-Cause.h"
#include "X2ap-CauseMisc.h"
#include "X2ap-CauseProtocol.h"
#include "X2ap-CauseRadioNetwork.h"
#include "X2ap-CauseTransport.h"
#include "X2ap-CellActivationFailure.h"
#include "X2ap-CellActivationRequest.h"
#include "X2ap-CellActivationResponse.h"
#include "X2ap-CellBasedMDT.h"
#include "X2ap-CellCapacityClassValue.h"
#include "X2ap-CellIdListforMDT.h"
#include "X2ap-CellInformation-Item.h"
#include "X2ap-CellInformation-List.h"
#include "X2ap-Cell-Size.h"
#include "X2ap-CellToReport-Item.h"
#include "X2ap-CellToReport-List.h"
#include "X2ap-CellType.h"
#include "X2ap-CellMeasurementResult-Item.h"
#include "X2ap-CellMeasurementResult-List.h"
#include "X2ap-CompleteFailureCauseInformation-Item.h"
#include "X2ap-CompleteFailureCauseInformation-List.h"
#include "X2ap-CompositeAvailableCapacityGroup.h"
#include "X2ap-CompositeAvailableCapacity.h"
#include "X2ap-COUNTvalue.h"
#include "X2ap-CriticalityDiagnostics.h"
#include "X2ap-CriticalityDiagnostics-IE-List.h"
#include "X2ap-Criticality.h"
#include "X2ap-CRNTI.h"
#include "X2ap-CSG-Id.h"
#include "X2ap-CSGMembershipStatus.h"
#include "X2ap-CyclicPrefixDL.h"
#include "X2ap-CyclicPrefixUL.h"
#include "X2ap-DeactivationIndication.h"
#include "X2ap-DL-ABS-status.h"
#include "X2ap-DL-Forwarding.h"
#include "X2ap-DL-GBR-PRB-usage.h"
#include "X2ap-DL-non-GBR-PRB-usage.h"
#include "X2ap-DL-Total-PRB-usage.h"
#include "X2ap-EARFCN.h"
#include "X2ap-ECGI.h"
#include "X2ap-ENB-ID.h"
#include "X2ap-ENBConfigurationUpdateFailure.h"
#include "X2ap-ENBConfigurationUpdateAcknowledge.h"
#include "X2ap-ENBConfigurationUpdate.h"
#include "X2ap-EncryptionAlgorithms.h"
#include "X2ap-EPLMNs.h"
#include "X2ap-E-RAB-ID.h"
#include "X2ap-E-RAB-Item.h"
#include "X2ap-E-RABs-Admitted-List.h"
#include "X2ap-E-RAB-Level-QoS-Parameters.h"
#include "X2ap-E-RAB-List.h"
#include "X2ap-E-RABs-SubjectToStatusTransfer-Item.h"
#include "X2ap-E-RABs-Admitted-Item.h"
#include "X2ap-E-RABs-SubjectToStatusTransfer-List.h"
#include "X2ap-ErrorIndication.h"
#include "X2ap-EUTRA-Mode-Info.h"
#include "X2ap-EUTRANCellIdentifier.h"
#include "X2ap-EUTRANTraceID.h"
#include "X2ap-EventType.h"
#include "X2ap-FDD-Info.h"
#include "X2ap-ForbiddenInterRATs.h"
#include "X2ap-ForbiddenLACs.h"
#include "X2ap-ForbiddenLAs.h"
#include "X2ap-ForbiddenLAs-Item.h"
#include "X2ap-ForbiddenTACs.h"
#include "X2ap-ForbiddenTAs.h"
#include "X2ap-ForbiddenTAs-Item.h"
#include "X2ap-Fourframes.h"
#include "X2ap-FreqBandIndicator.h"
#include "X2ap-GBR-QosInformation.h"
#include "X2ap-GlobalENB-ID.h"
#include "X2ap-GTP-TEI.h"
#include "X2ap-GTPtunnelEndpoint.h"
#include "X2ap-GU-Group-ID.h"
#include "X2ap-GUGroupIDList.h"
#include "X2ap-GUMMEI.h"
#include "X2ap-HandoverCancel.h"
#include "X2ap-HandoverReportType.h"
#include "X2ap-HandoverRequest.h"
#include "X2ap-HandoverReport.h"
#include "X2ap-HandoverRestrictionList.h"
#include "X2ap-HandoverPreparationFailure.h"
#include "X2ap-HandoverRequestAcknowledge.h"
#include "X2ap-HFN.h"
#include "X2ap-HWLoadIndicator.h"
#include "X2ap-IE-Extensions.h"
#include "X2ap-IE.h"
#include "X2ap-IntegrityProtectionAlgorithms.h"
#include "X2ap-InterfacesToTrace.h"
#include "X2ap-InvokeIndication.h"
#include "X2ap-Key-eNodeB-Star.h"
#include "X2ap-LAC.h"
#include "X2ap-LastVisitedCell-Item.h"
#include "X2ap-LastVisitedEUTRANCellInformation.h"
#include "X2ap-LastVisitedGERANCellInformation.h"
#include "X2ap-LastVisitedUTRANCellInformation.h"
#include "X2ap-LoadIndicator.h"
#include "X2ap-LoadInformation.h"
#include "X2ap-LocationReportingInformation.h"
#include "X2ap-ManagementBasedMDTallowed.h"
#include "X2ap-MBMS-Service-Area-Identity.h"
#include "X2ap-MBMS-Service-Area-Identity-List.h"
#include "X2ap-MBSFN-Subframe-Info.h"
#include "X2ap-MBSFN-Subframe-Infolist.h"
#include "X2ap-MDT-Activation.h"
#include "X2ap-MDT-Configuration.h"
#include "X2ap-Measurement-ID.h"
#include "X2ap-MeasurementsToActivate.h"
#include "X2ap-MeasurementThresholdA2.h"
#include "X2ap-MeasurementInitiationResult-Item.h"
#include "X2ap-MeasurementInitiationResult-List.h"
#include "X2ap-MeasurementFailureCause-Item.h"
#include "X2ap-MME-Code.h"
#include "X2ap-MME-Group-ID.h"
#include "X2ap-MobilityChangeAcknowledge.h"
#include "X2ap-MobilityChangeFailure.h"
#include "X2ap-MobilityChangeRequest.h"
#include "X2ap-MobilityParametersInformation.h"
#include "X2ap-MobilityParametersModificationRange.h"
#include "X2ap-MultibandInfoList.h"
#include "X2ap-Neighbour-Information.h"
#include "X2ap-NextHopChainingCount.h"
#include "X2ap-Number-of-Antennaports.h"
#include "X2ap-Oneframe.h"
#include "X2ap-Old-ECGIs.h"
#include "X2ap-PartialSuccessIndicator.h"
#include "X2ap-PCI.h"
#include "X2ap-PDCP-SN.h"
#include "X2AP-PDU.h"
#include "X2ap-PeriodicReportingMDT.h"
#include "X2ap-PLMN-Identity.h"
#include "X2ap-PRACH-Configuration.h"
#include "X2ap-Pre-emptionCapability.h"
#include "X2ap-Pre-emptionVulnerability.h"
#include "X2ap-Presence.h"
#include "X2ap-PriorityLevel.h"
#include "X2ap-PrivateIE-ID.h"
#include "X2ap-ProcedureCode.h"
#include "X2ap-ProtocolIE-ID.h"
#include "X2ap-QCI.h"
#include "X2ap-RadioframeAllocationOffset.h"
#include "X2ap-RadioframeAllocationPeriod.h"
#include "X2ap-RadioResourceStatus.h"
#include "X2ap-ReceiveStatusofULPDCPSDUs.h"
#include "X2ap-Registration-Request.h"
#include "X2ap-RelativeNarrowbandTxPower.h"
#include "X2ap-ReportAmountMDT.h"
#include "X2ap-ReportArea.h"
#include "X2ap-ReportCharacteristics.h"
#include "X2ap-ReportingTriggerMDT.h"
#include "X2ap-ReportIntervalMDT.h"
#include "X2ap-ReportingPeriodicity.h"
#include "X2ap-ResourceStatusFailure.h"
#include "X2ap-ResourceStatusResponse.h"
#include "X2ap-ResourceStatusUpdate.h"
#include "X2ap-RNTP-Threshold.h"
#include "X2ap-RRCConnReestabIndicator.h"
#include "X2ap-RRCConnSetupIndicator.h"
#include "X2ap-RRC-Context.h"
#include "X2ap-RLFIndication.h"
#include "X2ap-ResourceStatusRequest.h"
#include "X2ap-S1TNLLoadIndicator.h"
//nclude "X2ap-ServedCellInformation.h"
#include "X2ap-ServedCells.h"
#include "X2ap-ServedCellsToModify.h"
#include "X2ap-ServedCellsToActivate.h"
#include "X2ap-ShortMAC-I.h"
#include "X2ap-SpecialSubframe-Info.h"
#include "X2ap-SpecialSubframePatterns.h"
#include "X2ap-SRVCCOperationPossible.h"
#include "X2ap-SubframeAllocation.h"
#include "X2ap-SubframeAssignment.h"
#include "X2ap-SubscriberProfileIDforRFP.h"
#include "X2ap-SNStatusTransfer.h"
#include "X2ap-TABasedMDT.h"
#include "X2ap-TAC.h"
#include "X2ap-TAListforMDT.h"
#include "X2ap-TargetCellInUTRAN.h"
#include "X2ap-TargeteNBtoSource-eNBTransparentContainer.h"
#include "X2ap-TDD-Info.h"
#include "X2ap-ThresholdEventA2.h"
#include "X2ap-Threshold-RSRP.h"
#include "X2ap-Threshold-RSRQ.h"
#include "X2ap-TimeToWait.h"
#include "X2ap-Time-UE-StayedInCell-EnhancedGranularity.h"
#include "X2ap-Time-UE-StayedInCell.h"
#include "X2ap-E-RABs-ToBeSetup-Item.h"
#include "X2ap-TraceActivation.h"
#include "X2ap-TraceCollectionEntityIPAddress.h"
#include "X2ap-TraceDepth.h"
#include "X2ap-Transmission-Bandwidth.h"
#include "X2ap-TransportLayerAddress.h"
#include "X2ap-TriggeringMessage.h"
#include "X2ap-TypeOfError.h"
#include "X2ap-UEAggregateMaximumBitRate.h"
#include "X2ap-UE-ContextInformation.h"
#include "X2ap-UE-HistoryInformation.h"
#include "X2ap-UE-RLF-Report-Container.h"
#include "X2ap-UE-S1AP-ID.h"
#include "X2ap-UE-X2AP-ID.h"
#include "X2ap-UEContextRelease.h"
#include "X2ap-UESecurityCapabilities.h"
#include "X2ap-UL-GBR-PRB-usage.h"
#include "X2ap-UL-HighInterferenceIndication.h"
#include "X2ap-UL-HighInterferenceIndicationInfo.h"
#include "X2ap-UL-HighInterferenceIndicationInfo-Item.h"
#include "X2ap-UL-InterferenceOverloadIndication.h"
#include "X2ap-UL-InterferenceOverloadIndication-Item.h"
#include "X2ap-UL-non-GBR-PRB-usage.h"
#include "X2ap-UL-Total-PRB-usage.h"
#include "X2ap-UsableABSInformationFDD.h"
#include "X2ap-UsableABSInformation.h"
#include "X2ap-UsableABSInformationTDD.h"
#include "X2ap-ResetResponse.h"
#include "X2ap-ResetRequest.h"
#include "X2SetupFailure.h"
#include "X2SetupRequest.h"
#include "X2SetupResponse.h"
#include "X2ap-Old-ECGIs.h"
#include "X2ap-Criticality.h"
#include "X2ap-ProcedureCode.h"
#include "X2AP_ProtocolIE-Field.h"
#include "X2AP_X2AP-PDU.h"
#include "X2AP_InitiatingMessage.h"
#include "X2AP_SuccessfulOutcome.h"
#include "X2AP_UnsuccessfulOutcome.h"
#include "X2AP_ProtocolIE-FieldPair.h"
#include "X2AP_ProtocolIE-ContainerPair.h"
#include "X2AP_ProtocolExtensionField.h"
#include "X2AP_ProtocolExtensionContainer.h"
#include "X2AP_asn_constant.h"
#include "intertask_interface.h"
#ifndef X2AP_COMMON_H_
#define X2AP_COMMON_H_
@@ -287,29 +57,43 @@
#define FALSE 0
#endif
extern int asn_debug;
extern int asn1_xer_print;
#if defined(ENB_MODE)
# include "log.h"
# include "common/utils/LOG/log.h"
# define X2AP_INFO(x, args...) LOG_I(X2AP, x, ##args)
# define X2AP_ERROR(x, args...) LOG_E(X2AP, x, ##args)
# define X2AP_WARN(x, args...) LOG_W(X2AP, x, ##args)
# define X2AP_DEBUG(x, args...) LOG_D(X2AP, x, ##args)
#else
# define X2AP_INFO(x, args...) do { fprintf(stdout, "[X2AP][I]"x, ##args); } while(0)
# define X2AP_ERROR(x, args...) do { fprintf(stdout, "[X2AP][E]"x, ##args); } while(0)
# define X2AP_WARN(x, args...) do { fprintf(stdout, "[X2AP][W]"x, ##args); } while(0)
# define X2AP_DEBUG(x, args...) do { fprintf(stdout, "[X2AP][D]"x, ##args); } while(0)
#endif
//Forward declaration
struct x2ap_message_s;
#define X2AP_FIND_PROTOCOLIE_BY_ID(IE_TYPE, ie, container, IE_ID, mandatory) \
do {\
IE_TYPE **ptr; \
ie = NULL; \
for (ptr = container->protocolIEs.list.array; \
ptr < &container->protocolIEs.list.array[container->protocolIEs.list.count]; \
ptr++) { \
if((*ptr)->id == IE_ID) { \
ie = *ptr; \
break; \
} \
} \
if (mandatory) DevAssert(ie != NULL); \
} while(0)
/** \brief Function callback prototype.
**/
typedef int (*x2ap_message_decoded_callback)(
instance_t instance,
uint32_t assocId,
uint32_t stream,
struct x2ap_message_s *message);
X2AP_X2AP_PDU_t *pdu);
/** \brief Encode a successfull outcome message
\param buffer pointer to buffer in which data will be encoded
@@ -323,8 +107,8 @@ typedef int (*x2ap_message_decoded_callback)(
ssize_t x2ap_generate_successfull_outcome(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr);
@@ -340,8 +124,8 @@ ssize_t x2ap_generate_successfull_outcome(
ssize_t x2ap_generate_initiating_message(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr);
@@ -357,28 +141,15 @@ ssize_t x2ap_generate_initiating_message(
ssize_t x2ap_generate_unsuccessfull_outcome(
uint8_t **buffer,
uint32_t *length,
X2ap_ProcedureCode_t procedureCode,
X2ap_Criticality_t criticality,
X2AP_ProcedureCode_t procedureCode,
X2AP_Criticality_t criticality,
asn_TYPE_descriptor_t *td,
void *sptr);
/** \brief Generate a new IE
\param id Protocol ie id of the IE
\param criticality Criticality of the IE
\param type ASN1 type descriptor of the IE value
\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
**/
X2ap_IE_t *x2ap_new_ie(
X2ap_ProtocolIE_ID_t id,
X2ap_Criticality_t criticality,
asn_TYPE_descriptor_t *type,
void *sptr);
/** \brief Handle criticality
\param criticality Criticality of the IE
@returns void
**/
void x2ap_handle_criticality(X2ap_Criticality_t criticality);
void x2ap_handle_criticality(X2AP_Criticality_t criticality);
#endif /* X2AP_COMMON_H_ */
+467
View File
@@ -0,0 +1,467 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <arpa/inet.h>
#include "intertask_interface.h"
#include "x2ap_eNB.h"
#include "x2ap_eNB_defs.h"
#include "x2ap_eNB_management_procedures.h"
#include "x2ap_eNB_handler.h"
#include "x2ap_eNB_generate_messages.h"
#include "x2ap_common.h"
#include "queue.h"
#include "assertions.h"
#include "conversions.h"
struct x2ap_enb_map;
struct x2ap_eNB_data_s;
RB_PROTOTYPE(x2ap_enb_map, x2ap_eNB_data_s, entry, x2ap_eNB_compare_assoc_id);
static
void x2ap_eNB_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_data_ind);
static
void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp);
static
void x2ap_eNB_handle_sctp_association_ind(instance_t instance, sctp_new_association_ind_t *sctp_new_association_ind);
static
void x2ap_eNB_handle_register_eNB(instance_t instance,
x2ap_register_enb_req_t *x2ap_register_eNB);
static
void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
net_ip_address_t *target_eNB_ip_addr,
net_ip_address_t *local_ip_addr,
uint16_t in_streams,
uint16_t out_streams,
uint32_t enb_port_for_X2C,
int multi_sd);
static
void x2ap_eNB_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_data_ind) {
int result;
DevAssert(sctp_data_ind != NULL);
x2ap_eNB_handle_message(instance, sctp_data_ind->assoc_id, sctp_data_ind->stream,
sctp_data_ind->buffer, sctp_data_ind->buffer_length);
result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
}
static
void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp)
{
x2ap_eNB_instance_t *instance_p;
x2ap_eNB_data_t *x2ap_enb_data_p;
DevAssert(sctp_new_association_resp != NULL);
printf("x2ap_eNB_handle_sctp_association_resp at 1\n");
dump_trees();
instance_p = x2ap_eNB_get_instance(instance);
DevAssert(instance_p != NULL);
/* if the assoc_id is already known, it is certainly because an IND was received
* before. In this case, just update streams and return
*/
if (sctp_new_association_resp->assoc_id != -1) {
x2ap_enb_data_p = x2ap_get_eNB(instance_p, sctp_new_association_resp->assoc_id,
sctp_new_association_resp->ulp_cnx_id);
if (x2ap_enb_data_p != NULL) {
/* some sanity check - to be refined at some point */
if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
X2AP_ERROR("x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?\n");
abort();
}
x2ap_enb_data_p->in_streams = sctp_new_association_resp->in_streams;
x2ap_enb_data_p->out_streams = sctp_new_association_resp->out_streams;
return;
}
}
x2ap_enb_data_p = x2ap_get_eNB(instance_p, -1,
sctp_new_association_resp->ulp_cnx_id);
DevAssert(x2ap_enb_data_p != NULL);
printf("x2ap_eNB_handle_sctp_association_resp at 2\n");
dump_trees();
if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
X2AP_WARN("Received unsuccessful result for SCTP association (%u), instance %d, cnx_id %u\n",
sctp_new_association_resp->sctp_state,
instance,
sctp_new_association_resp->ulp_cnx_id);
x2ap_handle_x2_setup_message(x2ap_enb_data_p,
sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
return;
}
printf("x2ap_eNB_handle_sctp_association_resp at 3\n");
dump_trees();
/* Update parameters */
x2ap_enb_data_p->assoc_id = sctp_new_association_resp->assoc_id;
x2ap_enb_data_p->in_streams = sctp_new_association_resp->in_streams;
x2ap_enb_data_p->out_streams = sctp_new_association_resp->out_streams;
printf("x2ap_eNB_handle_sctp_association_resp at 4\n");
dump_trees();
/* Prepare new x2 Setup Request */
x2ap_eNB_generate_x2_setup_request(instance_p, x2ap_enb_data_p);
}
static
void x2ap_eNB_handle_sctp_association_ind(instance_t instance, sctp_new_association_ind_t *sctp_new_association_ind)
{
x2ap_eNB_instance_t *instance_p;
x2ap_eNB_data_t *x2ap_enb_data_p;
printf("x2ap_eNB_handle_sctp_association_ind at 1 (called for instance %d)\n", instance);
dump_trees();
DevAssert(sctp_new_association_ind != NULL);
instance_p = x2ap_eNB_get_instance(instance);
DevAssert(instance_p != NULL);
x2ap_enb_data_p = x2ap_get_eNB(instance_p, sctp_new_association_ind->assoc_id, -1);
if (x2ap_enb_data_p != NULL) abort();
// DevAssert(x2ap_enb_data_p != NULL);
if (x2ap_enb_data_p == NULL) {
/* Create new eNB descriptor */
x2ap_enb_data_p = calloc(1, sizeof(*x2ap_enb_data_p));
DevAssert(x2ap_enb_data_p != NULL);
x2ap_enb_data_p->cnx_id = x2ap_eNB_fetch_add_global_cnx_id();
x2ap_enb_data_p->x2ap_eNB_instance = instance_p;
/* Insert the new descriptor in list of known eNB
* but not yet associated.
*/
RB_INSERT(x2ap_enb_map, &instance_p->x2ap_enb_head, x2ap_enb_data_p);
x2ap_enb_data_p->state = X2AP_ENB_STATE_CONNECTED;
instance_p->x2_target_enb_nb++;
if (instance_p->x2_target_enb_pending_nb > 0) {
instance_p->x2_target_enb_pending_nb--;
}
} else {
X2AP_WARN("x2ap_enb_data_p already exists\n");
}
printf("x2ap_eNB_handle_sctp_association_ind at 2\n");
dump_trees();
/* Update parameters */
x2ap_enb_data_p->assoc_id = sctp_new_association_ind->assoc_id;
x2ap_enb_data_p->in_streams = sctp_new_association_ind->in_streams;
x2ap_enb_data_p->out_streams = sctp_new_association_ind->out_streams;
printf("x2ap_eNB_handle_sctp_association_ind at 3\n");
dump_trees();
}
int x2ap_eNB_init_sctp (x2ap_eNB_instance_t *instance_p,
net_ip_address_t *local_ip_addr,
uint32_t enb_port_for_X2C)
{
// Create and alloc new message
MessageDef *message;
sctp_init_t *sctp_init = NULL;
DevAssert(instance_p != NULL);
DevAssert(local_ip_addr != NULL);
message = itti_alloc_new_message (TASK_X2AP, SCTP_INIT_MSG_MULTI_REQ);
sctp_init = &message->ittiMsg.sctp_init_multi;
sctp_init->port = enb_port_for_X2C;
sctp_init->ppid = X2AP_SCTP_PPID;
sctp_init->ipv4 = 1;
sctp_init->ipv6 = 0;
sctp_init->nb_ipv4_addr = 1;
#if 0
memcpy(&sctp_init->ipv4_address,
local_ip_addr,
sizeof(*local_ip_addr));
#endif
sctp_init->ipv4_address[0] = inet_addr(local_ip_addr->ipv4_address);
/*
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
* * * * Disable it for now.
*/
sctp_init->nb_ipv6_addr = 0;
sctp_init->ipv6_address[0] = "0:0:0:0:0:0:0:1";
return itti_send_msg_to_task (TASK_SCTP, instance_p->instance, message);
}
static void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
net_ip_address_t *target_eNB_ip_address,
net_ip_address_t *local_ip_addr,
uint16_t in_streams,
uint16_t out_streams,
uint32_t enb_port_for_X2C,
int multi_sd)
{
MessageDef *message = NULL;
sctp_new_association_req_multi_t *sctp_new_association_req = NULL;
x2ap_eNB_data_t *x2ap_enb_data = NULL;
DevAssert(instance_p != NULL);
DevAssert(target_eNB_ip_address != NULL);
message = itti_alloc_new_message(TASK_X2AP, SCTP_NEW_ASSOCIATION_REQ_MULTI);
sctp_new_association_req = &message->ittiMsg.sctp_new_association_req_multi;
sctp_new_association_req->port = enb_port_for_X2C;
sctp_new_association_req->ppid = X2AP_SCTP_PPID;
sctp_new_association_req->in_streams = in_streams;
sctp_new_association_req->out_streams = out_streams;
sctp_new_association_req->multi_sd = multi_sd;
memcpy(&sctp_new_association_req->remote_address,
target_eNB_ip_address,
sizeof(*target_eNB_ip_address));
memcpy(&sctp_new_association_req->local_address,
local_ip_addr,
sizeof(*local_ip_addr));
/* Create new eNB descriptor */
x2ap_enb_data = calloc(1, sizeof(*x2ap_enb_data));
DevAssert(x2ap_enb_data != NULL);
x2ap_enb_data->cnx_id = x2ap_eNB_fetch_add_global_cnx_id();
sctp_new_association_req->ulp_cnx_id = x2ap_enb_data->cnx_id;
x2ap_enb_data->assoc_id = -1;
x2ap_enb_data->x2ap_eNB_instance = instance_p;
/* Insert the new descriptor in list of known eNB
* but not yet associated.
*/
RB_INSERT(x2ap_enb_map, &instance_p->x2ap_enb_head, x2ap_enb_data);
x2ap_enb_data->state = X2AP_ENB_STATE_WAITING;
instance_p->x2_target_enb_nb ++;
instance_p->x2_target_enb_pending_nb ++;
itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message);
}
static
void x2ap_eNB_handle_register_eNB(instance_t instance,
x2ap_register_enb_req_t *x2ap_register_eNB)
{
x2ap_eNB_instance_t *new_instance;
DevAssert(x2ap_register_eNB != NULL);
/* Look if the provided instance already exists */
new_instance = x2ap_eNB_get_instance(instance);
if (new_instance != NULL) {
/* Checks if it is a retry on the same eNB */
DevCheck(new_instance->eNB_id == x2ap_register_eNB->eNB_id, new_instance->eNB_id, x2ap_register_eNB->eNB_id, 0);
DevCheck(new_instance->cell_type == x2ap_register_eNB->cell_type, new_instance->cell_type, x2ap_register_eNB->cell_type, 0);
DevCheck(new_instance->tac == x2ap_register_eNB->tac, new_instance->tac, x2ap_register_eNB->tac, 0);
DevCheck(new_instance->mcc == x2ap_register_eNB->mcc, new_instance->mcc, x2ap_register_eNB->mcc, 0);
DevCheck(new_instance->mnc == x2ap_register_eNB->mnc, new_instance->mnc, x2ap_register_eNB->mnc, 0);
X2AP_WARN("eNB[%d] already registered\n", instance);
}
else {
new_instance = calloc(1, sizeof(x2ap_eNB_instance_t));
DevAssert(new_instance != NULL);
RB_INIT(&new_instance->x2ap_enb_head);
/* Copy usefull parameters */
new_instance->instance = instance;
new_instance->eNB_name = x2ap_register_eNB->eNB_name;
new_instance->eNB_id = x2ap_register_eNB->eNB_id;
new_instance->cell_type = x2ap_register_eNB->cell_type;
new_instance->tac = x2ap_register_eNB->tac;
new_instance->mcc = x2ap_register_eNB->mcc;
new_instance->mnc = x2ap_register_eNB->mnc;
new_instance->mnc_digit_length = x2ap_register_eNB->mnc_digit_length;
new_instance->num_cc = x2ap_register_eNB->num_cc;
for (int i = 0; i< x2ap_register_eNB->num_cc; i++){
new_instance->eutra_band[i] = x2ap_register_eNB->eutra_band[i];
new_instance->downlink_frequency[i] = x2ap_register_eNB->downlink_frequency[i];
new_instance->uplink_frequency_offset[i] = x2ap_register_eNB->uplink_frequency_offset[i];
new_instance->Nid_cell[i] = x2ap_register_eNB->Nid_cell[i];
new_instance->N_RB_DL[i] = x2ap_register_eNB->N_RB_DL[i];
new_instance->frame_type[i] = x2ap_register_eNB->frame_type[i];
new_instance->fdd_earfcn_DL[i] = x2ap_register_eNB->fdd_earfcn_DL[i];
new_instance->fdd_earfcn_UL[i] = x2ap_register_eNB->fdd_earfcn_UL[i];
}
DevCheck(x2ap_register_eNB->nb_x2 <= X2AP_MAX_NB_ENB_IP_ADDRESS,
X2AP_MAX_NB_ENB_IP_ADDRESS, x2ap_register_eNB->nb_x2, 0);
memcpy(new_instance->target_enb_x2_ip_address,
x2ap_register_eNB->target_enb_x2_ip_address,
x2ap_register_eNB->nb_x2 * sizeof(net_ip_address_t));
new_instance->nb_x2 = x2ap_register_eNB->nb_x2;
new_instance->enb_x2_ip_address = x2ap_register_eNB->enb_x2_ip_address;
new_instance->sctp_in_streams = x2ap_register_eNB->sctp_in_streams;
new_instance->sctp_out_streams = x2ap_register_eNB->sctp_out_streams;
new_instance->enb_port_for_X2C = x2ap_register_eNB->enb_port_for_X2C;
/* Add the new instance to the list of eNB (meaningfull in virtual mode) */
x2ap_eNB_insert_new_instance(new_instance);
X2AP_INFO("Registered new eNB[%d] and %s eNB id %u\n",
instance,
x2ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
x2ap_register_eNB->eNB_id);
/* initiate the SCTP listener */
if (x2ap_eNB_init_sctp(new_instance,&x2ap_register_eNB->enb_x2_ip_address,x2ap_register_eNB->enb_port_for_X2C) < 0 ) {
X2AP_ERROR ("Error while sending SCTP_INIT_MSG to SCTP \n");
return;
}
X2AP_INFO("eNB[%d] eNB id %u acting as a listner (server)\n",
instance, x2ap_register_eNB->eNB_id);
}
}
static
void x2ap_eNB_handle_sctp_init_msg_multi_cnf(
instance_t instance_id,
sctp_init_msg_multi_cnf_t *m)
{
x2ap_eNB_instance_t *instance;
int index;
DevAssert(m != NULL);
instance = x2ap_eNB_get_instance(instance_id);
DevAssert(instance != NULL);
instance->multi_sd = m->multi_sd;
/* Exit if CNF message reports failure.
* Failure means multi_sd < 0.
*/
if (instance->multi_sd < 0) {
X2AP_ERROR("Error: be sure to properly configure X2 in your configuration file.\n");
DevAssert(instance->multi_sd >= 0);
}
/* Trying to connect to the provided list of eNB ip address */
for (index = 0; index < instance->nb_x2; index++) {
X2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n",
instance_id, instance->eNB_id);
x2ap_eNB_register_eNB(instance,
&instance->target_enb_x2_ip_address[index],
&instance->enb_x2_ip_address,
instance->sctp_in_streams,
instance->sctp_out_streams,
instance->enb_port_for_X2C,
instance->multi_sd);
}
}
void *x2ap_task(void *arg)
{
MessageDef *received_msg = NULL;
int result;
X2AP_DEBUG("Starting X2AP layer\n");
x2ap_eNB_prepare_internal_data();
itti_mark_task_ready(TASK_X2AP);
while (1) {
itti_receive_msg(TASK_X2AP, &received_msg);
switch (ITTI_MSG_ID(received_msg)) {
case TERMINATE_MESSAGE:
X2AP_WARN(" *** Exiting X2AP thread\n");
itti_exit_task();
break;
case X2AP_REGISTER_ENB_REQ:
x2ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
&X2AP_REGISTER_ENB_REQ(received_msg));
break;
case SCTP_INIT_MSG_MULTI_CNF:
x2ap_eNB_handle_sctp_init_msg_multi_cnf(ITTI_MESSAGE_GET_INSTANCE(received_msg),
&received_msg->ittiMsg.sctp_init_msg_multi_cnf);
break;
case SCTP_NEW_ASSOCIATION_RESP:
x2ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
&received_msg->ittiMsg.sctp_new_association_resp);
break;
case SCTP_NEW_ASSOCIATION_IND:
x2ap_eNB_handle_sctp_association_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
&received_msg->ittiMsg.sctp_new_association_ind);
break;
case SCTP_DATA_IND:
x2ap_eNB_handle_sctp_data_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
&received_msg->ittiMsg.sctp_data_ind);
break;
default:
X2AP_ERROR("Received unhandled message: %d:%s\n",
ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break;
}
result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
received_msg = NULL;
}
return NULL;
}
@@ -30,13 +30,12 @@
#ifndef X2AP_H_
#define X2AP_H_
typedef struct x2ap_config_s {
} x2ap_config_t;
#define X2AP_SCTP_PPID (27) ///< X2AP SCTP Payload Protocol Identifier (PPID)
#include "x2ap_eNB_defs.h"
#if defined(OAI_EMU)
#else
extern x2ap_config_t x2ap_config;
#endif
int x2ap_eNB_init_sctp (x2ap_eNB_instance_t *instance_p,
net_ip_address_t *local_ip_addr,
uint32_t enb_port_for_X2C);
void *x2ap_task(void *arg);
+127
View File
@@ -0,0 +1,127 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdio.h>
#include "assertions.h"
#include "intertask_interface.h"
#include "x2ap_common.h"
#include "x2ap_eNB_decoder.h"
static int x2ap_eNB_decode_initiating_message(X2AP_X2AP_PDU_t *pdu)
{
DevAssert(pdu != NULL);
switch(pdu->choice.initiatingMessage.procedureCode) {
case X2AP_ProcedureCode_id_x2Setup:
asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_X2AP_X2AP_PDU, pdu);
X2AP_INFO("x2ap_eNB_decode_initiating_message!\n");
break;
default:
X2AP_ERROR("Unknown procedure ID (%d) for initiating message\n",
(int)pdu->choice.initiatingMessage.procedureCode);
AssertFatal( 0, "Unknown procedure ID (%d) for initiating message\n",
(int)pdu->choice.initiatingMessage.procedureCode);
return -1;
}
return 0;
}
static int x2ap_eNB_decode_successful_outcome(X2AP_X2AP_PDU_t *pdu)
{
DevAssert(pdu != NULL);
switch(pdu->choice.successfulOutcome.procedureCode) {
case X2AP_ProcedureCode_id_x2Setup:
asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_X2AP_X2AP_PDU, pdu);
X2AP_INFO("x2ap_eNB_decode_successfuloutcome_message!\n");
break;
default:
X2AP_ERROR("Unknown procedure ID (%d) for successfull outcome message\n",
(int)pdu->choice.successfulOutcome.procedureCode);
return -1;
}
return 0;
}
static int x2ap_eNB_decode_unsuccessful_outcome(X2AP_X2AP_PDU_t *pdu)
{
DevAssert(pdu != NULL);
switch(pdu->choice.unsuccessfulOutcome.procedureCode) {
case X2AP_ProcedureCode_id_x2Setup:
asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_X2AP_X2AP_PDU, pdu);
X2AP_INFO("x2ap_eNB_decode_unsuccessfuloutcome_message!\n");
break;
default:
X2AP_ERROR("Unknown procedure ID (%d) for unsuccessfull outcome message\n",
(int)pdu->choice.unsuccessfulOutcome.procedureCode);
return -1;
}
return 0;
}
int x2ap_eNB_decode_pdu(X2AP_X2AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t length)
{
asn_dec_rval_t dec_ret;
DevAssert(buffer != NULL);
dec_ret = aper_decode(NULL,
&asn_DEF_X2AP_X2AP_PDU,
(void **)&pdu,
buffer,
length,
0,
0);
xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, pdu);
if (dec_ret.code != RC_OK) {
X2AP_ERROR("Failed to decode pdu\n");
return -1;
}
switch(pdu->present) {
case X2AP_X2AP_PDU_PR_initiatingMessage:
return x2ap_eNB_decode_initiating_message(pdu);
case X2AP_X2AP_PDU_PR_successfulOutcome:
return x2ap_eNB_decode_successful_outcome(pdu);
case X2AP_X2AP_PDU_PR_unsuccessfulOutcome:
return x2ap_eNB_decode_unsuccessful_outcome(pdu);
default:
X2AP_DEBUG("Unknown presence (%d) or not implemented\n", (int)pdu->present);
break;
}
return -1;
}
+29
View File
@@ -0,0 +1,29 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_DECODER_H_
#define X2AP_ENB_DECODER_H_
int x2ap_eNB_decode_pdu(X2AP_X2AP_PDU_t *pdu, const uint8_t *const buffer, uint32_t length)
__attribute__ ((warn_unused_result));
#endif /* X2AP_ENB_DECODER_H_ */
+195
View File
@@ -0,0 +1,195 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdint.h>
#include "queue.h"
#include "tree.h"
#include "sctp_eNB_defs.h"
#ifndef X2AP_ENB_DEFS_H_
#define X2AP_ENB_DEFS_H_
#define X2AP_ENB_NAME_LENGTH_MAX (150)
typedef enum {
/* Disconnected state: initial state for any association. */
X2AP_ENB_STATE_DISCONNECTED = 0x0,
/* State waiting for x2 Setup response message if the target eNB accepts or
* X2 Setup failure if rejects the eNB.
*/
X2AP_ENB_STATE_WAITING = 0x1,
/* The eNB is successfully connected to another eNB. */
X2AP_ENB_STATE_CONNECTED = 0x2,
/* X2AP is ready, and the eNB is successfully connected to another eNB. */
X2AP_ENB_STATE_READY = 0x3,
X2AP_ENB_STATE_OVERLOAD = 0x4,
X2AP_ENB_STATE_RESETTING = 0x5,
/* Max number of states available */
X2AP_ENB_STATE_MAX,
} x2ap_eNB_state_t;
/* Served PLMN identity element */
struct plmn_identity_s {
uint16_t mcc;
uint16_t mnc;
uint8_t mnc_digit_length;
STAILQ_ENTRY(plmn_identity_s) next;
};
/* Served group id element */
struct served_group_id_s {
uint16_t enb_group_id;
STAILQ_ENTRY(served_group_id_s) next;
};
/* Served enn code for a particular eNB */
struct enb_code_s {
uint8_t enb_code;
STAILQ_ENTRY(enb_code_s) next;
};
struct x2ap_eNB_instance_s;
/* This structure describes association of a eNB to another eNB */
typedef struct x2ap_eNB_data_s {
/* eNB descriptors tree, ordered by sctp assoc id */
RB_ENTRY(x2ap_eNB_data_s) entry;
/* This is the optional name provided by the MME */
char *eNB_name;
/* target eNB ID */
uint32_t eNB_id;
/* Current eNB load information (if any). */
//x2ap_load_state_t overload_state;
/* Current eNB->eNB X2AP association state */
x2ap_eNB_state_t state;
/* Next usable stream for UE signalling */
int32_t nextstream;
/* Number of input/ouput streams */
uint16_t in_streams;
uint16_t out_streams;
/* Connexion id used between SCTP/X2AP */
uint16_t cnx_id;
/* SCTP association id */
int32_t assoc_id;
/* Only meaningfull in virtual mode */
struct x2ap_eNB_instance_s *x2ap_eNB_instance;
} x2ap_eNB_data_t;
typedef struct x2ap_eNB_instance_s {
/* used in simulation to store multiple eNB instances*/
STAILQ_ENTRY(x2ap_eNB_instance_s) x2ap_eNB_entries;
/* Number of target eNBs requested by eNB (tree size) */
uint32_t x2_target_enb_nb;
/* Number of target eNBs for which association is pending */
uint32_t x2_target_enb_pending_nb;
/* Number of target eNB successfully associated to eNB */
uint32_t x2_target_enb_associated_nb;
/* Tree of X2AP eNB associations ordered by association ID */
RB_HEAD(x2ap_enb_map, x2ap_eNB_data_s) x2ap_enb_head;
/* Tree of UE ordered by eNB_ue_x2ap_id's */
// RB_HEAD(x2ap_ue_map, x2ap_eNB_ue_context_s) x2ap_ue_head;
/* For virtual mode, mod_id as defined in the rest of the L1/L2 stack */
instance_t instance;
/* Displayable name of eNB */
char *eNB_name;
/* Unique eNB_id to identify the eNB within EPC.
* In our case the eNB is a macro eNB so the id will be 20 bits long.
* For Home eNB id, this field should be 28 bits long.
*/
uint32_t eNB_id;
/* The type of the cell */
cell_type_t cell_type;
/* Tracking area code */
uint16_t tac;
/* Mobile Country Code
* Mobile Network Code
*/
uint16_t mcc;
uint16_t mnc;
uint8_t mnc_digit_length;
/* CC params */
int16_t eutra_band[MAX_NUM_CCs];
uint32_t downlink_frequency[MAX_NUM_CCs];
int32_t uplink_frequency_offset[MAX_NUM_CCs];
uint32_t Nid_cell[MAX_NUM_CCs];
int16_t N_RB_DL[MAX_NUM_CCs];
lte_frame_type_t frame_type[MAX_NUM_CCs];
uint32_t fdd_earfcn_DL[MAX_NUM_CCs];
uint32_t fdd_earfcn_UL[MAX_NUM_CCs];
int num_cc;
net_ip_address_t target_enb_x2_ip_address[X2AP_MAX_NB_ENB_IP_ADDRESS];
uint8_t nb_x2;
net_ip_address_t enb_x2_ip_address;
uint16_t sctp_in_streams;
uint16_t sctp_out_streams;
uint32_t enb_port_for_X2C;
int multi_sd;
} x2ap_eNB_instance_t;
typedef struct {
/* List of served eNBs
* Only used for virtual mode
*/
STAILQ_HEAD(x2ap_eNB_instances_head_s, x2ap_eNB_instance_s) x2ap_eNB_instances_head;
/* Nb of registered eNBs */
uint8_t nb_registered_eNBs;
/* Generate a unique connexion id used between X2AP and SCTP */
uint16_t global_cnx_id;
} x2ap_eNB_internal_data_t;
int x2ap_eNB_compare_assoc_id(struct x2ap_eNB_data_s *p1, struct x2ap_eNB_data_s *p2);
/* Generate the tree management functions */
struct x2ap_eNB_map;
struct x2ap_eNB_data_s;
RB_PROTOTYPE(x2ap_eNB_map, x2ap_eNB_data_s, entry, x2ap_eNB_compare_assoc_id);
#endif /* X2AP_ENB_DEFS_H_ */
@@ -19,52 +19,36 @@
* contact@openairinterface.org
*/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include "intertask_interface.h"
#include "x2ap.h"
#include "assertions.h"
#include "conversions.h"
#include "intertask_interface.h"
#include "x2ap_common.h"
#include "x2ap_eNB_encoder.h"
void *x2ap_task(void *arg)
int x2ap_eNB_encode_pdu(X2AP_X2AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
{
MessageDef *received_msg = NULL;
int result;
ssize_t encoded;
X2AP_DEBUG("Starting X2AP layer\n");
DevAssert(pdu != NULL);
DevAssert(buffer != NULL);
DevAssert(len != NULL);
x2ap_prepare_internal_data();
itti_mark_task_ready(TASK_X2AP);
while (1) {
itti_receive_msg(TASK_X2AP, &received_msg);
switch (ITTI_MSG_ID(received_msg)) {
case TERMINATE_MESSAGE:
itti_exit_task();
break;
default:
X2AP_ERROR("Received unhandled message: %d:%s\n",
ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
break;
}
result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
received_msg = NULL;
if (asn1_xer_print) {
xer_fprint(stdout, &asn_DEF_X2AP_X2AP_PDU, (void *)pdu);
}
return NULL;
encoded = aper_encode_to_new_buffer(&asn_DEF_X2AP_X2AP_PDU, 0, pdu, (void **)buffer);
if (encoded < 0) {
return -1;
}
*len = encoded;
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_X2AP_PDU, pdu);
return encoded;
}
+28
View File
@@ -0,0 +1,28 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_ENCODER_H_
#define X2AP_ENB_ENCODER_H_
int x2ap_eNB_encode_pdu(X2AP_X2AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
__attribute__ ((warn_unused_result));
#endif /* X2AP_ENB_ENCODER_H_ */
+405
View File
@@ -0,0 +1,405 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "intertask_interface.h"
#include "x2ap_common.h"
#include "x2ap_eNB.h"
#include "x2ap_eNB_generate_messages.h"
#include "x2ap_eNB_encoder.h"
#include "x2ap_eNB_itti_messaging.h"
#include "msc.h"
#include "assertions.h"
#include "conversions.h"
int x2ap_eNB_generate_x2_setup_request(
x2ap_eNB_instance_t *instance_p, x2ap_eNB_data_t *x2ap_eNB_data_p)
{
X2AP_X2AP_PDU_t pdu;
X2AP_X2SetupRequest_t *out;
X2AP_X2SetupRequest_IEs_t *ie;
X2AP_PLMN_Identity_t *plmn;
ServedCells__Member *servedCellMember;
X2AP_GU_Group_ID_t *gu;
uint8_t *buffer;
uint32_t len;
int ret = 0;
DevAssert(instance_p != NULL);
DevAssert(x2ap_eNB_data_p != NULL);
x2ap_eNB_data_p->state = X2AP_ENB_STATE_WAITING;
/* Prepare the X2AP message to encode */
memset(&pdu, 0, sizeof(pdu));
pdu.present = X2AP_X2AP_PDU_PR_initiatingMessage;
pdu.choice.initiatingMessage.procedureCode = X2AP_ProcedureCode_id_x2Setup;
pdu.choice.initiatingMessage.criticality = X2AP_Criticality_reject;
pdu.choice.initiatingMessage.value.present = X2AP_InitiatingMessage__value_PR_X2SetupRequest;
out = &pdu.choice.initiatingMessage.value.choice.X2SetupRequest;
/* mandatory */
ie = (X2AP_X2SetupRequest_IEs_t *)calloc(1, sizeof(X2AP_X2SetupRequest_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_GlobalENB_ID;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupRequest_IEs__value_PR_GlobalENB_ID;
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&ie->value.choice.GlobalENB_ID.pLMN_Identity);
ie->value.choice.GlobalENB_ID.eNB_ID.present = X2AP_ENB_ID_PR_macro_eNB_ID;
MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
&ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID);
X2AP_INFO("%d -> %02x%02x%02x\n", instance_p->eNB_id,
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[0],
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[1],
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[2]);
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
ie = (X2AP_X2SetupRequest_IEs_t *)calloc(1, sizeof(X2AP_X2SetupRequest_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_ServedCells;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupRequest_IEs__value_PR_ServedCells;
{
for (int i = 0; i<instance_p->num_cc; i++){
servedCellMember = (ServedCells__Member *)calloc(1,sizeof(ServedCells__Member));
{
servedCellMember->servedCellInfo.pCI = instance_p->Nid_cell[i];
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&servedCellMember->servedCellInfo.cellId.pLMN_Identity);
MACRO_ENB_ID_TO_CELL_IDENTITY(instance_p->eNB_id,0,
&servedCellMember->servedCellInfo.cellId.eUTRANcellIdentifier);
INT16_TO_OCTET_STRING(instance_p->tac, &servedCellMember->servedCellInfo.tAC);
plmn = (X2AP_PLMN_Identity_t *)calloc(1,sizeof(X2AP_PLMN_Identity_t));
{
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length, plmn);
ASN_SEQUENCE_ADD(&servedCellMember->servedCellInfo.broadcastPLMNs.list, plmn);
}
if (instance_p->frame_type[i] == FDD) {
servedCellMember->servedCellInfo.eUTRA_Mode_Info.present = X2AP_EUTRA_Mode_Info_PR_fDD;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_EARFCN = instance_p->fdd_earfcn_DL[i];
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_EARFCN = instance_p->fdd_earfcn_UL[i];
switch (instance_p->N_RB_DL[i]) {
case 6:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw6;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw6;
break;
case 15:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw15;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw15;
break;
case 25:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw25;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw25;
break;
case 50:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw50;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw50;
break;
case 75:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw75;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw75;
break;
case 100:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw100;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw100;
break;
default:
AssertFatal(0,"Failed: Check value for N_RB_DL/N_RB_UL");
break;
}
}
else {
AssertFatal(0,"X2Setuprequest not supported for TDD!");
}
}
ASN_SEQUENCE_ADD(&ie->value.choice.ServedCells.list, servedCellMember);
}
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
ie = (X2AP_X2SetupRequest_IEs_t *)calloc(1, sizeof(X2AP_X2SetupRequest_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_GUGroupIDList;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupRequest_IEs__value_PR_GUGroupIDList;
{
gu = (X2AP_GU_Group_ID_t *)calloc(1, sizeof(X2AP_GU_Group_ID_t));
{
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&gu->pLMN_Identity);
//@TODO: consider to update this value
INT16_TO_OCTET_STRING(0, &gu->mME_Group_ID);
}
ASN_SEQUENCE_ADD(&ie->value.choice.GUGroupIDList.list, gu);
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
if (x2ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
X2AP_ERROR("Failed to encode X2 setup request\n");
return -1;
}
MSC_LOG_TX_MESSAGE (MSC_X2AP_SRC_ENB, MSC_X2AP_TARGET_ENB, NULL, 0, "0 X2Setup/initiatingMessage assoc_id %u", x2ap_eNB_data_p->assoc_id);
x2ap_eNB_itti_send_sctp_data_req(instance_p->instance, x2ap_eNB_data_p->assoc_id, buffer, len, 0);
return ret;
}
int x2ap_eNB_generate_x2_setup_response(x2ap_eNB_data_t *x2ap_eNB_data_p)
{
X2AP_X2AP_PDU_t pdu;
X2AP_X2SetupResponse_t *out;
X2AP_X2SetupResponse_IEs_t *ie;
X2AP_PLMN_Identity_t *plmn;
ServedCells__Member *servedCellMember;
X2AP_GU_Group_ID_t *gu;
x2ap_eNB_instance_t *instance_p;
uint8_t *buffer;
uint32_t len;
int ret = 0;
DevAssert(x2ap_eNB_data_p != NULL);
/* get the eNB instance */
instance_p = x2ap_eNB_data_p->x2ap_eNB_instance;
DevAssert(instance_p != NULL);
/* Prepare the X2AP message to encode */
memset(&pdu, 0, sizeof(pdu));
pdu.present = X2AP_X2AP_PDU_PR_successfulOutcome;
pdu.choice.successfulOutcome.procedureCode = X2AP_ProcedureCode_id_x2Setup;
pdu.choice.successfulOutcome.criticality = X2AP_Criticality_reject;
pdu.choice.successfulOutcome.value.present = X2AP_SuccessfulOutcome__value_PR_X2SetupResponse;
out = &pdu.choice.successfulOutcome.value.choice.X2SetupResponse;
/* mandatory */
ie = (X2AP_X2SetupResponse_IEs_t *)calloc(1, sizeof(X2AP_X2SetupResponse_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_GlobalENB_ID;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupResponse_IEs__value_PR_GlobalENB_ID;
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&ie->value.choice.GlobalENB_ID.pLMN_Identity);
ie->value.choice.GlobalENB_ID.eNB_ID.present = X2AP_ENB_ID_PR_macro_eNB_ID;
MACRO_ENB_ID_TO_BIT_STRING(instance_p->eNB_id,
&ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID);
X2AP_INFO("%d -> %02x%02x%02x\n", instance_p->eNB_id,
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[0],
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[1],
ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf[2]);
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
ie = (X2AP_X2SetupResponse_IEs_t *)calloc(1, sizeof(X2AP_X2SetupResponse_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_ServedCells;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupResponse_IEs__value_PR_ServedCells;
{
for (int i = 0; i<instance_p->num_cc; i++){
servedCellMember = (ServedCells__Member *)calloc(1,sizeof(ServedCells__Member));
{
servedCellMember->servedCellInfo.pCI = instance_p->Nid_cell[i];
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&servedCellMember->servedCellInfo.cellId.pLMN_Identity);
MACRO_ENB_ID_TO_CELL_IDENTITY(instance_p->eNB_id,0,
&servedCellMember->servedCellInfo.cellId.eUTRANcellIdentifier);
INT16_TO_OCTET_STRING(instance_p->tac, &servedCellMember->servedCellInfo.tAC);
plmn = (X2AP_PLMN_Identity_t *)calloc(1,sizeof(X2AP_PLMN_Identity_t));
{
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length, plmn);
ASN_SEQUENCE_ADD(&servedCellMember->servedCellInfo.broadcastPLMNs.list, plmn);
}
if (instance_p->frame_type[i] == FDD) {
servedCellMember->servedCellInfo.eUTRA_Mode_Info.present = X2AP_EUTRA_Mode_Info_PR_fDD;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_EARFCN = instance_p->fdd_earfcn_DL[i];
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_EARFCN = instance_p->fdd_earfcn_UL[i];
switch (instance_p->N_RB_DL[i]) {
case 6:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw6;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw6;
break;
case 15:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw15;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw15;
break;
case 25:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw25;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw25;
break;
case 50:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw50;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw50;
break;
case 75:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw75;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw75;
break;
case 100:
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.uL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw100;
servedCellMember->servedCellInfo.eUTRA_Mode_Info.choice.fDD.dL_Transmission_Bandwidth = X2AP_Transmission_Bandwidth_bw100;
break;
default:
AssertFatal(0,"Failed: Check value for N_RB_DL/N_RB_UL");
break;
}
}
else {
AssertFatal(0,"X2Setupresponse not supported for TDD!");
}
}
ASN_SEQUENCE_ADD(&ie->value.choice.ServedCells.list, servedCellMember);
}
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* mandatory */
ie = (X2AP_X2SetupResponse_IEs_t *)calloc(1, sizeof(X2AP_X2SetupResponse_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_GUGroupIDList;
ie->criticality = X2AP_Criticality_reject;
ie->value.present = X2AP_X2SetupResponse_IEs__value_PR_GUGroupIDList;
{
gu = (X2AP_GU_Group_ID_t *)calloc(1, sizeof(X2AP_GU_Group_ID_t));
{
MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length,
&gu->pLMN_Identity);
//@TODO: consider to update this value
INT16_TO_OCTET_STRING(0, &gu->mME_Group_ID);
}
ASN_SEQUENCE_ADD(&ie->value.choice.GUGroupIDList.list, gu);
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
if (x2ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
X2AP_ERROR("Failed to encode X2 setup response\n");
return -1;
}
x2ap_eNB_data_p->state = X2AP_ENB_STATE_READY;
MSC_LOG_TX_MESSAGE (MSC_X2AP_SRC_ENB, MSC_X2AP_TARGET_ENB, NULL, 0, "0 X2Setup/successfulOutcome assoc_id %u", x2ap_eNB_data_p->assoc_id);
x2ap_eNB_itti_send_sctp_data_req(instance_p->instance, x2ap_eNB_data_p->assoc_id, buffer, len, 0);
return ret;
}
int x2ap_eNB_generate_x2_setup_failure(instance_t instance,
uint32_t assoc_id,
X2AP_Cause_PR cause_type,
long cause_value,
long time_to_wait)
{
X2AP_X2AP_PDU_t pdu;
X2AP_X2SetupFailure_t *out;
X2AP_X2SetupFailure_IEs_t *ie;
uint8_t *buffer;
uint32_t len;
int ret = 0;
/* Prepare the X2AP message to encode */
memset(&pdu, 0, sizeof(pdu));
pdu.present = X2AP_X2AP_PDU_PR_unsuccessfulOutcome;
pdu.choice.unsuccessfulOutcome.procedureCode = X2AP_ProcedureCode_id_x2Setup;
pdu.choice.unsuccessfulOutcome.criticality = X2AP_Criticality_reject;
pdu.choice.unsuccessfulOutcome.value.present = X2AP_UnsuccessfulOutcome__value_PR_X2SetupFailure;
out = &pdu.choice.unsuccessfulOutcome.value.choice.X2SetupFailure;
/* mandatory */
ie = (X2AP_X2SetupFailure_IEs_t *)calloc(1, sizeof(X2AP_X2SetupFailure_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_Cause;
ie->criticality = X2AP_Criticality_ignore;
ie->value.present = X2AP_X2SetupFailure_IEs__value_PR_Cause;
x2ap_eNB_set_cause (&ie->value.choice.Cause, cause_type, cause_value);
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
/* optional: consider to handle this later */
ie = (X2AP_X2SetupFailure_IEs_t *)calloc(1, sizeof(X2AP_X2SetupFailure_IEs_t));
ie->id = X2AP_ProtocolIE_ID_id_TimeToWait;
ie->criticality = X2AP_Criticality_ignore;
ie->value.present = X2AP_X2SetupFailure_IEs__value_PR_TimeToWait;
if (time_to_wait > -1) {
ie->value.choice.TimeToWait = time_to_wait;
}
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
if (x2ap_eNB_encode_pdu(&pdu, &buffer, &len) < 0) {
X2AP_ERROR("Failed to encode X2 setup failure\n");
return -1;
}
MSC_LOG_TX_MESSAGE (MSC_X2AP_SRC_ENB,
MSC_X2AP_TARGET_ENB, NULL, 0,
"0 X2Setup/unsuccessfulOutcome assoc_id %u cause %u value %u",
assoc_id, cause_type, cause_value);
x2ap_eNB_itti_send_sctp_data_req(instance, assoc_id, buffer, len, 0);
return ret;
}
int x2ap_eNB_set_cause (X2AP_Cause_t * cause_p,
X2AP_Cause_PR cause_type,
long cause_value)
{
DevAssert (cause_p != NULL);
cause_p->present = cause_type;
switch (cause_type) {
case X2AP_Cause_PR_radioNetwork:
cause_p->choice.misc = cause_value;
break;
case X2AP_Cause_PR_transport:
cause_p->choice.misc = cause_value;
break;
case X2AP_Cause_PR_protocol:
cause_p->choice.misc = cause_value;
break;
case X2AP_Cause_PR_misc:
cause_p->choice.misc = cause_value;
break;
default:
return -1;
}
return 0;
}
@@ -0,0 +1,44 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_GENERATE_MESSAGES_H_
#define X2AP_ENB_GENERATE_MESSAGES_H_
#include "x2ap_eNB_defs.h"
#include "x2ap_common.h"
int x2ap_eNB_generate_x2_setup_request(x2ap_eNB_instance_t *instance_p,
x2ap_eNB_data_t *x2ap_enb_data_p);
int x2ap_eNB_generate_x2_setup_response(x2ap_eNB_data_t *x2ap_enb_data_p);
int x2ap_eNB_generate_x2_setup_failure(instance_t instance,
uint32_t assoc_id,
X2AP_Cause_PR cause_type,
long cause_value,
long time_to_wait);
int x2ap_eNB_set_cause (X2AP_Cause_t * cause_p,
X2AP_Cause_PR cause_type,
long cause_value);
#endif /* X2AP_ENB_GENERATE_MESSAGES_H_ */
+432
View File
@@ -0,0 +1,432 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdint.h>
#include "intertask_interface.h"
#include "asn1_conversions.h"
#include "x2ap_common.h"
#include "x2ap_eNB_defs.h"
#include "x2ap_eNB_handler.h"
#include "x2ap_eNB_decoder.h"
#include "x2ap_eNB_management_procedures.h"
#include "x2ap_eNB_generate_messages.h"
#include "msc.h"
#include "assertions.h"
#include "conversions.h"
static
int x2ap_eNB_handle_x2_setup_request (instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu);
static
int x2ap_eNB_handle_x2_setup_response (instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu);
static
int x2ap_eNB_handle_x2_setup_failure (instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu);
/* Handlers matrix. Only eNB related procedure present here */
x2ap_message_decoded_callback x2ap_messages_callback[][3] = {
{ 0, 0, 0 }, /* handoverPreparation */
{ 0, 0, 0 }, /* handoverCancel */
{ 0, 0, 0 }, /* loadIndication */
{ 0, 0, 0 }, /* errorIndication */
{ 0, 0, 0 }, /* snStatusTransfer */
{ 0, 0, 0 }, /* uEContextRelease */
{ x2ap_eNB_handle_x2_setup_request, x2ap_eNB_handle_x2_setup_response, x2ap_eNB_handle_x2_setup_failure }, /* x2Setup */
{ 0, 0, 0 }, /* reset */
{ 0, 0, 0 }, /* eNBConfigurationUpdate */
{ 0, 0, 0 }, /* resourceStatusReportingInitiation */
{ 0, 0, 0 }, /* resourceStatusReporting */
{ 0, 0, 0 }, /* privateMessage */
{ 0, 0, 0 }, /* mobilitySettingsChange */
{ 0, 0, 0 }, /* rLFIndication */
{ 0, 0, 0 }, /* handoverReport */
{ 0, 0, 0 }, /* cellActivation */
{ 0, 0, 0 }, /* x2Release */
{ 0, 0, 0 }, /* x2APMessageTransfer */
{ 0, 0, 0 }, /* x2Removal */
{ 0, 0, 0 }, /* seNBAdditionPreparation */
{ 0, 0, 0 }, /* seNBReconfigurationCompletion */
{ 0, 0, 0 }, /* meNBinitiatedSeNBModificationPreparation */
{ 0, 0, 0 }, /* seNBinitiatedSeNBModification */
{ 0, 0, 0 }, /* meNBinitiatedSeNBRelease */
{ 0, 0, 0 }, /* seNBinitiatedSeNBRelease */
{ 0, 0, 0 }, /* seNBCounterCheck */
{ 0, 0, 0 } /* retrieveUEContext */
};
char *x2ap_direction2String(int x2ap_dir) {
static char *x2ap_direction_String[] = {
"", /* Nothing */
"Originating message", /* originating message */
"Successfull outcome", /* successfull outcome */
"UnSuccessfull outcome", /* successfull outcome */
};
return(x2ap_direction_String[x2ap_dir]);
}
void x2ap_handle_x2_setup_message(x2ap_eNB_data_t *enb_desc_p, int sctp_shutdown)
{
if (sctp_shutdown) {
/* A previously connected eNB has been shutdown */
/* TODO check if it was used by some eNB and send a message to inform these eNB if there is no more associated eNB */
if (enb_desc_p->state == X2AP_ENB_STATE_CONNECTED) {
enb_desc_p->state = X2AP_ENB_STATE_DISCONNECTED;
if (enb_desc_p->x2ap_eNB_instance-> x2_target_enb_associated_nb > 0) {
/* Decrease associated eNB number */
enb_desc_p->x2ap_eNB_instance-> x2_target_enb_associated_nb --;
}
/* If there are no more associated eNB, inform eNB app */
if (enb_desc_p->x2ap_eNB_instance->x2_target_enb_associated_nb == 0) {
MessageDef *message_p;
message_p = itti_alloc_new_message(TASK_X2AP, X2AP_DEREGISTERED_ENB_IND);
X2AP_DEREGISTERED_ENB_IND(message_p).nb_x2 = 0;
itti_send_msg_to_task(TASK_ENB_APP, enb_desc_p->x2ap_eNB_instance->instance, message_p);
}
}
} else {
/* Check that at least one setup message is pending */
DevCheck(enb_desc_p->x2ap_eNB_instance->x2_target_enb_pending_nb > 0,
enb_desc_p->x2ap_eNB_instance->instance,
enb_desc_p->x2ap_eNB_instance->x2_target_enb_pending_nb, 0);
if (enb_desc_p->x2ap_eNB_instance->x2_target_enb_pending_nb > 0) {
/* Decrease pending messages number */
enb_desc_p->x2ap_eNB_instance->x2_target_enb_pending_nb --;
}
/* If there are no more pending messages, inform eNB app */
if (enb_desc_p->x2ap_eNB_instance->x2_target_enb_pending_nb == 0) {
MessageDef *message_p;
message_p = itti_alloc_new_message(TASK_X2AP, X2AP_REGISTER_ENB_CNF);
X2AP_REGISTER_ENB_CNF(message_p).nb_x2 = enb_desc_p->x2ap_eNB_instance->x2_target_enb_associated_nb;
itti_send_msg_to_task(TASK_ENB_APP, enb_desc_p->x2ap_eNB_instance->instance, message_p);
}
}
}
int x2ap_eNB_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
const uint8_t *const data, const uint32_t data_length)
{
X2AP_X2AP_PDU_t pdu;
int ret;
DevAssert(data != NULL);
memset(&pdu, 0, sizeof(pdu));
if (x2ap_eNB_decode_pdu(&pdu, data, data_length) < 0) {
X2AP_ERROR("Failed to decode PDU\n");
return -1;
}
/* Checking procedure Code and direction of message */
if (pdu.choice.initiatingMessage.procedureCode > sizeof(x2ap_messages_callback) / (3 * sizeof(
x2ap_message_decoded_callback))
|| (pdu.present > X2AP_X2AP_PDU_PR_unsuccessfulOutcome)) {
X2AP_ERROR("[SCTP %d] Either procedureCode %ld or direction %d exceed expected\n",
assoc_id, pdu.choice.initiatingMessage.procedureCode, pdu.present);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_X2AP_PDU, &pdu);
return -1;
}
/* No handler present.
* This can mean not implemented or no procedure for eNB (wrong direction).
*/
if (x2ap_messages_callback[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1] == NULL) {
X2AP_ERROR("[SCTP %d] No handler for procedureCode %ld in %s\n",
assoc_id, pdu.choice.initiatingMessage.procedureCode,
x2ap_direction2String(pdu.present - 1));
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_X2AP_PDU, &pdu);
return -1;
}
/* Calling the right handler */
ret = (*x2ap_messages_callback[pdu.choice.initiatingMessage.procedureCode][pdu.present - 1])
(instance, assoc_id, stream, &pdu);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_X2AP_X2AP_PDU, &pdu);
return ret;
}
int
x2ap_eNB_handle_x2_setup_request(instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu)
{
X2AP_X2SetupRequest_t *x2SetupRequest;
X2AP_X2SetupRequest_IEs_t *ie;
x2ap_eNB_data_t *x2ap_eNB_data;
uint32_t eNB_id = 0;
DevAssert (pdu != NULL);
x2SetupRequest = &pdu->choice.initiatingMessage.value.choice.X2SetupRequest;
/*
* We received a new valid X2 Setup Request on a stream != 0.
* * * * This should not happen -> reject eNB x2 setup request.
*/
if (stream != 0) {
X2AP_ERROR("Received new x2 setup request on stream != 0\n");
/*
* Send a x2 setup failure with protocol cause unspecified
*/
return x2ap_eNB_generate_x2_setup_failure (instance,
assoc_id,
X2AP_Cause_PR_protocol,
X2AP_CauseProtocol_unspecified,
-1);
}
X2AP_DEBUG("Received a new X2 setup request\n");
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_X2SetupRequest_IEs_t, ie, x2SetupRequest,
X2AP_ProtocolIE_ID_id_GlobalENB_ID, true);
if (ie->value.choice.GlobalENB_ID.eNB_ID.present == X2AP_ENB_ID_PR_home_eNB_ID) {
// Home eNB ID = 28 bits
uint8_t *eNB_id_buf = ie->value.choice.GlobalENB_ID.eNB_ID.choice.home_eNB_ID.buf;
if (ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.size != 28) {
//TODO: handle case were size != 28 -> notify ? reject ?
}
eNB_id = (eNB_id_buf[0] << 20) + (eNB_id_buf[1] << 12) + (eNB_id_buf[2] << 4) + ((eNB_id_buf[3] & 0xf0) >> 4);
X2AP_DEBUG("Home eNB id: %07x\n", eNB_id);
} else {
// Macro eNB = 20 bits
uint8_t *eNB_id_buf = ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf;
if (ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.size != 20) {
//TODO: handle case were size != 20 -> notify ? reject ?
}
eNB_id = (eNB_id_buf[0] << 12) + (eNB_id_buf[1] << 4) + ((eNB_id_buf[2] & 0xf0) >> 4);
X2AP_DEBUG("macro eNB id: %05x\n", eNB_id);
}
X2AP_DEBUG("Adding eNB to the list of associated eNBs\n");
if ((x2ap_eNB_data = x2ap_is_eNB_id_in_list (eNB_id)) == NULL) {
/*
* eNB has not been found in list of associated eNB,
* * * * Add it to the tail of list and initialize data
*/
if ((x2ap_eNB_data = x2ap_is_eNB_assoc_id_in_list (assoc_id)) == NULL) {
/*
* ??
*/
return -1;
} else {
x2ap_eNB_data->state = X2AP_ENB_STATE_RESETTING;
x2ap_eNB_data->eNB_id = eNB_id;
}
} else {
x2ap_eNB_data->state = X2AP_ENB_STATE_RESETTING;
/*
* eNB has been found in list, consider the x2 setup request as a reset connection,
* * * * reseting any previous UE state if sctp association is != than the previous one
*/
if (x2ap_eNB_data->assoc_id != assoc_id) {
/*
* ??: Send an overload cause...
*/
X2AP_ERROR("Rejecting x2 setup request as eNB id %d is already associated to an active sctp association" "Previous known: %d, new one: %d\n", eNB_id, x2ap_eNB_data->assoc_id, assoc_id);
DevAssert(x2ap_eNB_data->x2ap_eNB_instance != NULL);
x2ap_eNB_generate_x2_setup_failure (x2ap_eNB_data->x2ap_eNB_instance->instance,
assoc_id,
X2AP_Cause_PR_protocol,
X2AP_CauseProtocol_unspecified,
-1);
return -1;
}
/*
* TODO: call the reset procedure
*/
}
return x2ap_eNB_generate_x2_setup_response(x2ap_eNB_data);
}
static
int x2ap_eNB_handle_x2_setup_response(instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu)
{
X2AP_X2SetupResponse_t *x2SetupResponse;
X2AP_X2SetupResponse_IEs_t *ie;
x2ap_eNB_data_t *x2ap_eNB_data;
uint32_t eNB_id = 0;
DevAssert (pdu != NULL);
x2SetupResponse = &pdu->choice.successfulOutcome.value.choice.X2SetupResponse;
/*
* We received a new valid X2 Setup Response on a stream != 0.
* * * * This should not happen -> reject eNB x2 setup response.
*/
if (stream != 0) {
X2AP_ERROR("Received new x2 setup response on stream != 0\n");
}
if ((x2ap_eNB_data = x2ap_get_eNB(NULL, assoc_id, 0)) == NULL) {
X2AP_ERROR("[SCTP %d] Received X2 setup response for non existing "
"eNB context\n", assoc_id);
return -1;
}
X2AP_DEBUG("Received a new X2 setup response\n");
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_X2SetupResponse_IEs_t, ie, x2SetupResponse,
X2AP_ProtocolIE_ID_id_GlobalENB_ID, true);
if (ie->value.choice.GlobalENB_ID.eNB_ID.present == X2AP_ENB_ID_PR_home_eNB_ID) {
// Home eNB ID = 28 bits
uint8_t *eNB_id_buf = ie->value.choice.GlobalENB_ID.eNB_ID.choice.home_eNB_ID.buf;
if (ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.size != 28) {
//TODO: handle case were size != 28 -> notify ? reject ?
}
eNB_id = (eNB_id_buf[0] << 20) + (eNB_id_buf[1] << 12) + (eNB_id_buf[2] << 4) + ((eNB_id_buf[3] & 0xf0) >> 4);
X2AP_DEBUG("Home eNB id: %07x\n", eNB_id);
} else {
// Macro eNB = 20 bits
uint8_t *eNB_id_buf = ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.buf;
if (ie->value.choice.GlobalENB_ID.eNB_ID.choice.macro_eNB_ID.size != 20) {
//TODO: handle case were size != 20 -> notify ? reject ?
}
eNB_id = (eNB_id_buf[0] << 12) + (eNB_id_buf[1] << 4) + ((eNB_id_buf[2] & 0xf0) >> 4);
X2AP_DEBUG("macro eNB id: %05x\n", eNB_id);
}
X2AP_DEBUG("Adding eNB to the list of associated eNBs\n");
if ((x2ap_eNB_data = x2ap_is_eNB_id_in_list (eNB_id)) == NULL) {
/*
* eNB has not been found in list of associated eNB,
* * * * Add it to the tail of list and initialize data
*/
if ((x2ap_eNB_data = x2ap_is_eNB_assoc_id_in_list (assoc_id)) == NULL) {
/*
* ??: Send an overload cause...
*/
return -1;
} else {
x2ap_eNB_data->state = X2AP_ENB_STATE_RESETTING;
x2ap_eNB_data->eNB_id = eNB_id;
}
} else {
x2ap_eNB_data->state = X2AP_ENB_STATE_RESETTING;
/*
* TODO: call the reset procedure
*/
}
/* Optionaly set the target eNB name */
/* The association is now ready as source and target eNBs know parameters of each other.
* Mark the association as connected.
*/
x2ap_eNB_data->state = X2AP_ENB_STATE_READY;
x2ap_eNB_data->x2ap_eNB_instance->x2_target_enb_associated_nb ++;
x2ap_handle_x2_setup_message(x2ap_eNB_data, 0);
return 0;
}
static
int x2ap_eNB_handle_x2_setup_failure(instance_t instance,
uint32_t assoc_id,
uint32_t stream,
X2AP_X2AP_PDU_t *pdu)
{
X2AP_X2SetupFailure_t *x2SetupFailure;
X2AP_X2SetupFailure_IEs_t *ie;
x2ap_eNB_data_t *x2ap_eNB_data;
DevAssert(pdu != NULL);
x2SetupFailure = &pdu->choice.unsuccessfulOutcome.value.choice.X2SetupFailure;
/*
* We received a new valid X2 Setup Failure on a stream != 0.
* * * * This should not happen -> reject eNB x2 setup failure.
*/
if (stream != 0) {
X2AP_WARN("[SCTP %d] Received x2 setup failure on stream != 0 (%d)\n",
assoc_id, stream);
}
if ((x2ap_eNB_data = x2ap_get_eNB (NULL, assoc_id, 0)) == NULL) {
X2AP_ERROR("[SCTP %d] Received X2 setup failure for non existing "
"eNB context\n", assoc_id);
return -1;
}
X2AP_DEBUG("Received a new X2 setup failure\n");
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_X2SetupFailure_IEs_t, ie, x2SetupFailure,
X2AP_ProtocolIE_ID_id_Cause, true);
// need a FSM to handle all cases
if ((ie->value.choice.Cause.present == X2AP_Cause_PR_misc) &&
(ie->value.choice.Cause.choice.misc == X2AP_CauseMisc_unspecified)) {
X2AP_WARN("Received X2 setup failure for eNB ... eNB is not ready\n");
} else {
X2AP_ERROR("Received x2 setup failure for eNB... please check your parameters\n");
}
x2ap_eNB_data->state = X2AP_ENB_STATE_WAITING;
x2ap_handle_x2_setup_message(x2ap_eNB_data, 0);
return 0;
}
+33
View File
@@ -0,0 +1,33 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_HANDLERS_H_
#define X2AP_ENB_HANDLERS_H_
#include "x2ap_eNB_defs.h"
void x2ap_handle_x2_setup_message(x2ap_eNB_data_t *eNB_desc_p, int sctp_shutdown);
int x2ap_eNB_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
const uint8_t * const data, const uint32_t data_length);
#endif /* X2AP_ENB_HANDLERS_H_ */
+56
View File
@@ -0,0 +1,56 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include "intertask_interface.h"
#include "x2ap_eNB_itti_messaging.h"
void x2ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
uint32_t buffer_length, uint16_t stream)
{
MessageDef *message_p;
sctp_data_req_t *sctp_data_req;
message_p = itti_alloc_new_message(TASK_X2AP, SCTP_DATA_REQ);
sctp_data_req = &message_p->ittiMsg.sctp_data_req;
sctp_data_req->assoc_id = assoc_id;
sctp_data_req->buffer = buffer;
sctp_data_req->buffer_length = buffer_length;
sctp_data_req->stream = stream;
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
}
void x2ap_eNB_itti_send_sctp_close_association(instance_t instance, int32_t assoc_id)
{
MessageDef *message_p = NULL;
sctp_close_association_t *sctp_close_association_p = NULL;
message_p = itti_alloc_new_message(TASK_X2AP, SCTP_CLOSE_ASSOCIATION);
sctp_close_association_p = &message_p->ittiMsg.sctp_close_association;
sctp_close_association_p->assoc_id = assoc_id;
itti_send_msg_to_task(TASK_SCTP, instance, message_p);
}
+32
View File
@@ -0,0 +1,32 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_ITTI_MESSAGING_H_
#define X2AP_ENB_ITTI_MESSAGING_H_
void x2ap_eNB_itti_send_sctp_data_req(instance_t instance, int32_t assoc_id, uint8_t *buffer,
uint32_t buffer_length, uint16_t stream);
void x2ap_eNB_itti_send_sctp_close_association(instance_t instance, int32_t assoc_id);
#endif /* X2AP_ENB_ITTI_MESSAGING_H_ */
@@ -0,0 +1,236 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "intertask_interface.h"
#include "assertions.h"
#include "conversions.h"
#include "x2ap_common.h"
#include "x2ap_eNB_defs.h"
#include "x2ap_eNB.h"
#define X2AP_DEBUG_LIST
#ifdef X2AP_DEBUG_LIST
# define X2AP_eNB_LIST_OUT(x, args...) X2AP_DEBUG("[eNB]%*s"x"\n", 4*indent, "", ##args)
#else
# define X2AP_eNB_LIST_OUT(x, args...)
#endif
static int indent = 0;
x2ap_eNB_internal_data_t x2ap_eNB_internal_data;
RB_GENERATE(x2ap_enb_map, x2ap_eNB_data_s, entry, x2ap_eNB_compare_assoc_id);
int x2ap_eNB_compare_assoc_id(
struct x2ap_eNB_data_s *p1, struct x2ap_eNB_data_s *p2)
{
if (p1->assoc_id == -1) {
if (p1->cnx_id < p2->cnx_id) {
return -1;
}
if (p1->cnx_id > p2->cnx_id) {
return 1;
}
} else {
if (p1->assoc_id < p2->assoc_id) {
return -1;
}
if (p1->assoc_id > p2->assoc_id) {
return 1;
}
}
/* Matching reference */
return 0;
}
uint16_t x2ap_eNB_fetch_add_global_cnx_id(void)
{
return ++x2ap_eNB_internal_data.global_cnx_id;
}
void x2ap_eNB_prepare_internal_data(void)
{
memset(&x2ap_eNB_internal_data, 0, sizeof(x2ap_eNB_internal_data));
STAILQ_INIT(&x2ap_eNB_internal_data.x2ap_eNB_instances_head);
}
void x2ap_eNB_insert_new_instance(x2ap_eNB_instance_t *new_instance_p)
{
DevAssert(new_instance_p != NULL);
STAILQ_INSERT_TAIL(&x2ap_eNB_internal_data.x2ap_eNB_instances_head,
new_instance_p, x2ap_eNB_entries);
}
void dump_tree(x2ap_eNB_data_t *t)
{
if (t == NULL) return;
printf("-----------------------\n");
printf("eNB id %d %s\n", t->eNB_id, t->eNB_name);
printf("state %d\n", t->state);
printf("nextstream %d\n", t->nextstream);
printf("in_streams %d out_streams %d\n", t->in_streams, t->out_streams);
printf("cnx_id %d assoc_id %d\n", t->cnx_id, t->assoc_id);
dump_tree(t->entry.rbe_left);
dump_tree(t->entry.rbe_right);
}
void dump_trees(void)
{
x2ap_eNB_instance_t *zz;
STAILQ_FOREACH(zz, &x2ap_eNB_internal_data.x2ap_eNB_instances_head,
x2ap_eNB_entries) {
printf("here comes the tree (instance %d):\n---------------------------------------------\n", zz->instance);
dump_tree(zz->x2ap_enb_head.rbh_root);
printf("---------------------------------------------\n");
}
}
struct x2ap_eNB_data_s *x2ap_get_eNB(x2ap_eNB_instance_t *instance_p,
int32_t assoc_id,
uint16_t cnx_id)
{
struct x2ap_eNB_data_s temp;
struct x2ap_eNB_data_s *found;
printf("x2ap_get_eNB at 1 (looking for assoc_id %d cnx_id %d)\n", assoc_id, cnx_id);
dump_trees();
memset(&temp, 0, sizeof(struct x2ap_eNB_data_s));
temp.assoc_id = assoc_id;
temp.cnx_id = cnx_id;
if (instance_p == NULL) {
STAILQ_FOREACH(instance_p, &x2ap_eNB_internal_data.x2ap_eNB_instances_head,
x2ap_eNB_entries) {
found = RB_FIND(x2ap_enb_map, &instance_p->x2ap_enb_head, &temp);
if (found != NULL) {
return found;
}
}
} else {
return RB_FIND(x2ap_enb_map, &instance_p->x2ap_enb_head, &temp);
}
return NULL;
}
x2ap_eNB_instance_t *x2ap_eNB_get_instance(instance_t instance)
{
x2ap_eNB_instance_t *temp = NULL;
STAILQ_FOREACH(temp, &x2ap_eNB_internal_data.x2ap_eNB_instances_head,
x2ap_eNB_entries) {
if (temp->instance == instance) {
/* Matching occurence */
return temp;
}
}
return NULL;
}
/// utility functions
void x2ap_dump_eNB (x2ap_eNB_data_t * eNB_ref);
void
x2ap_dump_eNB_list (void) {
x2ap_eNB_instance_t *inst = NULL;
struct x2ap_eNB_data_s *found = NULL;
struct x2ap_eNB_data_s temp;
memset(&temp, 0, sizeof(struct x2ap_eNB_data_s));
STAILQ_FOREACH (inst, &x2ap_eNB_internal_data.x2ap_eNB_instances_head, x2ap_eNB_entries) {
found = RB_FIND(x2ap_enb_map, &inst->x2ap_enb_head, &temp);
x2ap_dump_eNB (found);
}
}
void x2ap_dump_eNB (x2ap_eNB_data_t * eNB_ref) {
if (eNB_ref == NULL) {
return;
}
X2AP_eNB_LIST_OUT ("");
X2AP_eNB_LIST_OUT ("eNB name: %s", eNB_ref->eNB_name == NULL ? "not present" : eNB_ref->eNB_name);
X2AP_eNB_LIST_OUT ("eNB STATE: %07x", eNB_ref->state);
X2AP_eNB_LIST_OUT ("eNB ID: %07x", eNB_ref->eNB_id);
indent++;
X2AP_eNB_LIST_OUT ("SCTP cnx id: %d", eNB_ref->cnx_id);
X2AP_eNB_LIST_OUT ("SCTP assoc id: %d", eNB_ref->assoc_id);
X2AP_eNB_LIST_OUT ("SCTP instreams: %d", eNB_ref->in_streams);
X2AP_eNB_LIST_OUT ("SCTP outstreams: %d", eNB_ref->out_streams);
indent--;
}
x2ap_eNB_data_t * x2ap_is_eNB_id_in_list (const uint32_t eNB_id)
{
x2ap_eNB_instance_t *inst;
struct x2ap_eNB_data_s *elm;
STAILQ_FOREACH(inst, &x2ap_eNB_internal_data.x2ap_eNB_instances_head, x2ap_eNB_entries) {
RB_FOREACH(elm, x2ap_enb_map, &inst->x2ap_enb_head) {
if (elm->eNB_id == eNB_id)
return elm;
}
}
return NULL;
}
x2ap_eNB_data_t * x2ap_is_eNB_assoc_id_in_list (const uint32_t sctp_assoc_id)
{
x2ap_eNB_instance_t *inst;
struct x2ap_eNB_data_s *found;
struct x2ap_eNB_data_s temp;
temp.assoc_id = sctp_assoc_id;
temp.cnx_id = -1;
STAILQ_FOREACH(inst, &x2ap_eNB_internal_data.x2ap_eNB_instances_head, x2ap_eNB_entries) {
found = RB_FIND(x2ap_enb_map, &inst->x2ap_enb_head, &temp);
if (found != NULL){
if (found->assoc_id == sctp_assoc_id) {
return found;
}
}
}
return NULL;
}
+46
View File
@@ -0,0 +1,46 @@
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#ifndef X2AP_ENB_MANAGEMENT_PROCEDURES_H_
#define X2AP_ENB_MANAGEMENT_PROCEDURES_H
void x2ap_eNB_prepare_internal_data(void);
void dump_trees(void);
void x2ap_eNB_insert_new_instance(x2ap_eNB_instance_t *new_instance_p);
x2ap_eNB_instance_t *x2ap_eNB_get_instance(uint8_t mod_id);
uint16_t x2ap_eNB_fetch_add_global_cnx_id(void);
void x2ap_eNB_prepare_internal_data(void);
x2ap_eNB_data_t* x2ap_is_eNB_id_in_list(uint32_t eNB_id);
x2ap_eNB_data_t* x2ap_is_eNB_assoc_id_in_list(uint32_t sctp_assoc_id);
struct x2ap_eNB_data_s *x2ap_get_eNB(x2ap_eNB_instance_t *instance_p,
int32_t assoc_id,
uint16_t cnx_id);
#endif /* X2AP_ENB_MANAGEMENT_PROCEDURES_H_ */