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


	ENBConfigurationUpdate,
	ENBConfigurationUpdateAcknowledge,
	ENBConfigurationUpdateFailure,
	ErrorIndication,
	HandoverCancel,
	HandoverPreparationFailure,
	HandoverRequest,
	HandoverRequestAcknowledge,
	LoadInformation,
	PrivateMessage,
	ResetRequest,
	ResetResponse,
	ResourceStatusFailure,
	ResourceStatusRequest,
	ResourceStatusResponse,
	ResourceStatusUpdate,
	SNStatusTransfer,
	UEContextRelease,
	X2SetupFailure,	X2SetupRequest,
	X2SetupResponse




FROM X2AP-PDU-Contents

	id-eNBConfigurationUpdate,
	id-errorIndication,
	id-handoverCancel,
	id-handoverPreparation,

	id-loadIndication,
	id-privateMessage,
	id-reset,

	id-resourceStatusReporting,
	id-resourceStatusReportingInitiation,
	id-snStatusTransfer,
	id-uEContextRelease,
	id-x2Setup




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

X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
	snStatusTransfer						|
	uEContextRelease						|
	handoverCancel							|
	errorIndication							|
	resourceStatusReporting					|
	loadIndication							|
	privateMessage							,
	...

}


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

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
}

privateMessage			X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		PrivateMessage
	PROCEDURE CODE			id-privateMessage
	CRITICALITY				ignore
}

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

	AS-SecurityInformation,

	Cause,

	COUNTvalue,
	CriticalityDiagnostics,
	DL-Forwarding,
	ECGI,
	E-RAB-ID,
	E-RAB-Level-QoS-Parameters,
	E-RAB-List,
	EUTRANTraceID,
	GlobalENB-ID,
	GTPtunnelEndpoint,
	GUGroupIDList,
	GUMMEI,
	HandoverRestrictionList,
	LocationReportingInformation,
	Neighbour-Information,
	PDCP-SN,
	PLMN-Identity,
	ReceiveStatusofULPDCPSDUs,
	Registration-Request,
	RelativeNarrowbandTxPower,
	RadioResourceStatus,
	RRC-Context,
	ServedCell-Information,
	ServedCells,
	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



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-Cause,
	id-CellInformation,
	id-CellInformation-Item,
	id-CellMeasurementResult,
	id-CellMeasurementResult-Item,
	id-CellToReport,
	id-CellToReport-Item,
	id-CriticalityDiagnostics,
	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-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,



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

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

	...
}

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

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


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


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


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

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


-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************

PrivateMessage ::= SEQUENCE {
	privateIEs		PrivateIE-Container  {{PrivateMessage-IEs}},
	...
}

PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
	...
}

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,


	maxnoofBearers,	maxCellineNB,
	maxEARFCN,
	maxInterfaces,

	maxnoofBPLMNs,
	maxnoofCells,
	maxnoofEPLMNs,
	maxnoofEPLMNsPlusOne,
	maxnoofForbLACs,
	maxnoofForbTACs,
	maxnoofNeighbours,
	maxnoofPRBs,
	maxNrOfErrors,
	maxPools

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

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


-- B


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


-- C

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

}

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

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



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

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

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

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


-- D


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

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

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



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

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

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


MME-Group-ID	::= OCTET STRING (SIZE (2))

MME-Code		::= OCTET STRING (SIZE (1))

Measurement-ID	::= INTEGER (1..4095, ...)

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

PDCP-SN ::= INTEGER (0..4095)

PCI ::= INTEGER (0..503, ...)


PLMN-Identity ::= OCTET STRING (SIZE(3))

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

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

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

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

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)


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

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)


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

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

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

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

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

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

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


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




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




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



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
