-- **************************************************************
--
-- 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


-- **************************************************************
--
-- 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
	ABSInformation,
	ABS-Status,
	AS-SecurityInformation,
	Cause,
	CompositeAvailableCapacityGroup,
	COUNTvalue,
	CriticalityDiagnostics,
	CRNTI,
	CSGMembershipStatus,
	CSG-Id,
	DeactivationIndication,
	DL-Forwarding,
	ECGI,
	E-RAB-ID,
	E-RAB-Level-QoS-Parameters,
	E-RAB-List,
	EUTRANTraceID,
	GlobalENB-ID,
	GTPtunnelEndpoint,
	GUGroupIDList,
	GUMMEI,
	HandoverReportType,
	HandoverRestrictionList,
	InvokeIndication,
	LocationReportingInformation,
	MDT-Configuration,
	ManagementBasedMDTallowed,
	Neighbour-Information,
	PCI,
	PDCP-SN,
	PLMN-Identity,
	ReceiveStatusofULPDCPSDUs,
	Registration-Request,
	RelativeNarrowbandTxPower,
	RadioResourceStatus,
	RRCConnSetupIndicator,
	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-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,

	maxCellineNB,
	maxnoofBearers,
	maxnoofPDCP-SN,
	maxFailedMeasObjects,
	maxnoofCellIDforMDT,
	maxnoofTAforMDT

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}|
	{ ID id-CSGMembershipStatus				CRITICALITY reject	TYPE CSGMembershipStatus		PRESENCE 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,
	...
}

UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-ManagementBasedMDTallowed	CRITICALITY ignore	EXTENSION ManagementBasedMDTallowed		PRESENCE optional },
	...
}

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-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,
	...
}

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-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 ::= 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,
	...
}

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-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,
	...
}

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 ::= SEQUENCE {
	cell-ID							ECGI,
	ul-InterferenceOverloadIndication		UL-InterferenceOverloadIndication		OPTIONAL,
	ul-HighInterferenceIndicationInfo		UL-HighInterferenceIndicationInfo		OPTIONAL,
	relativeNarrowbandTxPower				RelativeNarrowbandTxPower				OPTIONAL,
	iE-Extensions							ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} }	OPTIONAL,
	...
}

CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-ABSInformation			CRITICALITY ignore	EXTENSION ABSInformation		PRESENCE optional }|
{ ID id-InvokeIndication		CRITICALITY ignore	EXTENSION InvokeIndication		PRESENCE optional },
	...
}

-- **************************************************************
--
-- 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::= SEQUENCE {
	old-ecgi						ECGI,
	servedCellInfo					ServedCell-Information,
	neighbour-Info					Neighbour-Information			OPTIONAL,
	iE-Extensions					ProtocolExtensionContainer { { ServedCellsToModify-Item-ExtIEs} } OPTIONAL,
	...
}

ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
{ ID id-DeactivationIndication			CRITICALITY ignore	EXTENSION DeactivationIndication				PRESENCE optional },
	...
}


Old-ECGIs::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI

-- **************************************************************
--
-- 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}|
	{ ID id-PartialSuccessIndicator	CRITICALITY ignore	TYPE PartialSuccessIndicator		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 ::= SEQUENCE {
	cell-ID									ECGI,
	iE-Extensions							ProtocolExtensionContainer { {CellToReport-Item-ExtIEs} } OPTIONAL,
	...
}

CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


ReportingPeriodicity ::= ENUMERATED {
	one-thousand-ms,
	two-thousand-ms,
	five-thousand-ms,
	ten-thousand-ms,
...
}

PartialSuccessIndicator ::= ENUMERATED {
	partial-success-allowed,
...
}

-- **************************************************************
--
-- 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}|
	{ ID id-MeasurementInitiationResult-List	CRITICALITY ignore	TYPE MeasurementInitiationResult-List	PRESENCE optional},
	...
}


MeasurementInitiationResult-List	::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { { MeasurementInitiationResult-ItemIEs} }

MeasurementInitiationResult-ItemIEs X2AP-PROTOCOL-IES ::= {
	{ ID id-MeasurementInitiationResult-Item	CRITICALITY ignore	TYPE MeasurementInitiationResult-Item	PRESENCE mandatory}
}

MeasurementInitiationResult-Item ::= SEQUENCE {
	cell-ID											ECGI,
	measurementFailureCause-List					MeasurementFailureCause-List	OPTIONAL,
	iE-Extensions									ProtocolExtensionContainer { { MeasurementInitiationResult-Item-ExtIEs} }	OPTIONAL,
	...
}

MeasurementInitiationResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

MeasurementFailureCause-List	::= SEQUENCE (SIZE (1..maxFailedMeasObjects)) OF ProtocolIE-Single-Container { { MeasurementFailureCause-ItemIEs} }

MeasurementFailureCause-ItemIEs X2AP-PROTOCOL-IES ::= {
	{ ID id-MeasurementFailureCause-Item	CRITICALITY ignore	TYPE MeasurementFailureCause-Item		PRESENCE mandatory}
}

MeasurementFailureCause-Item ::= SEQUENCE {
	measurementFailedReportCharacteristics			ReportCharacteristics,
	cause											Cause,
	iE-Extensions									ProtocolExtensionContainer { { MeasurementFailureCause-Item-ExtIEs} }	OPTIONAL,
	...
}

MeasurementFailureCause-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- 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}|
	{ ID id-CompleteFailureCauseInformation-List	CRITICALITY ignore	TYPE CompleteFailureCauseInformation-List	PRESENCE optional},
	...
}

CompleteFailureCauseInformation-List	::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CompleteFailureCauseInformation-ItemIEs} }

CompleteFailureCauseInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
	{ ID id-CompleteFailureCauseInformation-Item	CRITICALITY ignore	TYPE CompleteFailureCauseInformation-Item	PRESENCE mandatory}
}

CompleteFailureCauseInformation-Item ::= SEQUENCE {
	cell-ID											ECGI,
	measurementFailureCause-List					MeasurementFailureCause-List,
	iE-Extensions									ProtocolExtensionContainer { { CompleteFailureCauseInformation-Item-ExtIEs} }	OPTIONAL,
	...
}

CompleteFailureCauseInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- 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 ::= SEQUENCE {
	cell-ID							ECGI,
	hWLoadIndicator				HWLoadIndicator		OPTIONAL,
	s1TNLLoadIndicator			S1TNLLoadIndicator	OPTIONAL,
	radioResourceStatus				RadioResourceStatus	OPTIONAL,
	iE-Extensions					ProtocolExtensionContainer { {CellMeasurementResult-Item-ExtIEs} }	OPTIONAL,
	...
}

CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	{ ID id-CompositeAvailableCapacityGroup	CRITICALITY ignore	EXTENSION CompositeAvailableCapacityGroup		PRESENCE optional}|
	{ ID id-ABS-Status						CRITICALITY ignore	EXTENSION ABS-Status							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}|
	{ ID id-RRCConnSetupIndicator		CRITICALITY reject	TYPE RRCConnSetupIndicator		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::= SEQUENCE {
	ecgi						ECGI,
	iE-Extensions					ProtocolExtensionContainer { { ServedCellsToActivate-Item-ExtIEs} } OPTIONAL,
	...
}

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 ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ActivatedCellList-Item

ActivatedCellList-Item::= SEQUENCE {
	ecgi								ECGI,
	iE-Extensions						ProtocolExtensionContainer { { ActivatedCellList-Item-ExtIEs} } 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 },
	...
}

END


-- **************************************************************
--
-- 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,
	id-CSG-Id,
	id-MDTConfiguration,
	maxnoofBearers,
	maxCellineNB,
	maxEARFCN,
	maxInterfaces,

	maxnoofBPLMNs,
	maxnoofCells,
	maxnoofEPLMNs,
	maxnoofEPLMNsPlusOne,
	maxnoofForbLACs,
	maxnoofForbTACs,
	maxnoofNeighbours,
	maxnoofPRBs,
	maxNrOfErrors,
	maxPools,
	maxnoofMBSFN,
	maxnoofTAforMDT,
	maxnoofCellIDforMDT

FROM X2AP-Constants

	Criticality,
	ProcedureCode,
	ProtocolIE-ID,
	TriggeringMessage
FROM X2AP-CommonDataTypes

	ProtocolExtensionContainer{},
	ProtocolIE-Single-Container{},

	X2AP-PROTOCOL-EXTENSION,
	X2AP-PROTOCOL-IES
FROM X2AP-Containers;

-- A

ABSInformation ::= CHOICE {
	fdd					ABSInformationFDD,
	tdd					ABSInformationTDD,
	abs-inactive		NULL,
	...
}

ABSInformationFDD ::= SEQUENCE {
	abs-pattern-info					BIT STRING (SIZE(40)),
	numberOfCellSpecificAntennaPorts	ENUMERATED {one, two, four, ...},
	measurement-subset					BIT STRING (SIZE(40)),
	iE-Extensions						ProtocolExtensionContainer { { ABSInformationFDD-ExtIEs} } OPTIONAL,
	...
}

ABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

ABSInformationTDD ::= SEQUENCE {
	abs-pattern-info					BIT STRING (SIZE(1..70, ...)),
	numberOfCellSpecificAntennaPorts	ENUMERATED {one, two, four, ...},
	measurement-subset					BIT STRING (SIZE(1..70, ...)),
	iE-Extensions						ProtocolExtensionContainer { { ABSInformationTDD-ExtIEs} } OPTIONAL,
	...
}

ABSInformationTDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

ABS-Status ::= SEQUENCE {
	dL-ABS-status								DL-ABS-status,
	usableABSInformation						UsableABSInformation,
	iE-Extensions								ProtocolExtensionContainer { {ABS-Status-ExtIEs} } OPTIONAL,
	...
}

ABS-Status-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

DL-ABS-status::= INTEGER (0..100)

AS-SecurityInformation ::= SEQUENCE {
	key-eNodeB-star		Key-eNodeB-Star,
	nextHopChainingCount			NextHopChainingCount,
	iE-Extensions						ProtocolExtensionContainer { { AS-SecurityInformation-ExtIEs} } OPTIONAL,
	...
}

AS-SecurityInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


AllocationAndRetentionPriority ::= SEQUENCE {
	priorityLevel				PriorityLevel,
	pre-emptionCapability		Pre-emptionCapability,
	pre-emptionVulnerability	Pre-emptionVulnerability,
	iE-Extensions				ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL,
	...
}

AllocationAndRetentionPriority-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

AreaScopeOfMDT ::= CHOICE {
	cellBased					CellBasedMDT,
	tABased						TABasedMDT,
	pLMNWide					NULL,
	...
}

-- B


BitRate ::= INTEGER (0..10000000000)
BroadcastPLMNs-Item ::= SEQUENCE (SIZE(1..maxnoofBPLMNs)) OF PLMN-Identity


-- C

CapacityValue ::= INTEGER (0..100)

CellCapacityClassValue ::= INTEGER (1..100, ...)

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,
	measurement-not-supported-for-the-object

}

CauseTransport ::= ENUMERATED {
	transport-resource-unavailable,
	unspecified,
	...
}

CellBasedMDT::= SEQUENCE {
	cellIdListforMDT	CellIdListforMDT,
	iE-Extensions		ProtocolExtensionContainer { {CellBasedMDT-ExtIEs} } OPTIONAL,
	...
}

CellBasedMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF ECGI

Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ... }


CellType ::= SEQUENCE {
	cell-Size						Cell-Size,
	iE-Extensions					ProtocolExtensionContainer { { CellType-ExtIEs}}	OPTIONAL,
	...
}

CellType-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

CompositeAvailableCapacityGroup	::= SEQUENCE {
	dL-CompositeAvailableCapacity					CompositeAvailableCapacity,
	uL-CompositeAvailableCapacity					CompositeAvailableCapacity,
	iE-Extensions									ProtocolExtensionContainer { { CompositeAvailableCapacityGroup-ExtIEs} } OPTIONAL,
	...
}

CompositeAvailableCapacityGroup-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

CompositeAvailableCapacity ::= SEQUENCE {
	cellCapacityClassValue							CellCapacityClassValue				OPTIONAL,
	capacityValue									CapacityValue,
	iE-Extensions									ProtocolExtensionContainer { { CompositeAvailableCapacity-ExtIEs} } OPTIONAL,
	...
}

CompositeAvailableCapacity-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

COUNTvalue ::= SEQUENCE {
	pDCP-SN					PDCP-SN,
	hFN						HFN,
	iE-Extensions			ProtocolExtensionContainer { { COUNTvalue-ExtIEs} } OPTIONAL,
	...
}

COUNTvalue-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


CriticalityDiagnostics ::= SEQUENCE {
	procedureCode					ProcedureCode					OPTIONAL,
	triggeringMessage				TriggeringMessage				OPTIONAL,
	procedureCriticality			Criticality						OPTIONAL,
	iEsCriticalityDiagnostics		CriticalityDiagnostics-IE-List	OPTIONAL,
	iE-Extensions					ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} }	OPTIONAL,
	...
}


CriticalityDiagnostics-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF
	SEQUENCE {
		iECriticality			Criticality,
		iE-ID					ProtocolIE-ID,
		typeOfError				TypeOfError,
		iE-Extensions			ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL,
		...
}

CriticalityDiagnostics-IE-List-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

CRNTI ::= BIT STRING (SIZE (16))

CSGMembershipStatus ::= ENUMERATED {
	member,
	not-member
}

CSG-Id ::= BIT STRING (SIZE (27))

CyclicPrefixDL ::= ENUMERATED {
	normal,
	extended,
	...
}

CyclicPrefixUL ::= ENUMERATED {
	normal,
	extended,
	...
}


-- D

DeactivationIndication::= ENUMERATED {
	deactivated,
	...
}

DL-Forwarding ::= ENUMERATED {
	dL-forwardingProposed,
	...
}

DL-GBR-PRB-usage::= INTEGER (0..100)

DL-non-GBR-PRB-usage::= INTEGER (0..100)

DL-Total-PRB-usage::= INTEGER (0..100)

-- E

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,
	...
}

FDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

TDD-Info ::= SEQUENCE {
	eARFCN							EARFCN,
	transmission-Bandwidth			Transmission-Bandwidth,
	subframeAssignment				SubframeAssignment,
	specialSubframe-Info				SpecialSubframe-Info,
	iE-Extensions				ProtocolExtensionContainer { {TDD-Info-ExtIEs} } OPTIONAL,
	...
}
TDD-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

EUTRA-Mode-Info ::= CHOICE {
	fDD		FDD-Info,
	tDD		TDD-Info,
	...
}

ECGI ::= SEQUENCE {
	pLMN-Identity				PLMN-Identity,
	eUTRANcellIdentifier		EUTRANCellIdentifier,
	iE-Extensions				ProtocolExtensionContainer { {ECGI-ExtIEs} } OPTIONAL,
	...
}

ECGI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

E-RAB-Level-QoS-Parameters-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

E-RAB-List ::= SEQUENCE (SIZE(1.. maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RAB-ItemIEs} }

E-RAB-ItemIEs 	X2AP-PROTOCOL-IES ::= {
	{ ID id-E-RAB-Item	 CRITICALITY ignore 	TYPE E-RAB-Item 	PRESENCE mandatory },
	...
}

E-RAB-Item ::= SEQUENCE {
	e-RAB-ID				E-RAB-ID,
	cause						Cause,
	iE-Extensions				ProtocolExtensionContainer { {E-RAB-Item-ExtIEs} } OPTIONAL,
	...
}

E-RAB-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

ForbiddenTAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

ForbiddenLAs-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

GBR-QosInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

GlobalENB-ID ::= SEQUENCE {
	pLMN-Identity			PLMN-Identity,
	eNB-ID					ENB-ID,
	iE-Extensions			ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL,
	...
}

GlobalENB-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

GTPtunnelEndpoint ::= SEQUENCE {
	transportLayerAddress			TransportLayerAddress,
	gTP-TEID						GTP-TEI,
	iE-Extensions					ProtocolExtensionContainer { {GTPtunnelEndpoint-ExtIEs} } OPTIONAL,
	...
}

GTPtunnelEndpoint-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

GU-Group-ID-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


GUMMEI			::= SEQUENCE {

	gU-Group-ID		GU-Group-ID,
	mME-Code			MME-Code,
	iE-Extensions					ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL,
	...
}

GUMMEI-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}



-- 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,
	...
}

HandoverRestrictionList-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

HFN ::= INTEGER (0..1048575)

HWLoadIndicator ::= SEQUENCE {
	dLHWLoadIndicator			LoadIndicator,
	uLHWLoadIndicator			LoadIndicator,
	iE-Extensions				ProtocolExtensionContainer { { HWLoadIndicator-ExtIEs} } OPTIONAL,
	...
}

HWLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


-- I

InvokeIndication ::= ENUMERATED{
	abs-information,
	...
}

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,
	...
}

LastVisitedEUTRANCellInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

LocationReportingInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::={
	...
}

-- M

MDT-Activation		::= ENUMERATED {
	immediate-MDT-only,
	immediate-MDT-and-Trace,
	...
}

MDT-Configuration ::= SEQUENCE {
	mdt-Activation				MDT-Activation,
	areaScopeOfMDT				AreaScopeOfMDT,
	measurementsToActivate		MeasurementsToActivate,
	reportingTriggerMDT			ReportingTriggerMDT,
	thresholdeventA2			ThresholdEventA2			OPTIONAL,
-- Included in case of event-triggered reporting for measurement M1
	periodicReportingMDT		PeriodicReportingMDT		OPTIONAL,
-- Included in case of periodic reporting
	iE-Extensions				ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL,
	...
}

MDT-Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

MeasurementsToActivate::= BIT STRING (SIZE (8))

MeasurementThresholdA2 ::= CHOICE {
	threshold-RSRP				Threshold-RSRP,
	threshold-RSRQ				Threshold-RSRQ,
	...
}

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,
	...
}

MBSFN-Subframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

ManagementBasedMDTallowed ::= ENUMERATED {allowed, ...}

MobilityParametersModificationRange ::= SEQUENCE {
	handoverTriggerChangeLowerLimit		INTEGER (-20..20),
	handoverTriggerChangeUpperLimit		INTEGER (-20..20),
	...
}

MobilityParametersInformation ::= SEQUENCE {
	handoverTriggerChange			INTEGER (-20..20),
	...
}


-- N

Neighbour-Information ::= SEQUENCE (SIZE (0..maxnoofNeighbours)) OF SEQUENCE {
	eCGI						ECGI,
	pCI					 	PCI,
	eARFCN						EARFCN,
	iE-Extensions		 ProtocolExtensionContainer { {Neighbour-Information-ExtIEs} } OPTIONAL,
	...
}

Neighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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, ...)

PeriodicReportingMDT ::= SEQUENCE {
	reportInterval				ReportIntervalMDT,
	reportAmount				ReportAmountMDT,
	iE-Extensions				ProtocolExtensionContainer { { PeriodicReportingMDT-ExtIEs} } OPTIONAL,
	...
}

PeriodicReportingMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

PRACH-Configuration-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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

RadioframeAllocationOffset ::= INTEGER (0..7, ...)

RadioframeAllocationPeriod ::= ENUMERATED{
	n1,
	n2,
	n4,
	n8,
	n16,
	n32,
	...
}


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,
	...
}

RadioResourceStatus-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

RelativeNarrowbandTxPower-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity}

ReportArea ::= ENUMERATED{
	ecgi,
	...
}

ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60}

ReportCharacteristics	::= BIT STRING (SIZE (32))

ReportingTriggerMDT::= ENUMERATED{
	periodic,
	a2eventtriggered,
	...
}

RNTP-Threshold ::= ENUMERATED {
	minusInfinity,
	minusEleven,
	minusTen,
	minusNine,
	minusEight,
	minusSeven,
	minusSix,
	minusFive,
	minusFour,
	minusThree,
	minusTwo,
	minusOne,
	zero,
	one,
	two,
	three,
	...
}

RRC-Context ::= OCTET STRING

RRCConnSetupIndicator::= ENUMERATED {
	rrcConnSetup,
	...
}

-- S

S1TNLLoadIndicator ::= SEQUENCE {
	dLS1TNLLoadIndicator			LoadIndicator,
	uLS1TNLLoadIndicator			LoadIndicator,
	iE-Extensions					ProtocolExtensionContainer { { S1TNLLoadIndicator-ExtIEs} } OPTIONAL,
	...
}

S1TNLLoadIndicator-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}




ServedCells ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE {
	servedCellInfo					ServedCell-Information,
	neighbour-Info					Neighbour-Information			OPTIONAL,
	iE-Extensions					ProtocolExtensionContainer { {ServedCell-ExtIEs} } OPTIONAL,
	...
}

ServedCell-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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,
	...
}

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 }|
	{ ID id-CSG-Id						CRITICALITY ignore	EXTENSION CSG-Id							PRESENCE 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,
	...
}

SpecialSubframe-Info-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}


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))

TABasedMDT::= SEQUENCE {
	tAListforMDT		TAListforMDT,
	iE-Extensions		ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL,
	...
}

TABasedMDT-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC

ThresholdEventA2 ::= SEQUENCE {
	measurementThreshold		MeasurementThresholdA2,
	iE-Extensions				ProtocolExtensionContainer { { ThresholdEventA2-ExtIEs} } OPTIONAL,
	...
}

ThresholdEventA2-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

TargeteNBtoSource-eNBTransparentContainer	::= OCTET STRING

Threshold-RSRP ::=  INTEGER(0..97)

Threshold-RSRQ ::=  INTEGER(0..34)

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,
	...
}

TraceActivation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	{ ID id-MDTConfiguration	CRITICALITY ignore	EXTENSION MDT-Configuration		PRESENCE 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)

UEAggregateMaximumBitRate ::= SEQUENCE {
	uEaggregateMaximumBitRateDownlink	BitRate,
	uEaggregateMaximumBitRateUplink		BitRate,
	iE-Extensions						ProtocolExtensionContainer { {UEAggregate-MaximumBitrate-ExtIEs} } OPTIONAL,
	...
}

UEAggregate-MaximumBitrate-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

UESecurityCapabilities ::= SEQUENCE {
	encryptionAlgorithms				EncryptionAlgorithms,
	integrityProtectionAlgorithms		IntegrityProtectionAlgorithms,
	iE-Extensions						ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} }		OPTIONAL,
...
}

UESecurityCapabilities-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

UL-GBR-PRB-usage::= INTEGER (0..100)

UL-non-GBR-PRB-usage::= INTEGER (0..100)

UL-Total-PRB-usage::= INTEGER (0..100)

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,
	...
}

UL-HighInterferenceIndicationInfo-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

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]

UsableABSInformation ::= CHOICE {
	fdd					UsableABSInformationFDD,
	tdd					UsableABSInformationTDD,
	...
}

UsableABSInformationFDD ::= SEQUENCE {
	usable-abs-pattern-info				BIT STRING (SIZE(40)),
	iE-Extensions						ProtocolExtensionContainer { { UsableABSInformationFDD-ExtIEs} } OPTIONAL,
	...
}

UsableABSInformationFDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

UsableABSInformationTDD ::= SEQUENCE {
	usaable-abs-pattern-info			BIT STRING (SIZE(1..70, ...)),
	iE-Extensions						ProtocolExtensionContainer { { UsableABSInformationTDD-ExtIEs} } OPTIONAL,
	...
}

UsableABSInformationTDD-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
	...
}

-- V
-- W
-- X
-- Y
-- Z

END


-- **************************************************************
--
-- 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 (0..255)


ProtocolIE-ID		::= INTEGER (0..maxProtocolIEs)


TriggeringMessage	::= ENUMERATED { initiating-message, successful-outcome, unsuccessful-outcome}

END


-- **************************************************************
--
-- 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
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
maxFailedMeasObjects						INTEGER ::= 32
maxnoofCellIDforMDT							INTEGER ::= 32
maxnoofTAforMDT								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
id-ABSInformation															ProtocolIE-ID ::= 61
id-InvokeIndication															ProtocolIE-ID ::= 62
id-ABS-Status																ProtocolIE-ID ::= 63
id-PartialSuccessIndicator													ProtocolIE-ID ::= 64
id-MeasurementInitiationResult-List											ProtocolIE-ID ::= 65
id-MeasurementInitiationResult-Item											ProtocolIE-ID ::= 66
id-MeasurementFailureCause-Item												ProtocolIE-ID ::= 67
id-CompleteFailureCauseInformation-List										ProtocolIE-ID ::= 68
id-CompleteFailureCauseInformation-Item										ProtocolIE-ID ::= 69
id-CSG-Id																	ProtocolIE-ID ::= 70
id-CSGMembershipStatus														ProtocolIE-ID ::= 71
id-MDTConfiguration															ProtocolIE-ID ::= 72
id-ManagementBasedMDTallowed												ProtocolIE-ID ::= 74
id-RRCConnSetupIndicator													ProtocolIE-ID ::= 75

END


-- **************************************************************
--
-- 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
