-- **************************************************************
--
-- PDU definitions for RANAP.
--
-- **************************************************************

RANAP-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0)
umts-Access (20) modules (3) ranap (0) version1 (1) ranap-PDU-Contents (1) }

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

-- **************************************************************
--
-- IE parameter types from other modules.
--
-- **************************************************************

IMPORTS
	AccuracyFulfilmentIndicator,
	APN,
	BroadcastAssistanceDataDecipheringKeys,
	LocationRelatedDataRequestType,
	LocationRelatedDataRequestTypeSpecificToGERANIuMode,
	DataVolumeReference,
	CellLoadInformation,
	AreaIdentity,
	CN-DomainIndicator,
	Cause,
	Cell-Access-Mode,
	ClientType,
	CriticalityDiagnostics,
	ChosenEncryptionAlgorithm,
	ChosenIntegrityProtectionAlgorithm,
	ClassmarkInformation2,
	ClassmarkInformation3,
	CSG-Id,
	CSG-Id-List,
	CSG-Membership-Status,
	DL-GTP-PDU-SequenceNumber,
	DL-N-PDU-SequenceNumber,
	DataVolumeReportingIndication,
	DeltaRAListofIdleModeUEs,
	DRX-CycleLengthCoefficient,
	EncryptionInformation,
	EncryptionKey,
	E-UTRAN-Service-Handover,
	ExtendedRNC-ID,
	FrequenceLayerConvergenceFlag,
	GERAN-BSC-Container,
	GERAN-Classmark,
	GlobalCN-ID,
	GlobalRNC-ID,
	GTP-TEI,
	IncludeVelocity,
	InformationExchangeID,
	InformationExchangeType,
	InformationRequested,
	InformationRequestType,
	InformationTransferID,
	InformationTransferType,
	InterSystemInformationTransferType,
	IntegrityProtectionInformation,
	IntegrityProtectionKey,
	InterSystemInformation-TransparentContainer,
	IPMulticastAddress,
	IuSignallingConnectionIdentifier,
	IuTransportAssociation,
	KeyStatus,
	L3-Information,
	LAI,
	LastKnownServiceArea,
	Correlation-ID,
	MBMS-PTP-RAB-ID,
	MBMSBearerServiceType,
	MBMSCountingInformation,
	MBMSCNDe-Registration,
	MBMSHCIndicator,
	MBMSRegistrationRequestType,
	MBMSServiceArea,
	MBMSSessionDuration,
	MBMSSessionIdentity,
	MBMSSessionRepetitionNumber,
	MSISDN,
	NAS-PDU,
	NAS-SequenceNumber,
	NAS-SynchronisationIndicator,
	NewBSS-To-OldBSS-Information,
	NonSearchingIndication,
	NumberOfSteps,
	Offload-RAB-Parameters,
	Offload-RAB-Parameters-APN,
	Offload-RAB-Parameters-ChargingCharacteristics,
	OMC-ID,
	OldBSS-ToNewBSS-Information,
	PagingAreaID,
	PagingCause,
	PDP-TypeInformation, 
	PDP-TypeInformation-extension,
	PermanentNAS-UE-ID,
	PLMNidentity,
	PositionData,
	PositionDataSpecificToGERANIuMode,
	PositioningPriority,
	ProvidedData,
	RAB-ID,
	RAB-Parameters,
	RAC,
	RAListofIdleModeUEs,
	RAT-Type,
	RedirectAttemptFlag,
	RedirectionCompleted,
	RejectCauseValue,
	RelocationType,
	RequestedGANSSAssistanceData,
	RequestType,
	Requested-RAB-Parameter-Values,
	ResponseTime,
	RRC-Container,
	RSRVCC-Operation-Possible,
	RSRQ-Type,
	RSRQ-Extension,
	SAI,
	SAPI,
	Service-Handover,
	SessionUpdateID,
	SNA-Access-Information,
	SourceBSS-ToTargetBSS-TransparentContainer,
	SourceID,
	Source-ToTarget-TransparentContainer,
	SourceRNC-ToTargetRNC-TransparentContainer,
	SRVCC-HO-Indication,
	SRVCC-Information,
	SRVCC-Operation-Possible,
	TargetBSS-ToSourceBSS-TransparentContainer,
	TargetID,
	Target-ToSource-TransparentContainer,
	TargetRNC-ToSourceRNC-TransparentContainer,
	TemporaryUE-ID,
	TimeToMBMSDataTransfer,
	TMGI,
	TracePropagationParameters,
	TraceReference,
	TraceType,
	UnsuccessfullyTransmittedDataVolume,
	TransportLayerAddress,
	TriggerID,
	UE-AggregateMaximumBitRate,
	UE-ID,
	UESBI-Iu,
	UL-GTP-PDU-SequenceNumber,
	UL-N-PDU-SequenceNumber,
	UP-ModeVersions,
	UserPlaneMode,
	VelocityEstimate,
	VerticalAccuracyCode,
	VoiceSupportMatchIndicator,
	Alt-RAB-Parameters,
	Ass-RAB-Parameters,
	PeriodicLocationInfo,
	SubscriberProfileIDforRFP,
	RNSAPRelocationParameters,
	RABParametersList,
	MDT-Configuration,
	Priority-Class-Indicator,
	Management-Based-MDT-Allowed,
	HigherBitratesThan16MbpsFlag,
	End-Of-CSFB,
	Out-Of-UTRAN,
	RSRVCC-HO-Indication,
	RSRVCC-Information,
	MDT-PLMN-List,
	TunnelInformation,
	LHN-ID,
	Session-Re-establishment-Indicator

FROM RANAP-IEs

	PrivateIE-Container{},
	ProtocolExtensionContainer{},
	ProtocolIE-ContainerList{},
	ProtocolIE-ContainerPair{},
	ProtocolIE-ContainerPairList{},
	ProtocolIE-Container{},
	RANAP-PRIVATE-IES,
	RANAP-PROTOCOL-EXTENSION,
	RANAP-PROTOCOL-IES,
	RANAP-PROTOCOL-IES-PAIR
FROM RANAP-Containers

	maxNrOfDTs,
	maxNrOfErrors,
	maxNrOfIuSigConIds,
	maxNrOfRABs,
	maxNrOfVol,
	maxnoofMulticastServicesPerUE,

	id-AccuracyFulfilmentIndicator,
	id-APN,
	id-AreaIdentity,
	id-Alt-RAB-Parameters,
	id-Ass-RAB-Parameters,
	id-BroadcastAssistanceDataDecipheringKeys,
	id-LocationRelatedDataRequestType,
	id-CN-DomainIndicator,
	id-Cause,
	id-Cell-Access-Mode,
	id-ChosenEncryptionAlgorithm,
	id-ChosenIntegrityProtectionAlgorithm,
	id-ClassmarkInformation2,
	id-ClassmarkInformation3,
	id-ClientType,
	id-CNMBMSLinkingInformation,
	id-CriticalityDiagnostics,
	id-CSG-Id,
	id-CSG-Id-List,
	id-CSG-Membership-Status,
	id-DeltaRAListofIdleModeUEs,
	id-DRX-CycleLengthCoefficient,
	id-DirectTransferInformationItem-RANAP-RelocInf,
	id-DirectTransferInformationList-RANAP-RelocInf,
	id-DL-GTP-PDU-SequenceNumber,
	id-EncryptionInformation,
	id-EncryptionKey,
	id-ExtendedRNC-ID,
	id-FrequenceLayerConvergenceFlag,
	id-GERAN-BSC-Container,
	id-GERAN-Classmark,
	id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item,
	id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse,
	id-GlobalCN-ID,
	id-GlobalCN-IDCS,
	id-GlobalCN-IDPS,
	id-GlobalRNC-ID,
	id-IncludeVelocity,
	id-InformationExchangeID,
	id-InformationExchangeType,
	id-InformationRequested,
	id-InformationRequestType,
	id-InformationTransferID,
	id-InformationTransferType,
	id-IntegrityProtectionInformation,
	id-IntegrityProtectionKey,
	id-InterSystemInformationTransferType,
	id-InterSystemInformation-TransparentContainer,
	id-IPMulticastAddress,
	id-IuSigConId,
	id-OldIuSigConId,
	id-OldIuSigConIdCS,
	id-OldIuSigConIdPS,
	id-IuSigConIdItem,
	id-IuSigConIdList,
	id-IuTransportAssociation,
	id-JoinedMBMSBearerServicesList,
	id-KeyStatus,
	id-L3-Information,
	id-LAI,
	id-LastKnownServiceArea,
	id-LeftMBMSBearerServicesList,
	id-LocationRelatedDataRequestTypeSpecificToGERANIuMode,
	id-MBMSBearerServiceType,
	id-MBMSCountingInformation,
	id-MBMSCNDe-Registration,
	id-MBMSRegistrationRequestType,
	id-MBMSSynchronisationInformation,
	id-MBMSServiceArea,
	id-MBMSSessionDuration,
	id-MBMSSessionIdentity,
	id-MBMSSessionRepetitionNumber,
	id-MSISDN,
	id-NAS-PDU,
	id-NAS-SequenceNumber,
	id-NewBSS-To-OldBSS-Information,
	id-NonSearchingIndication,
	id-NumberOfSteps,
	id-Offload-RAB-Parameters,
	id-OMC-ID,
	id-OldBSS-ToNewBSS-Information,
	id-PagingAreaID,
	id-PagingCause,
	id-PDP-TypeInformation,
	id-PDP-TypeInformation-extension,
	id-PermanentNAS-UE-ID,
	id-PositionData,
	id-PositionDataSpecificToGERANIuMode,
	id-PositioningPriority,
	id-ProvidedData,
	id-RAB-ContextItem,
	id-RAB-ContextList,
	id-RAB-ContextFailedtoTransferItem,
	id-RAB-ContextFailedtoTransferList,
	id-RAB-ContextItem-RANAP-RelocInf,
	id-RAB-ContextList-RANAP-RelocInf,
	id-RAB-DataForwardingItem,
	id-RAB-DataForwardingItem-SRNS-CtxReq,
	id-RAB-DataForwardingList,
	id-RAB-DataForwardingList-SRNS-CtxReq,
	id-RAB-DataVolumeReportItem,
	id-RAB-DataVolumeReportList,
	id-RAB-DataVolumeReportRequestItem,
	id-RAB-DataVolumeReportRequestList,
	id-RAB-FailedItem,
	id-RAB-FailedList,
	id-RAB-FailedList-EnhRelocInfoRes,
	id-RAB-FailedItem-EnhRelocInfoRes,
	id-RAB-FailedtoReportItem,
	id-RAB-FailedtoReportList,
	id-RAB-ID,
	id-RAB-ModifyList,
	id-RAB-ModifyItem,
	id-RAB-Parameters,
	id-RAB-QueuedItem,
	id-RAB-QueuedList,
	id-RAB-ReleaseFailedList,
	id-RAB-ReleaseItem,
	id-RAB-ReleasedItem-IuRelComp,
	id-RAB-ReleaseList,
	id-RAB-ReleasedItem,
	id-RAB-ReleasedList,
	id-RAB-ReleasedList-IuRelComp,
	id-RAB-RelocationReleaseItem,
	id-RAB-RelocationReleaseList,
	id-RAB-SetupItem-RelocReq,
	id-RAB-SetupItem-RelocReqAck,
	id-RAB-SetupList-RelocReq,
	id-RAB-SetupList-RelocReqAck,
	id-RAB-SetupList-EnhRelocInfoReq,
	id-RAB-SetupItem-EnhRelocInfoReq,
	id-RAB-SetupList-EnhRelocInfoRes,
	id-RAB-SetupItem-EnhRelocInfoRes,
	id-RAB-SetupList-EnhancedRelocCompleteReq,
	id-RAB-SetupItem-EnhancedRelocCompleteReq,
	id-RAB-SetupList-EnhancedRelocCompleteRes,
	id-RAB-SetupItem-EnhancedRelocCompleteRes,
	id-RAB-SetupOrModifiedItem,
	id-RAB-SetupOrModifiedList,
	id-RAB-SetupOrModifyItem,
	id-RAB-SetupOrModifyList,
	id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes,
	id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes,
	id-RAC,
	id-RAListofIdleModeUEs,
	id-RAT-Type,
	id-RedirectAttemptFlag,
	id-RedirectionCompleted,
	id-RedirectionIndication,
	id-RejectCauseValue,
	id-RelocationType,
	id-Relocation-SourceRNC-ID,
	id-Relocation-SourceExtendedRNC-ID,
	id-Relocation-TargetRNC-ID,
	id-Relocation-TargetExtendedRNC-ID,
	id-RequestedGANSSAssistanceData,
	id-RequestType,
	id-ResponseTime,
	id-RSRVCC-Operation-Possible,
	id-SAI,
	id-SAPI,
	id-SelectedPLMN-ID,
	id-SessionUpdateID,
	id-SNA-Access-Information,
	id-SourceBSS-ToTargetBSS-TransparentContainer,
	id-SourceRNC-ID,
	id-SourceExtendedRNC-ID,
	id-SourceID,
	id-Source-ToTarget-TransparentContainer,
	id-SourceRNC-PDCP-context-info,
	id-SRVCC-HO-Indication,
	id-SRVCC-Information,
	id-SRVCC-Operation-Possible,
	id-TargetBSS-ToSourceBSS-TransparentContainer,
	id-TargetID,
	id-Target-ToSource-TransparentContainer,
	id-TemporaryUE-ID,
	id-TimeToMBMSDataTransfer,
	id-TMGI,
	id-TracePropagationParameters,
	id-TraceReference,
	id-TraceType,
	id-TransportLayerAddress,
	id-TransportLayerInformation,
	id-TriggerID,
	id-UE-AggregateMaximumBitRate,
	id-UE-ID,
	id-UESBI-Iu,
	id-UL-GTP-PDU-SequenceNumber,
	id-UnsuccessfulLinkingList,
	id-VelocityEstimate,
	id-VerticalAccuracyCode,
	id-VoiceSupportMatchIndicator,
	id-PeriodicLocationInfo,
	id-BroadcastGANSSAssistanceDataDecipheringKeys,
	id-SubscriberProfileIDforRFP,
	id-E-UTRAN-Service-Handover,
	id-IP-Source-Address,
	id-LGW-TransportLayerAddress,
	id-Correlation-ID,
	id-MDT-Configuration,
	id-RNSAPRelocationParameters,
	id-RABParametersList,
	id-Priority-Class-Indicator,
	id-Management-Based-MDT-Allowed,
	id-HigherBitratesThan16MbpsFlag,
	id-Trace-Collection-Entity-IP-Addess,
	id-End-Of-CSFB,
	id-Out-Of-UTRAN,
	id-RSRVCC-HO-Indication,
	id-RSRVCC-Information,
	id-AnchorPLMN-ID,
	id-Management-Based-MDT-PLMN-List,
	id-Tunnel-Information-for-BBF,
	id-SIPTO-Correlation-ID,
	id-SIPTO-LGW-TransportLayerAddress,
	id-LHN-ID,
	id-LastE-UTRANPLMNIdentity,
	id-Session-Re-establishment-Indicator

FROM RANAP-Constants;

-- **************************************************************
--
-- Common Container Lists
--
-- **************************************************************

RAB-IE-ContainerList		{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfRABs,		{IEsSetParam} }
RAB-IE-ContainerPairList	{ RANAP-PROTOCOL-IES-PAIR	: IEsSetParam }	::= ProtocolIE-ContainerPairList	{ 1, maxNrOfRABs,		{IEsSetParam} }
ProtocolError-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfRABs,		{IEsSetParam} }
IuSigConId-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfIuSigConIds,	{IEsSetParam} }
DirectTransfer-IE-ContainerList	{ RANAP-PROTOCOL-IES		: IEsSetParam }	::= ProtocolIE-ContainerList		{ 1, maxNrOfDTs,		{IEsSetParam} }

-- **************************************************************
--
-- Iu RELEASE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Iu Release Command
--
-- **************************************************************

Iu-ReleaseCommand ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseCommandIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseCommandExtensions} } 	OPTIONAL,
	...
}

Iu-ReleaseCommandIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	 PRESENCE mandatory	},
	...
}

Iu-ReleaseCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-End-Of-CSFB		CRITICALITY ignore	EXTENSION End-Of-CSFB		PRESENCE optional }|
	{ ID id-Out-Of-UTRAN		CRITICALITY ignore	EXTENSION Out-Of-UTRAN		PRESENCE optional }|
	{ ID id-LastE-UTRANPLMNIdentity	CRITICALITY ignore	EXTENSION PLMNidentity		PRESENCE optional },
	...
}

-- **************************************************************
--
-- Iu Release Complete
--
-- **************************************************************

Iu-ReleaseComplete ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseCompleteIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseCompleteExtensions} }	OPTIONAL,
	...
}

Iu-ReleaseCompleteIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataVolumeReportList	CRITICALITY ignore	TYPE RAB-DataVolumeReportList 	PRESENCE optional	} |
	{ ID id-RAB-ReleasedList-IuRelComp	CRITICALITY ignore	TYPE RAB-ReleasedList-IuRelComp	PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional 	},
	...
}

RAB-DataVolumeReportList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportItemIEs} }

RAB-DataVolumeReportItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataVolumeReportItem	CRITICALITY ignore	TYPE RAB-DataVolumeReportItem	PRESENCE mandatory	},
	...
}

RAB-DataVolumeReportItem ::= SEQUENCE {
	rAB-ID					RAB-ID,
	dl-UnsuccessfullyTransmittedDataVolume	DataVolumeList		OPTIONAL
	-- This IE shall always be present although its presence is optional --,
	iE-Extensions				ProtocolExtensionContainer { {RAB-DataVolumeReportItem-ExtIEs} } OPTIONAL,
	...
}

RAB-DataVolumeReportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-ReleasedList-IuRelComp	::= RAB-IE-ContainerList { {RAB-ReleasedItem-IuRelComp-IEs} }

RAB-ReleasedItem-IuRelComp-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ReleasedItem-IuRelComp	CRITICALITY ignore	TYPE RAB-ReleasedItem-IuRelComp				PRESENCE mandatory	},
	...
}

RAB-ReleasedItem-IuRelComp	::= SEQUENCE {
		rAB-ID				RAB-ID,
		dL-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
		uL-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
		iE-Extensions			ProtocolExtensionContainer { {RAB-ReleasedItem-IuRelComp-ExtIEs} }			OPTIONAL,
	...
}

RAB-ReleasedItem-IuRelComp-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}


Iu-ReleaseCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- RELOCATION PREPARATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Relocation Required
--
-- **************************************************************

RelocationRequired ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container			{ {RelocationRequiredIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ {RelocationRequiredExtensions} }				OPTIONAL,
...
}

RelocationRequiredIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RelocationType				CRITICALITY reject	TYPE RelocationType 				PRESENCE mandatory	} |
	{ ID id-Cause					CRITICALITY ignore	TYPE Cause		 			PRESENCE mandatory	} |
	{ ID id-SourceID				CRITICALITY ignore	TYPE SourceID	 				PRESENCE mandatory	} |
	{ ID id-TargetID				CRITICALITY reject	TYPE TargetID	 				PRESENCE mandatory	} |
	{ ID id-ClassmarkInformation2			CRITICALITY reject	TYPE ClassmarkInformation2			PRESENCE conditional
	-- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included --		} |
	{ ID id-ClassmarkInformation3			CRITICALITY ignore	TYPE ClassmarkInformation3			PRESENCE conditional
	-- This IE shall be present if the Target ID IE contains a CGI IE and Source BSS To Target BSS Transparent Container is not included --		} |
	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE Source-ToTarget-TransparentContainer PRESENCE conditional
	-- This IE shall be present if the Target ID IE contains a RNC-ID IE or eNB-ID --								} |
	{ ID id-OldBSS-ToNewBSS-Information		CRITICALITY ignore	TYPE OldBSS-ToNewBSS-Information		PRESENCE optional	} ,
	...
}

RelocationRequiredExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-Classmark					CRITICALITY ignore	EXTENSION GERAN-Classmark		PRESENCE optional} |
-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
	{ ID id-SourceBSS-ToTargetBSS-TransparentContainer	CRITICALITY ignore	EXTENSION SourceBSS-ToTargetBSS-TransparentContainer	PRESENCE optional} |
-- Extension for Release 8 for SRVCC operation --
	{ ID id-SRVCC-HO-Indication				CRITICALITY reject	EXTENSION SRVCC-HO-Indication		PRESENCE optional} |
-- Extension for Release 9 to communicate to the CN the CSG id of the target cell --
	{ ID id-CSG-Id						CRITICALITY reject	EXTENSION CSG-Id 			PRESENCE optional} |
-- Extension for Release 9 to communicate to the CN the hybrid access status of the target cell --
	{ ID id-Cell-Access-Mode				CRITICALITY reject	EXTENSION Cell-Access-Mode		PRESENCE optional} |
-- Extension for Release 11 for rSRVCC operation --
	{ ID id-RSRVCC-HO-Indication				CRITICALITY reject	EXTENSION RSRVCC-HO-Indication		PRESENCE optional},
	...
}

-- **************************************************************
--
-- Relocation Command
--
-- **************************************************************

RelocationCommand ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container			{ {RelocationCommandIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ {RelocationCommandExtensions} }				OPTIONAL,
	...
}

RelocationCommandIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Target-ToSource-TransparentContainer	
							CRITICALITY reject	TYPE Target-ToSource-TransparentContainer PRESENCE optional	} |
	{ ID id-L3-Information				CRITICALITY ignore	TYPE L3-Information				PRESENCE optional	} |
	{ ID id-RAB-RelocationReleaseList		CRITICALITY ignore	TYPE RAB-RelocationReleaseList 			PRESENCE optional	} |
	{ ID id-RAB-DataForwardingList			CRITICALITY ignore	TYPE RAB-DataForwardingList			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
	...
}

RAB-RelocationReleaseList 				::= RAB-IE-ContainerList { {RAB-RelocationReleaseItemIEs} }

RAB-RelocationReleaseItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-RelocationReleaseItem		CRITICALITY ignore	TYPE RAB-RelocationReleaseItem			PRESENCE mandatory	},
	...
}

RAB-RelocationReleaseItem ::= SEQUENCE {
	rAB-ID						RAB-ID,
	iE-Extensions					ProtocolExtensionContainer { {RAB-RelocationReleaseItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-RelocationReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-DataForwardingList 					::= RAB-IE-ContainerList { {RAB-DataForwardingItemIEs} }

RAB-DataForwardingItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataForwardingItem			CRITICALITY ignore	TYPE RAB-DataForwardingItem			PRESENCE mandatory	},
	...
}

RAB-DataForwardingItem ::= SEQUENCE {
	rAB-ID						RAB-ID,
	transportLayerAddress				TransportLayerAddress,
	iuTransportAssociation				IuTransportAssociation,
	iE-Extensions					ProtocolExtensionContainer { {RAB-DataForwardingItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-DataForwardingItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
	{ID id-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress	PRESENCE optional} |
	{ID id-IuTransportAssociation	CRITICALITY ignore	EXTENSION IuTransportAssociation	PRESENCE optional},
	...
}

RelocationCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
	{ ID id-InterSystemInformation-TransparentContainer	CRITICALITY ignore	EXTENSION InterSystemInformation-TransparentContainer	PRESENCE optional} |
-- Extension for Release 6 to enable Inter-RAT PS Handover between UTRAN and GERAN A/Gb --
	{ ID id-TargetBSS-ToSourceBSS-TransparentContainer	CRITICALITY ignore	EXTENSION TargetBSS-ToSourceBSS-TransparentContainer	PRESENCE optional} |
-- Extension for Release 8 for SRVCC operation --
	{ ID id-SRVCC-Information				CRITICALITY reject	EXTENSION SRVCC-Information				PRESENCE optional} |
-- Extension for Release 11 for rSRVCC operation --
	{ ID id-RSRVCC-Information				CRITICALITY reject	EXTENSION RSRVCC-Information				PRESENCE optional},
	...
}

-- **************************************************************
--
-- Relocation Preparation Failure
--
-- **************************************************************

RelocationPreparationFailure ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container		{ {RelocationPreparationFailureIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ {RelocationPreparationFailureExtensions} }			OPTIONAL,
...
}

RelocationPreparationFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
	...
}

RelocationPreparationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
	{ ID id-InterSystemInformation-TransparentContainer	CRITICALITY ignore	EXTENSION InterSystemInformation-TransparentContainer	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- RELOCATION RESOURCE ALLOCATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Relocation Request
--
-- **************************************************************

RelocationRequest ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container			{ {RelocationRequestIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ {RelocationRequestExtensions} }				OPTIONAL,
	...
}

RelocationRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-PermanentNAS-UE-ID			CRITICALITY ignore	TYPE PermanentNAS-UE-ID 			PRESENCE optional	} |
	{ ID id-Cause					CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator			CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
	{ ID id-Source-ToTarget-TransparentContainer	CRITICALITY reject	TYPE SourceRNC-ToTargetRNC-TransparentContainer	PRESENCE mandatory	} |
	{ ID id-RAB-SetupList-RelocReq			CRITICALITY reject	TYPE RAB-SetupList-RelocReq			PRESENCE optional	} |
	{ ID id-IntegrityProtectionInformation		CRITICALITY ignore	TYPE IntegrityProtectionInformation 		PRESENCE optional	} |
	{ ID id-EncryptionInformation			CRITICALITY ignore	TYPE EncryptionInformation 			PRESENCE optional	} |
	{ ID id-IuSigConId				CRITICALITY ignore 	TYPE IuSignallingConnectionIdentifier 		PRESENCE mandatory	},
	...
}

RAB-SetupList-RelocReq 					::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReq-IEs} }

RAB-SetupItem-RelocReq-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-RelocReq			CRITICALITY reject	TYPE RAB-SetupItem-RelocReq			PRESENCE mandatory 	},
	...
}

RAB-SetupItem-RelocReq ::= SEQUENCE {
	rAB-ID				RAB-ID,
	nAS-SynchronisationIndicator	NAS-SynchronisationIndicator	OPTIONAL,
	rAB-Parameters			RAB-Parameters,
	dataVolumeReportingIndication	DataVolumeReportingIndication 	OPTIONAL
	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
	pDP-TypeInformation		PDP-TypeInformation		OPTIONAL
	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
	userPlaneInformation		UserPlaneInformation,
	transportLayerAddress		TransportLayerAddress,
	iuTransportAssociation		IuTransportAssociation,
	service-Handover		Service-Handover		OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { {RAB-SetupItem-RelocReq-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-RelocReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
	{ ID id-Alt-RAB-Parameters		CRITICALITY ignore	EXTENSION Alt-RAB-Parameters		PRESENCE optional}|
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-BSC-Container		CRITICALITY ignore	EXTENSION GERAN-BSC-Container		PRESENCE optional}|
-- Extension for Release 8 to enable handover restriction to E-UTRAN --
	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional}|
-- Extension for Release 9 to enable a new value --
	{ ID id-PDP-TypeInformation-extension 	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional}|
-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
	{ ID id-Offload-RAB-Parameters		CRITICALITY ignore	EXTENSION Offload-RAB-Parameters	PRESENCE optional},
	...
}

UserPlaneInformation ::= SEQUENCE {
	userPlaneMode		UserPlaneMode,
	uP-ModeVersions		UP-ModeVersions,
	iE-Extensions		ProtocolExtensionContainer { {UserPlaneInformation-ExtIEs} }			OPTIONAL,
	...
}

UserPlaneInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RelocationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID			CRITICALITY reject	EXTENSION GlobalCN-ID			PRESENCE optional}|
-- Extension for Release 5 to enable shared networks in connected mode --
	{ ID id-SNA-Access-Information		CRITICALITY ignore	EXTENSION SNA-Access-Information	PRESENCE optional}|
-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
	{ ID id-UESBI-Iu			CRITICALITY ignore	EXTENSION UESBI-Iu			PRESENCE optional}|
-- Extension for Release 6 to convey the selected PLMN id in network sharing mobility scenarios --
	{ ID id-SelectedPLMN-ID	 		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional}|
-- Extension for Release 6 to enable MBMS UE linking at relocation --
	{ ID id-CNMBMSLinkingInformation	CRITICALITY ignore	EXTENSION CNMBMSLinkingInformation	PRESENCE optional}|
	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
-- Extension for Release 9 to communicate to the target cell the CSG id reported by the source --
	{ ID id-CSG-Id 				CRITICALITY reject	EXTENSION CSG-Id 			PRESENCE optional}|
-- Extension for Release 9 for enabling UE prioritisation during access to hybrid cells --
	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional}|
-- Extension for Release 10 to enable offload at Iu-PS for UTRAN --
	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional}|
-- Extension for Release 11 to support rSRVCC in case of network sharing –
	{ ID id-AnchorPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional},
	...
}

CNMBMSLinkingInformation ::= SEQUENCE {
	joinedMBMSBearerService-IEs	JoinedMBMSBearerService-IEs,
	iE-Extensions			ProtocolExtensionContainer { {CNMBMSLinkingInformation-ExtIEs} }		OPTIONAL,
	...
}

CNMBMSLinkingInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

JoinedMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
	SEQUENCE {
		tMGI			TMGI,
		mBMS-PTP-RAB-ID		MBMS-PTP-RAB-ID,
		iE-Extensions		ProtocolExtensionContainer { {JoinedMBMSBearerService-ExtIEs} } OPTIONAL,
		...
	}

JoinedMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Relocation Request Acknowledge
--
-- **************************************************************

RelocationRequestAcknowledge ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RelocationRequestAcknowledgeIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationRequestAcknowledgeExtensions} }			OPTIONAL,
	...
}

RelocationRequestAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY ignore	TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional	} |
	{ ID id-RAB-SetupList-RelocReqAck		CRITICALITY ignore	TYPE RAB-SetupList-RelocReqAck			PRESENCE optional	} |
	{ ID id-RAB-FailedList				CRITICALITY ignore	TYPE RAB-FailedList				PRESENCE optional	} |
	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY ignore	TYPE ChosenIntegrityProtectionAlgorithm		PRESENCE optional	} |
	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	TYPE ChosenEncryptionAlgorithm			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
	...
}

RAB-SetupList-RelocReqAck 				::= RAB-IE-ContainerList { {RAB-SetupItem-RelocReqAck-IEs} }

RAB-SetupItem-RelocReqAck-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-RelocReqAck		CRITICALITY reject	TYPE RAB-SetupItem-RelocReqAck			PRESENCE mandatory 	},
	...
}

RAB-SetupItem-RelocReqAck ::= SEQUENCE {
	rAB-ID			RAB-ID,
	transportLayerAddress	TransportLayerAddress	OPTIONAL,
	iuTransportAssociation	IuTransportAssociation	OPTIONAL,
	iE-Extensions		ProtocolExtensionContainer { {RAB-SetupItem-RelocReqAck-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-RelocReqAck-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
	{ID id-Ass-RAB-Parameters	CRITICALITY ignore	EXTENSION Ass-RAB-Parameters		PRESENCE optional	} |
-- Extension for Release 5 to allow transfer of a second pair of TLA and association --
	{ID id-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional	} |
	{ID id-IuTransportAssociation	CRITICALITY ignore	EXTENSION IuTransportAssociation	PRESENCE optional	},
	...
}

RAB-FailedList 						::= RAB-IE-ContainerList { {RAB-FailedItemIEs} }

RAB-FailedItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-FailedItem		CRITICALITY ignore	TYPE RAB-FailedItem			PRESENCE mandatory	},
	...
}

RAB-FailedItem ::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	iE-Extensions	ProtocolExtensionContainer { {RAB-FailedItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-FailedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RelocationRequestAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
	{ID id-NewBSS-To-OldBSS-Information	CRITICALITY ignore	EXTENSION NewBSS-To-OldBSS-Information	PRESENCE optional	 }|
	{ID id-CSG-Id				CRITICALITY ignore	EXTENSION CSG-Id			PRESENCE optional	},
	...
}

-- **************************************************************
--
-- Relocation Failure
--
-- **************************************************************

RelocationFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RelocationFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationFailureExtensions} }				OPTIONAL,
	...
}

RelocationFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
	...
}

RelocationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable Inter RAN Load Information Exchange over Iu --
	{ ID id-NewBSS-To-OldBSS-Information	CRITICALITY ignore	EXTENSION NewBSS-To-OldBSS-Information		PRESENCE optional	} |
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-Classmark			CRITICALITY ignore	EXTENSION GERAN-Classmark			PRESENCE optional	},
	...
}

-- **************************************************************
--
-- RELOCATION CANCEL ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Relocation Cancel
--
-- **************************************************************

RelocationCancel ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RelocationCancelIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCancelExtensions} }				OPTIONAL,
	...
}

RelocationCancelIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	PRESENCE mandatory	},
	...
}

RelocationCancelExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Relocation Cancel Acknowledge
--
-- **************************************************************

RelocationCancelAcknowledge ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RelocationCancelAcknowledgeIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCancelAcknowledgeExtensions} } 			OPTIONAL,
	...
}

RelocationCancelAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
	...
}

RelocationCancelAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- SRNS CONTEXT TRANSFER OPEARATION
--
-- **************************************************************

-- **************************************************************
--
-- SRNS Context Request
--
-- **************************************************************

SRNS-ContextRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SRNS-ContextRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-ContextRequestExtensions} }				OPTIONAL,
	...
}

SRNS-ContextRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataForwardingList-SRNS-CtxReq	CRITICALITY ignore	TYPE RAB-DataForwardingList-SRNS-CtxReq		PRESENCE mandatory	},
	...
}

RAB-DataForwardingList-SRNS-CtxReq ::= RAB-IE-ContainerList { {RAB-DataForwardingItem-SRNS-CtxReq-IEs} }

RAB-DataForwardingItem-SRNS-CtxReq-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataForwardingItem-SRNS-CtxReq	CRITICALITY reject	TYPE RAB-DataForwardingItem-SRNS-CtxReq		PRESENCE mandatory	},
	...
}

RAB-DataForwardingItem-SRNS-CtxReq ::= SEQUENCE {
	rAB-ID		RAB-ID,
	iE-Extensions	ProtocolExtensionContainer { {RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs} }			OPTIONAL,
	...
}

RAB-DataForwardingItem-SRNS-CtxReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

SRNS-ContextRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- The SGSN may include the IE, when available to indicate the RAT from which the context request originates, to correct measurement points in SRNC. --
	{ID id-RAT-Type		CRITICALITY ignore	EXTENSION 	RAT-Type		PRESENCE optional },
	...
}

-- **************************************************************
--
-- SRNS Context Response
--
-- **************************************************************

SRNS-ContextResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SRNS-ContextResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-ContextResponseExtensions} }				OPTIONAL,
	...
}

SRNS-ContextResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ContextList			CRITICALITY ignore	TYPE RAB-ContextList			PRESENCE optional	} |
	{ ID id-RAB-ContextFailedtoTransferList	CRITICALITY ignore	TYPE RABs-ContextFailedtoTransferList	PRESENCE optional	}|
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	},
	...
}

RAB-ContextList 					::= RAB-IE-ContainerList { {RAB-ContextItemIEs} }

RAB-ContextItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ContextItem			CRITICALITY ignore	TYPE RAB-ContextItem		PRESENCE mandatory	},
	...
}

RAB-ContextItem ::= SEQUENCE {
	rAB-ID				RAB-ID,
	dl-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
	ul-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
	dl-N-PDU-SequenceNumber		DL-N-PDU-SequenceNumber 	OPTIONAL,
	ul-N-PDU-SequenceNumber		UL-N-PDU-SequenceNumber 	OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-ContextItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}
s
RABs-ContextFailedtoTransferList ::= RAB-IE-ContainerList { {RABs-ContextFailedtoTransferItemIEs} }

RABs-ContextFailedtoTransferItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ContextFailedtoTransferItem		CRITICALITY ignore	TYPE RABs-ContextFailedtoTransferItem			PRESENCE mandatory	},
	...
}

RABs-ContextFailedtoTransferItem::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	iE-Extensions	ProtocolExtensionContainer { { RABs-ContextFailedtoTransferItem-ExtIEs} }			OPTIONAL,
	...
}


RABs-ContextFailedtoTransferItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

SRNS-ContextResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- SECURITY MODE CONTROL ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Security Mode Command
--
-- **************************************************************

SecurityModeCommand ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SecurityModeCommandIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeCommandExtensions} }				OPTIONAL,
	...
}

SecurityModeCommandIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-IntegrityProtectionInformation	CRITICALITY reject	TYPE IntegrityProtectionInformation	PRESENCE mandatory	} |
	{ ID id-EncryptionInformation		CRITICALITY ignore	TYPE EncryptionInformation		PRESENCE optional	} |
	{ ID id-KeyStatus			CRITICALITY reject	TYPE KeyStatus				PRESENCE mandatory},
	...
}

SecurityModeCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Security Mode Complete
--
-- **************************************************************

SecurityModeComplete ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SecurityModeCompleteIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeCompleteExtensions} }				OPTIONAL,
	...
}

SecurityModeCompleteIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY reject	TYPE ChosenIntegrityProtectionAlgorithm 	PRESENCE mandatory	} |
	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	TYPE ChosenEncryptionAlgorithm			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional	},
	...
}

SecurityModeCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Security Mode Reject
--
-- **************************************************************

SecurityModeReject ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SecurityModeRejectIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SecurityModeRejectExtensions} }				OPTIONAL,
	...
}

SecurityModeRejectIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
	...
}

SecurityModeRejectExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- DATA VOLUME REPORT ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Data Volume Report Request
--
-- **************************************************************

DataVolumeReportRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {DataVolumeReportRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {DataVolumeReportRequestExtensions} }			OPTIONAL,
	...
}

DataVolumeReportRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataVolumeReportRequestList		CRITICALITY ignore	TYPE RAB-DataVolumeReportRequestList		PRESENCE mandatory	},
	...
}

RAB-DataVolumeReportRequestList ::= RAB-IE-ContainerList { {RAB-DataVolumeReportRequestItemIEs} }

RAB-DataVolumeReportRequestItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataVolumeReportRequestItem		CRITICALITY reject	TYPE RAB-DataVolumeReportRequestItem		PRESENCE mandatory	},
	...
}

RAB-DataVolumeReportRequestItem ::= SEQUENCE {
	rAB-ID		RAB-ID,
	iE-Extensions	ProtocolExtensionContainer { {RAB-DataVolumeReportRequestItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-DataVolumeReportRequestItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

DataVolumeReportRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Data Volume Report
--
-- **************************************************************

DataVolumeReport ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {DataVolumeReportIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {DataVolumeReportExtensions} }				OPTIONAL,
	...
}

DataVolumeReportIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataVolumeReportList	CRITICALITY ignore	TYPE RAB-DataVolumeReportList	PRESENCE optional	} |
	{ ID id-RAB-FailedtoReportList		CRITICALITY ignore	TYPE RABs-failed-to-reportList	PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
	...
}

DataVolumeReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RABs-failed-to-reportList 	::= RAB-IE-ContainerList { {RABs-failed-to-reportItemIEs} }

RABs-failed-to-reportItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-FailedtoReportItem		CRITICALITY ignore	TYPE RABs-failed-to-reportItem			PRESENCE mandatory	},
	...
}

RABs-failed-to-reportItem::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	iE-Extensions	ProtocolExtensionContainer { { RABs-failed-to-reportItem-ExtIEs} }			OPTIONAL,
	...
}


RABs-failed-to-reportItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}


-- **************************************************************
--
-- RESET ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Reset
--
-- **************************************************************

Reset ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container			{ {ResetIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ {ResetExtensions} }					OPTIONAL,
	...
}

ResetIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause					CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator			CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
	{ ID id-GlobalRNC-ID				CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
	...
}

ResetExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID				CRITICALITY ignore		EXTENSION GlobalCN-ID				PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID				CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
	...
}

-- **************************************************************
--
-- Reset Acknowledge
--
-- **************************************************************

ResetAcknowledge ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ResetAcknowledgeIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ResetAcknowledgeExtensions} }				OPTIONAL,
	...
}

ResetAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	},
	...
}

ResetAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}
-- **************************************************************
--
-- RESET RESOURCE ELEMENTARY PROCEDURE
--
-- **************************************************************


-- **************************************************************
--
-- Reset Resource
--
-- **************************************************************

ResetResource ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ResetResourceIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ResetResourceExtensions} }					OPTIONAL,
	...
}

ResetResourceIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	} |
	{ ID id-IuSigConIdList		CRITICALITY ignore	TYPE ResetResourceList				PRESENCE mandatory	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
	...
}

ResetResourceList 	::=	IuSigConId-IE-ContainerList{ {ResetResourceItemIEs} }

ResetResourceItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-IuSigConIdItem		CRITICALITY reject	TYPE	ResetResourceItem			PRESENCE mandatory	},
	...
}

ResetResourceItem ::= SEQUENCE {
	iuSigConId		IuSignallingConnectionIdentifier,
	iE-Extensions		ProtocolExtensionContainer { { ResetResourceItem-ExtIEs} }			OPTIONAL,
	...
}

ResetResourceItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

ResetResourceExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID	CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- Reset Resource Acknowledge
--
-- **************************************************************

ResetResourceAcknowledge ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ResetResourceAcknowledgeIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ResetResourceAcknowledgeExtensions} }				OPTIONAL,
	...
}

ResetResourceAcknowledgeIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-IuSigConIdList		CRITICALITY ignore	TYPE ResetResourceAckList	PRESENCE mandatory	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	},
	...
}
ResetResourceAckList 	::=	IuSigConId-IE-ContainerList{ {ResetResourceAckItemIEs} }

ResetResourceAckItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-IuSigConIdItem		CRITICALITY reject	TYPE	ResetResourceAckItem	PRESENCE mandatory	},
	...
}

ResetResourceAckItem ::= SEQUENCE {
	iuSigConId		IuSignallingConnectionIdentifier,
	iE-Extensions		ProtocolExtensionContainer { { ResetResourceAckItem-ExtIEs} }			OPTIONAL,
	...
}

ResetResourceAckItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

ResetResourceAcknowledgeExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID	CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID	CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional},
	...
}

-- **************************************************************
--
-- RAB RELEASE REQUEST ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- RAB Release Request
--
-- **************************************************************

RAB-ReleaseRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RAB-ReleaseRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RAB-ReleaseRequestExtensions} }				OPTIONAL,
	...
}

RAB-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ReleaseList	CRITICALITY ignore	TYPE RAB-ReleaseList	PRESENCE mandatory	},
	...
}

RAB-ReleaseList	::= RAB-IE-ContainerList { {RAB-ReleaseItemIEs} }

RAB-ReleaseItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ReleaseItem	CRITICALITY ignore	TYPE RAB-ReleaseItem	PRESENCE mandatory	},
	...
}

RAB-ReleaseItem ::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	iE-Extensions	ProtocolExtensionContainer { {RAB-ReleaseItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-ReleaseItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Iu RELEASE REQUEST ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Iu Release Request
--
-- **************************************************************

Iu-ReleaseRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {Iu-ReleaseRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {Iu-ReleaseRequestExtensions} }				OPTIONAL,
	...
}

Iu-ReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	PRESENCE mandatory	},
	...
}

Iu-ReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- RELOCATION DETECT ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Relocation Detect
--
-- **************************************************************

RelocationDetect ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RelocationDetectIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationDetectExtensions} }				OPTIONAL,
	...
}

RelocationDetectIEs RANAP-PROTOCOL-IES ::= {
	...
}

RelocationDetectExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- RELOCATION COMPLETE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Relocation Complete
--
-- **************************************************************

RelocationComplete ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container			{ {RelocationCompleteIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RelocationCompleteExtensions} }				OPTIONAL,
	...
}

RelocationCompleteIEs RANAP-PROTOCOL-IES ::= {
	...
}

RelocationCompleteExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
	{ ID id-HigherBitratesThan16MbpsFlag		CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag	PRESENCE optional}|
-- Extension for Release 11 to support BBAI -- 
	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	EXTENSION TunnelInformation		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
	...
}

-- **************************************************************
--
-- ENHANCED RELOCATION COMPLETE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Enhanced Relocation Complete Request
--
-- **************************************************************

EnhancedRelocationCompleteRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteRequestExtensions} }		OPTIONAL,
	...
}

EnhancedRelocationCompleteRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-OldIuSigConId				CRITICALITY reject	TYPE IuSignallingConnectionIdentifier		PRESENCE mandatory } |
	{ ID id-IuSigConId				CRITICALITY reject	TYPE IuSignallingConnectionIdentifier		PRESENCE mandatory } |
	{ ID id-Relocation-SourceRNC-ID			CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE mandatory } |
	{ ID id-Relocation-SourceExtendedRNC-ID		CRITICALITY ignore	TYPE ExtendedRNC-ID				PRESENCE optional } |
	{ ID id-Relocation-TargetRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID				PRESENCE mandatory } |
	{ ID id-Relocation-TargetExtendedRNC-ID		CRITICALITY reject	TYPE ExtendedRNC-ID				PRESENCE optional } |
	{ ID id-RAB-SetupList-EnhancedRelocCompleteReq	CRITICALITY reject	TYPE RAB-SetupList-EnhancedRelocCompleteReq	PRESENCE optional },
	...
}

RAB-SetupList-EnhancedRelocCompleteReq 				::= RAB-IE-ContainerList { { RAB-SetupItem-EnhancedRelocCompleteReq-IEs} }

RAB-SetupItem-EnhancedRelocCompleteReq-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-EnhancedRelocCompleteReq	CRITICALITY reject	TYPE RAB-SetupItem-EnhancedRelocCompleteReq	PRESENCE mandatory 	},
	...
}

RAB-SetupItem-EnhancedRelocCompleteReq ::= SEQUENCE {
	rAB-ID				RAB-ID,
	transportLayerAddressReq1	TransportLayerAddress	OPTIONAL,
	iuTransportAssociationReq1	IuTransportAssociation	OPTIONAL,
	ass-RAB-Parameters		Ass-RAB-Parameters OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-EnhancedRelocCompleteReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

EnhancedRelocationCompleteRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-ChosenIntegrityProtectionAlgorithm	CRITICALITY ignore	EXTENSION ChosenIntegrityProtectionAlgorithm	PRESENCE optional}|
	{ ID id-ChosenEncryptionAlgorithm		CRITICALITY ignore	EXTENSION ChosenEncryptionAlgorithm		PRESENCE optional}|
-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
	{ ID id-HigherBitratesThan16MbpsFlag		CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag		PRESENCE optional}|
-- Extensions for Release 11 to enable enhanced relocation from RNC to hybrid cell –
	{ ID id-CSG-Id					CRITICALITY reject	EXTENSION CSG-Id				PRESENCE optional}|
	{ ID id-Cell-Access-Mode			CRITICALITY reject	EXTENSION Cell-Access-Mode			PRESENCE optional}|
-- Extension for Release 11 to support BBAI -- 
	{ ID id-Tunnel-Information-for-BBF		CRITICALITY ignore	EXTENSION TunnelInformation			PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID				PRESENCE optional},
	...
}

-- **************************************************************
--
-- Enhanced Relocation Complete Response
--
-- **************************************************************

EnhancedRelocationCompleteResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteResponseExtensions} }			OPTIONAL,
	...
}

EnhancedRelocationCompleteResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupList-EnhancedRelocCompleteRes		CRITICALITY ignore	TYPE RAB-SetupList-EnhancedRelocCompleteRes	PRESENCE optional} |
	{ ID id-RAB-ToBeReleasedList-EnhancedRelocCompleteRes	CRITICALITY ignore	TYPE RAB-ToBeReleasedList-EnhancedRelocCompleteRes	PRESENCE optional} |
	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
	...
}

RAB-SetupList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-SetupItem-EnhancedRelocCompleteRes-IEs} }

RAB-SetupItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-EnhancedRelocCompleteRes		CRITICALITY reject	TYPE RAB-SetupItem-EnhancedRelocCompleteRes		PRESENCE mandatory 	},
	...
}

RAB-SetupItem-EnhancedRelocCompleteRes ::= SEQUENCE {
	rAB-ID				RAB-ID,
	rAB-Parameters			RAB-Parameters	OPTIONAL,
	userPlaneInformation		UserPlaneInformation,
	transportLayerAddressRes1	TransportLayerAddress	OPTIONAL,
	iuTransportAssociationRes1	IuTransportAssociation	OPTIONAL,
	rab2beReleasedList		RAB-ToBeReleasedList-EnhancedRelocCompleteRes OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
	{ ID id-Offload-RAB-Parameters	CRITICALITY ignore	EXTENSION Offload-RAB-Parameters			PRESENCE optional},
	...
}

RAB-ToBeReleasedList-EnhancedRelocCompleteRes ::= RAB-IE-ContainerList { {RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs} }

RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ToBeReleasedItem-EnhancedRelocCompleteRes		CRITICALITY ignore	TYPE RAB-ToBeReleasedItem-EnhancedRelocCompleteRes		PRESENCE mandatory 	},
	...
}

RAB-ToBeReleasedItem-EnhancedRelocCompleteRes ::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	iE-Extensions	ProtocolExtensionContainer { { RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs} }			OPTIONAL,
	...
}

RAB-ToBeReleasedItem-EnhancedRelocCompleteRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

EnhancedRelocationCompleteResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional}|
-- Extension for Release 11 to enable ehnahced relocation from RNC to hybrid cell –
	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional},
	...
}

-- **************************************************************
--
-- Enhanced Relocation Complete Failure
--
-- **************************************************************

EnhancedRelocationCompleteFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteFailureExtensions} }				OPTIONAL,
	...
}

EnhancedRelocationCompleteFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics 	PRESENCE optional	},
	...
}

EnhancedRelocationCompleteFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Enhanced Relocation Complete Confirm
--
-- **************************************************************

EnhancedRelocationCompleteConfirm ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {EnhancedRelocationCompleteConfirmIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {EnhancedRelocationCompleteConfirmExtensions} }				OPTIONAL,
	...
}

EnhancedRelocationCompleteConfirmIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-FailedList	CRITICALITY ignore	TYPE RAB-FailedList				PRESENCE optional },
	...
}

EnhancedRelocationCompleteConfirmExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}


-- **************************************************************
--
-- PAGING ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Paging
--
-- **************************************************************

Paging ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {PagingIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {PagingExtensions} }					OPTIONAL,
	...
}

PagingIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator		CRITICALITY ignore	TYPE CN-DomainIndicator			PRESENCE mandatory	} |
	{ ID id-PermanentNAS-UE-ID 		CRITICALITY ignore	TYPE PermanentNAS-UE-ID			PRESENCE mandatory	} |
	{ ID id-TemporaryUE-ID			CRITICALITY ignore	TYPE TemporaryUE-ID			PRESENCE optional	} |
	{ ID id-PagingAreaID			CRITICALITY ignore	TYPE PagingAreaID			PRESENCE optional	} |
	{ ID id-PagingCause			CRITICALITY ignore	TYPE PagingCause			PRESENCE optional	} |
	{ ID id-NonSearchingIndication		CRITICALITY ignore	TYPE NonSearchingIndication		PRESENCE optional	} |
	{ ID id-DRX-CycleLengthCoefficient	CRITICALITY ignore	TYPE DRX-CycleLengthCoefficient		PRESENCE optional	} ,
	...
}

PagingExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable NNSF --
	{ ID id-GlobalCN-ID			CRITICALITY ignore	EXTENSION GlobalCN-ID			PRESENCE optional	} |
-- Extension for Release 8 to support CSG --
	{ ID id-CSG-Id-List			CRITICALITY ignore	EXTENSION CSG-Id-List			PRESENCE optional	},
	...
}

-- **************************************************************
--
-- COMMON ID ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Common ID
--
-- **************************************************************

CommonID ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {CommonID-IEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {CommonIDExtensions} }					OPTIONAL,
	...
}

CommonID-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-PermanentNAS-UE-ID	CRITICALITY ignore	TYPE PermanentNAS-UE-ID				PRESENCE mandatory	},
	...
}

CommonIDExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable shared networks in connected mode --
	{ ID id-SNA-Access-Information		CRITICALITY ignore	EXTENSION SNA-Access-Information	PRESENCE optional }|
-- Extension for Release 5 to enable specific behaviour by the RNC in relation with early UE handling --
	{ ID id-UESBI-Iu			CRITICALITY ignore	EXTENSION UESBI-Iu			PRESENCE optional }|
-- Extension for Release 6 to indicate the selected plmn in GWCN configuration for network sharing non-supporting UEs --
	{ ID id-SelectedPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional }|
-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
	{ID id-SubscriberProfileIDforRFP	CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP	PRESENCE optional }|
-- Extension for Release 8 for SRVCC operation --
	{ ID id-SRVCC-Operation-Possible	CRITICALITY ignore	EXTENSION SRVCC-Operation-Possible	PRESENCE optional }|
-- Extension for Release 9 to allow for UE prioritisation during access to hybrid cells --
	{ ID id-CSG-Membership-Status		CRITICALITY ignore	EXTENSION CSG-Membership-Status		PRESENCE optional }|
-- Extension for Release 10 to indicate Management Based MDT Allowed --
	{ ID id-Management-Based-MDT-Allowed	CRITICALITY ignore	EXTENSION Management-Based-MDT-Allowed	PRESENCE optional }|
-- Extension for Release 11 to indicate MDT PLMN List --
	{ ID id-Management-Based-MDT-PLMN-List	CRITICALITY ignore	EXTENSION MDT-PLMN-List			PRESENCE optional }|
-- Extension for Release 11 rSRVCC operation --
	{ ID id-RSRVCC-Operation-Possible	CRITICALITY ignore	EXTENSION RSRVCC-Operation-Possible	PRESENCE optional }|
-- Extension for Release 11 to inidcate the last E-UTRAN PLMN Identity --
	{ ID id-LastE-UTRANPLMNIdentity		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional },
	...
}

-- **************************************************************
--
-- CN INVOKE TRACE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- CN Invoke Trace
--
-- **************************************************************

CN-InvokeTrace ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {CN-InvokeTraceIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {CN-InvokeTraceExtensions} }				OPTIONAL,
	...
}

CN-InvokeTraceIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TraceType 	CRITICALITY ignore	TYPE TraceType 		PRESENCE optional	} |
	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
	{ ID id-TraceReference	CRITICALITY ignore	TYPE TraceReference	PRESENCE mandatory	} |
	{ ID id-TriggerID	CRITICALITY ignore	TYPE TriggerID		PRESENCE optional	} |
	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
	{ ID id-UE-ID		CRITICALITY ignore	TYPE UE-ID		PRESENCE optional	} |
	-- This information is mandatory for UTRAN, optional for GERAN Iu mode --
	{ ID id-OMC-ID		CRITICALITY ignore	TYPE OMC-ID		PRESENCE optional	},
	-- This information is mandatory for GERAN Iu Mode, not applicable to UTRAN --
	...
}

CN-InvokeTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 6 to enable signalling based activation for Subscriber and Equipment Trace over Iu interface --
	{ ID id-TracePropagationParameters		CRITICALITY ignore	EXTENSION TracePropagationParameters	PRESENCE optional}|
-- Extension for Release 10 to support MDT--
	{ ID id-MDT-Configuration			CRITICALITY ignore	EXTENSION MDT-Configuration		PRESENCE optional}|
-- Extension for Release 10 to support MDT--
	{ ID id-Trace-Collection-Entity-IP-Addess	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional},
	...
}

-- **************************************************************
--
-- CN DEACTIVATE TRACE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- CN Deactivate Trace
--
-- **************************************************************

CN-DeactivateTrace ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {CN-DeactivateTraceIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {CN-DeactivateTraceExtensions} }				OPTIONAL,
	...
}

CN-DeactivateTraceIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TraceReference	CRITICALITY ignore	TYPE TraceReference		PRESENCE mandatory } |
	{ ID id-TriggerID	CRITICALITY ignore	TYPE TriggerID			PRESENCE optional },
	-- This information is optional for GERAN Iu Mode, not applicable to UTRAN --
	...
}

CN-DeactivateTraceExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- LOCATION REPORTING CONTROL ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Location Reporting Control
--
-- **************************************************************

LocationReportingControl ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {LocationReportingControlIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {LocationReportingControlExtensions} }			OPTIONAL,
	...
}

LocationReportingControlIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RequestType 	CRITICALITY ignore	TYPE RequestType 	PRESENCE mandatory	},
	...
}

LocationReportingControlExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enhance the location request over Iu --
	{ ID id-VerticalAccuracyCode 	CRITICALITY ignore	EXTENSION VerticalAccuracyCode 	PRESENCE optional	} |
-- Extension for Release 4 to enhance the location request over Iu --
	{ ID id-ResponseTime 		CRITICALITY ignore	EXTENSION ResponseTime 		PRESENCE optional	} |
-- Extension for Release 4 to enhance the location request over Iu --
	{ ID id-PositioningPriority 	CRITICALITY ignore	EXTENSION PositioningPriority 	PRESENCE optional	} |
-- Extension for Release 4 to enhance the location request over Iu --
	{ ID id-ClientType 		CRITICALITY ignore	EXTENSION ClientType 		PRESENCE optional	} |
-- Extension for Release 7 to allow the request of velocity over Iu --
	{ ID id-IncludeVelocity 	CRITICALITY ignore	EXTENSION IncludeVelocity 	PRESENCE optional } |
-- Extension for Release 7 to allow periodic reporting over Iu --
	{ ID id-PeriodicLocationInfo 	CRITICALITY ignore	EXTENSION PeriodicLocationInfo 	PRESENCE optional },
	...
}

-- **************************************************************
--
-- LOCATION REPORT ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Location Report
--
-- **************************************************************

LocationReport ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {LocationReportIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {LocationReportExtensions} }				OPTIONAL,
	...
}

LocationReportIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-AreaIdentity	CRITICALITY ignore	TYPE AreaIdentity	PRESENCE optional	} |
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause		PRESENCE optional	} |
	{ ID id-RequestType 	CRITICALITY ignore	TYPE RequestType 	PRESENCE optional	}	,
	...
}

LocationReportExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enable report of Last Known Service Area with its Age over Iu --
	{ ID id-LastKnownServiceArea			CRITICALITY ignore	EXTENSION LastKnownServiceArea		PRESENCE optional} |
-- Extension for Release 5 to pass the positioning methods that have been used --
	{ ID id-PositionData				CRITICALITY ignore	EXTENSION PositionData			PRESENCE optional}|
-- Extension for Release 5 to pass the positioning methods that have been used for GERAN Iu mode --
	{ ID id-PositionDataSpecificToGERANIuMode	CRITICALITY ignore	EXTENSION PositionDataSpecificToGERANIuMode	PRESENCE optional	}|
	-- This extension is optional for GERAN Iu mode only, not applicable for UTRAN --
-- Extension for Release 6 to indicate whether the returned position estimate satisfies the requested accuracy or not --
	{ ID id-AccuracyFulfilmentIndicator		CRITICALITY ignore	EXTENSION AccuracyFulfilmentIndicator	PRESENCE optional}|
-- Extension for Release 7 to provide a velocity estimate --
	{ ID id-VelocityEstimate			CRITICALITY ignore	EXTENSION VelocityEstimate		PRESENCE optional},
	...
}

-- **************************************************************
--
-- INITIAL UE MESSAGE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Initial UE Message
--
-- **************************************************************

InitialUE-Message ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {InitialUE-MessageIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {InitialUE-MessageExtensions} }				OPTIONAL,
	...
}

InitialUE-MessageIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-LAI			CRITICALITY ignore	TYPE LAI			PRESENCE mandatory	} |
	{ ID id-RAC			CRITICALITY ignore	TYPE RAC			PRESENCE conditional    } |
	-- This IE shall be present if the CN Domain Indicator IE is set to "PS domain"		--			} |
	{ ID id-SAI			CRITICALITY ignore	TYPE SAI			PRESENCE mandatory	} |
	{ ID id-NAS-PDU			CRITICALITY ignore	TYPE NAS-PDU			PRESENCE mandatory	} |
	{ ID id-IuSigConId		CRITICALITY ignore 	TYPE IuSignallingConnectionIdentifier	PRESENCE mandatory 	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory 	},
	...
}

InitialUE-MessageExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-Classmark			CRITICALITY ignore	EXTENSION GERAN-Classmark		PRESENCE optional}|
-- Extension for Release 6 to convey the selected PLMN id in shared networks --
	{ ID id-SelectedPLMN-ID	 		CRITICALITY ignore	EXTENSION PLMNidentity			PRESENCE optional}|
-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
	{ ID id-PermanentNAS-UE-ID		CRITICALITY ignore	EXTENSION PermanentNAS-UE-ID		PRESENCE optional}|
-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
	{ ID id-NAS-SequenceNumber		CRITICALITY ignore	EXTENSION NAS-SequenceNumber		PRESENCE optional}|
-- Extension for Release 6 to indicate rerouting in MOCN configuration for network sharing non-supporting UEs --
	{ ID id-RedirectAttemptFlag		CRITICALITY ignore	EXTENSION RedirectAttemptFlag		PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional}|
-- Extension for Release 8 to support CSG --
	{ ID id-CSG-Id				CRITICALITY reject	EXTENSION CSG-Id			PRESENCE optional}|
-- Extension for Release 9 to allow communication of the cell access mode -- 
	{ ID id-Cell-Access-Mode		CRITICALITY reject	EXTENSION Cell-Access-Mode		PRESENCE optional}|
-- Extension for Release 10 to support LIPA -- 
	{ ID id-LGW-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
-- Extension for Release 9 to enable the CN to handle potential UE NAS QoS issues related to higher bitrates -- 
	{ ID id-HigherBitratesThan16MbpsFlag	CRITICALITY ignore	EXTENSION HigherBitratesThan16MbpsFlag	PRESENCE optional}|
-- Extension for Release 11 to support BBAI -- 
	{ ID id-Tunnel-Information-for-BBF	CRITICALITY ignore	EXTENSION TunnelInformation		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN with collocated L-GW-- 
	{ ID id-SIPTO-LGW-TransportLayerAddress	CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
	{ ID id-LHN-ID				CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
	...
}

-- **************************************************************
--
-- DIRECT TRANSFER ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Direct Transfer
--
-- **************************************************************

DirectTransfer ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {DirectTransferIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {DirectTransferExtensions} }				OPTIONAL,
	...
}

DirectTransferIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-NAS-PDU		CRITICALITY ignore	TYPE NAS-PDU		PRESENCE mandatory}|
	{ ID id-LAI		CRITICALITY ignore	TYPE LAI		PRESENCE optional}|
	{ ID id-RAC		CRITICALITY ignore	TYPE RAC		PRESENCE optional}|
	{ ID id-SAI		CRITICALITY ignore	TYPE SAI		PRESENCE optional}|
	{ ID id-SAPI		CRITICALITY ignore	TYPE SAPI		PRESENCE optional},
	...
}

DirectTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 6 to enable rerouting in MOCN configuration for network sharing non-supporting UEs --
	{ ID id-RedirectionIndication			CRITICALITY ignore	EXTENSION RedirectionIndication		PRESENCE optional}|
-- Extension for Release 6 to indicate the MOCN rerouting is completed --
	{ ID id-RedirectionCompleted			CRITICALITY ignore	EXTENSION RedirectionCompleted		PRESENCE optional}|
-- Extension for Release 8 to indicate the Subscriber Profile ID for RAT/Frequency Selection Priority --
	{ ID id-SubscriberProfileIDforRFP		CRITICALITY ignore	EXTENSION SubscriberProfileIDforRFP	PRESENCE optional}|
-- Extension for Release 10 to support LIPA -- 
	{ ID id-LGW-TransportLayerAddress		CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN with collocated L-GW -- 
	{ ID id-SIPTO-LGW-TransportLayerAddress		CRITICALITY ignore	EXTENSION TransportLayerAddress		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN Stand-Alone --
	{ ID id-LHN-ID					CRITICALITY ignore	EXTENSION LHN-ID			PRESENCE optional},
	...
}

RedirectionIndication ::= ProtocolIE-Container { {RedirectionIndication-IEs} }

RedirectionIndication-IEs RANAP-PROTOCOL-IES ::= {
	{	ID id-NAS-PDU			CRITICALITY ignore TYPE NAS-PDU			PRESENCE mandatory }|
	{	ID id-RejectCauseValue		CRITICALITY ignore TYPE RejectCauseValue	PRESENCE mandatory}|
	{	ID id-NAS-SequenceNumber	CRITICALITY ignore TYPE NAS-SequenceNumber	PRESENCE optional}|
	{	ID id-PermanentNAS-UE-ID	CRITICALITY ignore TYPE PermanentNAS-UE-ID	PRESENCE optional},
	...
}

-- **************************************************************
--
-- OVERLOAD CONTROL ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Overload
--
-- **************************************************************

Overload ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {OverloadIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {OverloadExtensions} }					OPTIONAL,
	...
}

OverloadIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-NumberOfSteps		CRITICALITY ignore	TYPE NumberOfSteps				PRESENCE optional	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional	},
	...
}

OverloadExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 99 to enable the indication to the RNC which CN domain is suffering the signalling traffic overload --
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	EXTENSION CN-DomainIndicator		PRESENCE optional} |
-- Extension for Release 5 to enable NNSF --
	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID			PRESENCE optional} |
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional} |
-- Extension for Release 10 to support Low Priority overload --
	{ ID id-Priority-Class-Indicator CRITICALITY ignore	EXTENSION Priority-Class-Indicator	PRESENCE optional},
	...
}

-- **************************************************************
--
-- ERROR INDICATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Error Indication
--
-- **************************************************************

ErrorIndication ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ErrorIndicationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ErrorIndicationExtensions} }				OPTIONAL,
	...
}

ErrorIndicationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} |
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE optional	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE optional	},
	...
}

ErrorIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 --
	{ ID id-GlobalCN-ID		CRITICALITY ignore	EXTENSION GlobalCN-ID		PRESENCE optional}|
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- SRNS DATA FORWARD ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- SRNS Data Forward Command
--
-- **************************************************************

SRNS-DataForwardCommand ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {SRNS-DataForwardCommandIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SRNS-DataForwardCommandExtensions} }			OPTIONAL,
	...
}

SRNS-DataForwardCommandIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-DataForwardingList	CRITICALITY ignore	TYPE RAB-DataForwardingList	PRESENCE optional	},
	...
}

SRNS-DataForwardCommandExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- FORWARD SRNS CONTEXT ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Forward SRNS Context
--
-- **************************************************************

ForwardSRNS-Context ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ForwardSRNS-ContextIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ForwardSRNS-ContextExtensions} }				OPTIONAL,
	...
}

ForwardSRNS-ContextIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ContextList	CRITICALITY ignore	TYPE RAB-ContextList		PRESENCE mandatory	},
	...
}

ForwardSRNS-ContextExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
	{ ID id-SourceRNC-PDCP-context-info	CRITICALITY ignore	EXTENSION RRC-Container	PRESENCE optional},
	...
}

-- **************************************************************
--
-- RAB ASSIGNMENT ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- RAB Assignment Request
--
-- **************************************************************

RAB-AssignmentRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RAB-AssignmentRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RAB-AssignmentRequestExtensions} }			OPTIONAL,
	...
}

RAB-AssignmentRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupOrModifyList	CRITICALITY ignore	TYPE RAB-SetupOrModifyList	PRESENCE optional	} |
	{ ID id-RAB-ReleaseList		CRITICALITY ignore	TYPE RAB-ReleaseList		PRESENCE optional	},
	...
}

RAB-SetupOrModifyList 	::= RAB-IE-ContainerPairList { {RAB-SetupOrModifyItem-IEs} }

RAB-SetupOrModifyItem-IEs RANAP-PROTOCOL-IES-PAIR ::= {
	{ ID id-RAB-SetupOrModifyItem	FIRST CRITICALITY reject	FIRST TYPE RAB-SetupOrModifyItemFirst
	 				SECOND CRITICALITY ignore	SECOND TYPE RAB-SetupOrModifyItemSecond	
													PRESENCE mandatory	},
	...
}

RAB-SetupOrModifyItemFirst ::= SEQUENCE {
	rAB-ID				RAB-ID,
	nAS-SynchronisationIndicator	NAS-SynchronisationIndicator	OPTIONAL,
	rAB-Parameters			RAB-Parameters			OPTIONAL,
	userPlaneInformation		UserPlaneInformation		OPTIONAL,
	transportLayerInformation	TransportLayerInformation	OPTIONAL,
	service-Handover		Service-Handover		OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { {RAB-SetupOrModifyItemFirst-ExtIEs} } OPTIONAL,
	...
}

TransportLayerInformation ::= SEQUENCE {
	transportLayerAddress	TransportLayerAddress,
	iuTransportAssociation	IuTransportAssociation,
	iE-Extensions		ProtocolExtensionContainer { {TransportLayerInformation-ExtIEs} } OPTIONAL,
	...
}

TransportLayerInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-SetupOrModifyItemFirst-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 8 to enable handover restriction to E-UTRAN --
	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional}|
-- Extension for Release 10 to support LIPA --
	{ ID id-Correlation-ID			CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional}|
-- Extension for Release 12 to support SIPTO@LN with collocated L-GW --
	{ ID id-SIPTO-Correlation-ID		CRITICALITY ignore	EXTENSION Correlation-ID		PRESENCE optional},
	...
}

RAB-SetupOrModifyItemSecond ::= SEQUENCE {
	pDP-TypeInformation				PDP-TypeInformation 		OPTIONAL,
	dataVolumeReportingIndication			DataVolumeReportingIndication 	OPTIONAL,
	dl-GTP-PDU-SequenceNumber			DL-GTP-PDU-SequenceNumber 	OPTIONAL,
	ul-GTP-PDU-SequenceNumber			UL-GTP-PDU-SequenceNumber 	OPTIONAL,
	dl-N-PDU-SequenceNumber				DL-N-PDU-SequenceNumber 	OPTIONAL,
	ul-N-PDU-SequenceNumber				UL-N-PDU-SequenceNumber		OPTIONAL,
	iE-Extensions					ProtocolExtensionContainer { {RAB-SetupOrModifyItemSecond-ExtIEs} } OPTIONAL,
	...
}

RAB-SetupOrModifyItemSecond-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
	{ ID id-Alt-RAB-Parameters		CRITICALITY ignore	EXTENSION Alt-RAB-Parameters		PRESENCE optional}|
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-BSC-Container		CRITICALITY ignore	EXTENSION GERAN-BSC-Container		PRESENCE optional}|
-- Extension for Release Release 9 to enable a new value --
	{ ID id-PDP-TypeInformation-extension	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional}|
-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
	{ ID id-Offload-RAB-Parameters		CRITICALITY ignore	EXTENSION Offload-RAB-Parameters	PRESENCE optional},
	...
}

RAB-AssignmentRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate	PRESENCE optional}|
-- Extension for Release 10 to enable Offload at Iu-ps for UTRAN --
	{ ID id-MSISDN				CRITICALITY ignore	EXTENSION MSISDN			PRESENCE optional},
	...
}

-- **************************************************************
--
-- RAB Assignment Response
--
-- **************************************************************

RAB-AssignmentResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RAB-AssignmentResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RAB-AssignmentResponseExtensions} }			OPTIONAL,
	...
}

RAB-AssignmentResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupOrModifiedList	CRITICALITY ignore	TYPE RAB-SetupOrModifiedList	PRESENCE optional	} |
	{ ID id-RAB-ReleasedList	CRITICALITY ignore	TYPE RAB-ReleasedList		PRESENCE optional	} |
	{ ID id-RAB-QueuedList		CRITICALITY ignore	TYPE RAB-QueuedList		PRESENCE optional	} |
	{ ID id-RAB-FailedList		CRITICALITY ignore	TYPE RAB-FailedList		PRESENCE optional	} |
	{ ID id-RAB-ReleaseFailedList	CRITICALITY ignore	TYPE RAB-ReleaseFailedList	PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional },
	...
}

RAB-SetupOrModifiedList 				::= RAB-IE-ContainerList { {RAB-SetupOrModifiedItemIEs} }

RAB-SetupOrModifiedItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupOrModifiedItem	CRITICALITY ignore	TYPE RAB-SetupOrModifiedItem	PRESENCE mandatory	},
	...
}

RAB-SetupOrModifiedItem ::= SEQUENCE {
	rAB-ID			RAB-ID,
	transportLayerAddress	TransportLayerAddress	OPTIONAL,
	iuTransportAssociation	IuTransportAssociation	OPTIONAL,
	dl-dataVolumes		DataVolumeList		OPTIONAL,
	iE-Extensions		ProtocolExtensionContainer { {RAB-SetupOrModifiedItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupOrModifiedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 4 to enable RAB Quality of Service negotiation over Iu --
	{	ID id-Ass-RAB-Parameters	CRITICALITY ignore		EXTENSION Ass-RAB-Parameters		PRESENCE optional	},
	...
}

RAB-ReleasedList 					::= RAB-IE-ContainerList { {RAB-ReleasedItemIEs} }

RAB-ReleasedItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ReleasedItem	CRITICALITY ignore	TYPE RAB-ReleasedItem				PRESENCE mandatory	},
	...
}

RAB-ReleasedItem ::= SEQUENCE {
	rAB-ID				RAB-ID,
	dl-dataVolumes			DataVolumeList		OPTIONAL,
	dL-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber			OPTIONAL,
	uL-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber			OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { {RAB-ReleasedItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-ReleasedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

DataVolumeList ::= SEQUENCE (SIZE (1..maxNrOfVol)) OF
	SEQUENCE {
		dl-UnsuccessfullyTransmittedDataVolume	UnsuccessfullyTransmittedDataVolume,
		dataVolumeReference			DataVolumeReference	OPTIONAL,
		iE-Extensions				ProtocolExtensionContainer { {DataVolumeList-ExtIEs} }			OPTIONAL,
		...
	}

DataVolumeList-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-QueuedList 						::= RAB-IE-ContainerList { {RAB-QueuedItemIEs} }

RAB-QueuedItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-QueuedItem	CRITICALITY ignore	TYPE RAB-QueuedItem				PRESENCE mandatory	},
	...
}

RAB-QueuedItem ::= SEQUENCE {
	rAB-ID		RAB-ID,
	iE-Extensions	ProtocolExtensionContainer { {RAB-QueuedItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-QueuedItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-ReleaseFailedList ::= RAB-FailedList

RAB-AssignmentResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable GERAN support over Iu-cs --
	{ ID id-GERAN-Iumode-RAB-FailedList-RABAssgntResponse		CRITICALITY ignore	EXTENSION GERAN-Iumode-RAB-FailedList-RABAssgntResponse			PRESENCE optional} ,
	...
}

GERAN-Iumode-RAB-FailedList-RABAssgntResponse		::= RAB-IE-ContainerList { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs} }

GERAN-Iumode-RAB-Failed-RABAssgntResponse-ItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item		CRITICALITY ignore	TYPE GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item			PRESENCE mandatory	},
	...
}

GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item ::= SEQUENCE {
	rAB-ID		RAB-ID,
	cause		Cause,
	gERAN-Classmark	GERAN-Classmark		OPTIONAL,
	iE-Extensions	ProtocolExtensionContainer { {GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs} }			OPTIONAL,
	...
}

GERAN-Iumode-RAB-Failed-RABAssgntResponse-Item-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

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

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

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

-- **************************************************************
--
-- RANAP RELOCATION INFORMATION ELEMENTARY PROCEDURE
--
-- **************************************************************

RANAP-RelocationInformation ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RANAP-RelocationInformationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-RelocationInformationExtensions} }			OPTIONAL,
	...
}

RANAP-RelocationInformationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-DirectTransferInformationList-RANAP-RelocInf	
							CRITICALITY ignore	TYPE DirectTransferInformationList-RANAP-RelocInf		
																PRESENCE optional	} |
	{ ID id-RAB-ContextList-RANAP-RelocInf		CRITICALITY ignore	TYPE RAB-ContextList-RANAP-RelocInf		PRESENCE optional	},
	...
}

DirectTransferInformationList-RANAP-RelocInf		::= DirectTransfer-IE-ContainerList { {DirectTransferInformationItemIEs-RANAP-RelocInf} }

DirectTransferInformationItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
	{ ID id-DirectTransferInformationItem-RANAP-RelocInf
							CRITICALITY ignore	TYPE DirectTransferInformationItem-RANAP-RelocInf
																PRESENCE mandatory	},
	...
}

DirectTransferInformationItem-RANAP-RelocInf ::= SEQUENCE {
	nAS-PDU			NAS-PDU,
	sAPI			SAPI,
	cN-DomainIndicator	CN-DomainIndicator,
	iE-Extensions		ProtocolExtensionContainer { {RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf} }			OPTIONAL,
	...
}

RANAP-DirectTransferInformationItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-ContextList-RANAP-RelocInf 				::= RAB-IE-ContainerList { {RAB-ContextItemIEs-RANAP-RelocInf} }

RAB-ContextItemIEs-RANAP-RelocInf RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ContextItem-RANAP-RelocInf		CRITICALITY ignore	TYPE RAB-ContextItem-RANAP-RelocInf			PRESENCE mandatory	},
	...
}

RAB-ContextItem-RANAP-RelocInf ::= SEQUENCE {
	rAB-ID				RAB-ID,
	dl-GTP-PDU-SequenceNumber	DL-GTP-PDU-SequenceNumber 	OPTIONAL,
	ul-GTP-PDU-SequenceNumber	UL-GTP-PDU-SequenceNumber 	OPTIONAL,
	dl-N-PDU-SequenceNumber		DL-N-PDU-SequenceNumber		OPTIONAL,
	ul-N-PDU-SequenceNumber		UL-N-PDU-SequenceNumber		OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { {RAB-ContextItem-ExtIEs-RANAP-RelocInf} }		OPTIONAL,
	...
}

RAB-ContextItem-ExtIEs-RANAP-RelocInf RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RANAP-RelocationInformationExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable relocation of Source RNC PDCP context info --
	{ ID id-SourceRNC-PDCP-context-info		CRITICALITY ignore	EXTENSION RRC-Container					PRESENCE optional} |
-- Extension for Release 10 to enable RNSAP Relocation --
	{ ID id-RNSAPRelocationParameters		CRITICALITY reject	EXTENSION RNSAPRelocationParameters	PRESENCE optional},
	...
}

-- **************************************************************
--
-- RANAP ENHANCED RELOCATION INFORMATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- RANAP Enhanced Relocation Information Request
--
-- **************************************************************

RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RANAP-EnhancedRelocationInformationRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-EnhancedRelocationInformationRequestExtensions} }			OPTIONAL,
	...
}

RANAP-EnhancedRelocationInformationRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Source-ToTarget-TransparentContainer 	CRITICALITY reject TYPE SourceRNC-ToTargetRNC-TransparentContainer	PRESENCE mandatory }|
	{ ID id-OldIuSigConIdCS				CRITICALITY ignore TYPE IuSignallingConnectionIdentifier		PRESENCE optional }|
	{ ID id-GlobalCN-IDCS				CRITICALITY reject TYPE GlobalCN-ID					PRESENCE optional }|
	{ ID id-OldIuSigConIdPS				CRITICALITY ignore TYPE IuSignallingConnectionIdentifier		PRESENCE optional }|
	{ ID id-GlobalCN-IDPS				CRITICALITY reject TYPE GlobalCN-ID					PRESENCE optional }|
	{ ID id-RAB-SetupList-EnhRelocInfoReq		CRITICALITY reject TYPE RAB-SetupList-EnhRelocInfoReq			PRESENCE optional }|
	{ ID id-SNA-Access-Information			CRITICALITY ignore TYPE SNA-Access-Information				PRESENCE optional }|
	{ ID id-UESBI-Iu				CRITICALITY ignore TYPE UESBI-Iu					PRESENCE optional }|
	{ ID id-SelectedPLMN-ID	 			CRITICALITY ignore TYPE PLMNidentity					PRESENCE optional }|
	{ ID id-CNMBMSLinkingInformation		CRITICALITY ignore TYPE CNMBMSLinkingInformation			PRESENCE optional },
	...
}

RAB-SetupList-EnhRelocInfoReq 					::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoReq-IEs} }

RAB-SetupItem-EnhRelocInfoReq-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-EnhRelocInfoReq		CRITICALITY reject	TYPE RAB-SetupItem-EnhRelocInfoReq		PRESENCE mandatory 	},
	...
}

RAB-SetupItem-EnhRelocInfoReq ::= SEQUENCE {
	rAB-ID				RAB-ID,
	cN-DomainIndicator		CN-DomainIndicator,
	rAB-Parameters			RAB-Parameters,
	dataVolumeReportingIndication	DataVolumeReportingIndication 	OPTIONAL
	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
	pDP-TypeInformation		PDP-TypeInformation		OPTIONAL
	-- This IE shall be present if the CN domain indicator IE is set to "PS domain" --,
	userPlaneInformation		UserPlaneInformation,
	dataForwardingInformation	TNLInformationEnhRelInfoReq	OPTIONAL,
	sourceSideIuULTNLInfo		TNLInformationEnhRelInfoReq	OPTIONAL,
	
	service-Handover		Service-Handover		OPTIONAL,
	alt-RAB-Parameters		Alt-RAB-Parameters		OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoReq-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-EnhRelocInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 8 to enable handover restriction to E-UTRAN --
	{ ID id-E-UTRAN-Service-Handover	CRITICALITY ignore	EXTENSION E-UTRAN-Service-Handover	PRESENCE optional	}|
-- Extension for Release Release 9 to enable a new value --
	{ ID id-PDP-TypeInformation-extension	CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension	PRESENCE optional	},
	...
}

TNLInformationEnhRelInfoReq ::=SEQUENCE{
	transportLayerAddress	TransportLayerAddress,
	iuTransportAssociation	IuTransportAssociation,
	iE-Extensions		ProtocolExtensionContainer { { TNLInformationEnhRelInfoReq-ExtIEs} }			OPTIONAL,
	...
}

TNLInformationEnhRelInfoReq-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}


RANAP-EnhancedRelocationInformationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-IntegrityProtectionInformation	CRITICALITY ignore	EXTENSION IntegrityProtectionInformation	PRESENCE optional} |
	{ ID id-EncryptionInformation		CRITICALITY ignore	EXTENSION EncryptionInformation			PRESENCE optional} |
	{ ID id-UE-AggregateMaximumBitRate	CRITICALITY ignore	EXTENSION UE-AggregateMaximumBitRate		PRESENCE optional} |
-- Extension for Release 10 to enable RNSAP Relocation --
	{ ID id-RABParametersList		CRITICALITY reject	EXTENSION RABParametersList			PRESENCE optional} |
	{ ID id-CSG-Id				CRITICALITY reject	EXTENSION CSG-Id				PRESENCE optional} |
	{ ID id-CSG-Membership-Status		CRITICALITY reject	EXTENSION CSG-Membership-Status			PRESENCE optional} |
-- Extension for Release 11 to support rSRVCC in case of network sharing –
	{ ID id-AnchorPLMN-ID			CRITICALITY ignore	EXTENSION PLMNidentity				PRESENCE optional},
	...
}

-- **************************************************************
--
-- RANAP Enhanced Relocation Information Response
--
-- **************************************************************

RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RANAP-EnhancedRelocationInformationResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RANAP-EnhancedRelocationInformationResponseExtensions} }			OPTIONAL,
	...
}

RANAP-EnhancedRelocationInformationResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Target-ToSource-TransparentContainer	CRITICALITY ignore	TYPE TargetRNC-ToSourceRNC-TransparentContainer PRESENCE optional	} |
	{ ID id-RAB-SetupList-EnhRelocInfoRes		CRITICALITY ignore	TYPE RAB-SetupList-EnhRelocInfoRes		PRESENCE optional	} |
	{ ID id-RAB-FailedList-EnhRelocInfoRes		CRITICALITY ignore	TYPE RAB-FailedList-EnhRelocInfoRes		PRESENCE optional 	} |
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics 			PRESENCE optional	},
	...
}

RAB-SetupList-EnhRelocInfoRes 				::= RAB-IE-ContainerList { { RAB-SetupItem-EnhRelocInfoRes-IEs} }

RAB-SetupItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-SetupItem-EnhRelocInfoRes		CRITICALITY reject	TYPE RAB-SetupItem-EnhRelocInfoRes		PRESENCE mandatory 	},
	...
}

RAB-SetupItem-EnhRelocInfoRes ::= SEQUENCE {
	cN-DomainIndicator		CN-DomainIndicator,
	rAB-ID				RAB-ID,
	dataForwardingInformation	TNLInformationEnhRelInfoRes	OPTIONAL,
	ass-RAB-Parameters		Ass-RAB-Parameters		OPTIONAL,
	iE-Extensions			ProtocolExtensionContainer { { RAB-SetupItem-EnhRelocInfoRes-ExtIEs} }			OPTIONAL,
	...
}

RAB-SetupItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-FailedList-EnhRelocInfoRes 	::= RAB-IE-ContainerList { { RAB-FailedItem-EnhRelocInfoRes-IEs} }

RAB-FailedItem-EnhRelocInfoRes-IEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-FailedItem-EnhRelocInfoRes		CRITICALITY reject	TYPE RAB-FailedItem-EnhRelocInfoRes			PRESENCE mandatory 	},
	...
}

RAB-FailedItem-EnhRelocInfoRes ::= SEQUENCE {
	cN-DomainIndicator	CN-DomainIndicator,
	rAB-ID			RAB-ID,
	cause			Cause,
	iE-Extensions		ProtocolExtensionContainer { { RAB-FailedItem-EnhRelocInfoRes-ExtIEs} }			OPTIONAL,
	...
}

RAB-FailedItem-EnhRelocInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}
TNLInformationEnhRelInfoRes ::=SEQUENCE{
	dl-forwardingTransportLayerAddress	TransportLayerAddress,
	dl-forwardingTransportAssociation	IuTransportAssociation,
	iE-Extensions				ProtocolExtensionContainer { { TNLInformationEnhRelInfoRes-ExtIEs} }			OPTIONAL,
	...
}

TNLInformationEnhRelInfoRes-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RANAP-EnhancedRelocationInformationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}
-- **************************************************************
--
-- RAB MODIFICATION REQUEST ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- RAB Modify Request
--
-- **************************************************************

RAB-ModifyRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {RAB-ModifyRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {RAB-ModifyRequestExtensions} }				OPTIONAL,
	...
}

RAB-ModifyRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ModifyList			CRITICALITY ignore	TYPE RAB-ModifyList			PRESENCE mandatory},
	...
}

RAB-ModifyList 	::= RAB-IE-ContainerList { {RAB-ModifyItemIEs} }

RAB-ModifyItemIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-RAB-ModifyItem		CRITICALITY ignore	TYPE RAB-ModifyItem		PRESENCE mandatory	},
	...
}

RAB-ModifyItem ::= SEQUENCE {
	rAB-ID				RAB-ID,
	requested-RAB-Parameter-Values	Requested-RAB-Parameter-Values,
	iE-Extensions			ProtocolExtensionContainer { {RAB-ModifyItem-ExtIEs} }			OPTIONAL,
	...
}

RAB-ModifyItem-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

RAB-ModifyRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- LOCATION RELATED DATA ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Location Related Data Request
--
-- **************************************************************

LocationRelatedDataRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {LocationRelatedDataRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {LocationRelatedDataRequestExtensions} }				OPTIONAL,
	...
}

LocationRelatedDataRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-LocationRelatedDataRequestType		CRITICALITY reject	TYPE LocationRelatedDataRequestType		PRESENCE optional	},
	-- This IE is mandatory for UTRAN, optional for GERAN Iu Mode –-
	...
}

LocationRelatedDataRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 5 to enable LCS support for GERAN Iu mode --
	{ ID id-LocationRelatedDataRequestTypeSpecificToGERANIuMode		CRITICALITY reject	EXTENSION LocationRelatedDataRequestTypeSpecificToGERANIuMode	PRESENCE optional	}|
	-- The previous extension is optional for GERAN Iu Mode only, not applicable for UTRAN --
	-- Extension for Release 7 to request GANSS Assistance Data. This IE shall be present if the Requested Location Related Data Type IE is set to
	-- ‘Dedicated Assistance Data for Assisted GANSS’ or `Dedicated Assistance Data for Assisted GPS and GANSS’--
	{ ID id-RequestedGANSSAssistanceData					CRITICALITY reject	EXTENSION RequestedGANSSAssistanceData				PRESENCE conditional	},
	...
}

-- **************************************************************
--
-- Location Related Data Response
--
-- **************************************************************

LocationRelatedDataResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { LocationRelatedDataResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { LocationRelatedDataResponseExtensions} }				OPTIONAL,
	...
}

LocationRelatedDataResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-BroadcastAssistanceDataDecipheringKeys		CRITICALITY ignore	TYPE BroadcastAssistanceDataDecipheringKeys		PRESENCE optional	},
	...
}

LocationRelatedDataResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for error handling
	{ ID id-CriticalityDiagnostics				CRITICALITY ignore	EXTENSION CriticalityDiagnostics			PRESENCE optional	}|
	{ ID id-BroadcastGANSSAssistanceDataDecipheringKeys	CRITICALITY ignore	EXTENSION BroadcastAssistanceDataDecipheringKeys	PRESENCE optional},
	...
}

-- **************************************************************
--
-- Location Related Data Failure
--
-- **************************************************************

LocationRelatedDataFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { LocationRelatedDataFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { LocationRelatedDataFailureExtensions} }				OPTIONAL,
	...
}

LocationRelatedDataFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause					PRESENCE mandatory	},
	...
}

LocationRelatedDataFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for error handling
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	EXTENSION CriticalityDiagnostics		PRESENCE optional	},
	...
}

-- **************************************************************
--
-- INFORMATION TRANSFER ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Information Transfer Indication
--
-- **************************************************************

InformationTransferIndication ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { InformationTransferIndicationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferIndicationExtensions} }				OPTIONAL,
	...
}

InformationTransferIndicationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationTransferID	CRITICALITY reject	TYPE InformationTransferID	PRESENCE mandatory	} |
	{ ID id-ProvidedData		CRITICALITY reject	TYPE ProvidedData		PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator	CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional},
	...
}

InformationTransferIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Information Transfer Confirmation
--
-- **************************************************************

InformationTransferConfirmation ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { InformationTransferConfirmationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferConfirmationExtensions} }				OPTIONAL,
	...
}

InformationTransferConfirmationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationTransferID	CRITICALITY ignore	TYPE InformationTransferID	PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional 	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory	},
	...
}

InformationTransferConfirmationExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- Information Transfer Failure
--
-- **************************************************************

InformationTransferFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { InformationTransferFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { InformationTransferFailureExtensions} }				OPTIONAL,
	...
}

InformationTransferFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationTransferID	CRITICALITY ignore	TYPE InformationTransferID	PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional 	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID		PRESENCE mandatory	},
	...
}

InformationTransferFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- UE SPECIFIC INFORMATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- UE Specific Information Indication
--
-- **************************************************************

UESpecificInformationIndication ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UESpecificInformationIndicationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UESpecificInformationIndicationExtensions} }					OPTIONAL,
	...
}

UESpecificInformationIndicationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-UESBI-Iu	CRITICALITY ignore	TYPE UESBI-Iu				PRESENCE optional	},
	...
}

UESpecificInformationIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Direct Information Transfer
--
-- **************************************************************

DirectInformationTransfer ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { DirectInformationTransferIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { DirectInformationTransferExtensions} }				OPTIONAL,
	...
}

DirectInformationTransferIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InterSystemInformationTransferType	CRITICALITY ignore	TYPE InterSystemInformationTransferType		PRESENCE optional } |
	{ ID id-CN-DomainIndicator			CRITICALITY ignore	TYPE CN-DomainIndicator				PRESENCE mandatory } |
	{ ID id-GlobalRNC-ID 				CRITICALITY ignore	TYPE GlobalRNC-ID				PRESENCE optional } |
	{ ID id-GlobalCN-ID 				CRITICALITY ignore	TYPE GlobalCN-ID				PRESENCE optional },
	...
}

DirectInformationTransferExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional },
	...
}

-- **************************************************************
--
-- UPLINK INFORMATION EXCHANGE ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- Uplink Information Exchange Request
--
-- **************************************************************

UplinkInformationExchangeRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeRequestExtensions} }			OPTIONAL,
	...
}

UplinkInformationExchangeRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationExchangeID		CRITICALITY reject	TYPE InformationExchangeID	PRESENCE mandatory	} |
	{ ID id-InformationExchangeType		CRITICALITY reject	TYPE InformationExchangeType	PRESENCE mandatory	} |
	{ ID id-InformationTransferType		CRITICALITY reject	TYPE InformationTransferType	PRESENCE conditional
	-- This IE shall be present if the Information Exchange Type IE is set to "transfer"	--				} |
	{ ID id-InformationRequestType		CRITICALITY reject	TYPE InformationRequestType	PRESENCE conditional
	-- This IE shall be present if the Information Exchange Type IE is set to "request"		--			} |
	{ ID id-CN-DomainIndicator		CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-GlobalRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID		PRESENCE mandatory	},
	...
}

UplinkInformationExchangeRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID	PRESENCE optional	},
	...
}

-- **************************************************************
--
-- Uplink Information Exchange Response
--
-- **************************************************************

UplinkInformationExchangeResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeResponseExtensions} }		OPTIONAL,
	...
}

UplinkInformationExchangeResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationExchangeID		CRITICALITY ignore	TYPE InformationExchangeID		PRESENCE mandatory	} |
	{ ID id-InformationRequested		CRITICALITY ignore	TYPE InformationRequested		PRESENCE optional	} |
	{ ID id-CN-DomainIndicator		CRITICALITY ignore	TYPE CN-DomainIndicator			PRESENCE mandatory	} |
	{ ID id-GlobalCN-ID			CRITICALITY ignore	TYPE GlobalCN-ID			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	} ,
	...
}

UplinkInformationExchangeResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Uplink Information Exchange Failure
--
-- **************************************************************

UplinkInformationExchangeFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { UplinkInformationExchangeFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { UplinkInformationExchangeFailureExtensions} }				OPTIONAL,
	...
}

UplinkInformationExchangeFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-InformationExchangeID	CRITICALITY ignore	TYPE InformationExchangeID	PRESENCE mandatory	} |
	{ ID id-CN-DomainIndicator	CRITICALITY ignore	TYPE CN-DomainIndicator		PRESENCE mandatory	} |
	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

UplinkInformationExchangeFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS SESSION START PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS Session Start
--
-- **************************************************************

MBMSSessionStart ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStartIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStartExtensions} }			OPTIONAL,
	...
}

MBMSSessionStartIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TMGI				CRITICALITY reject	TYPE TMGI				PRESENCE mandatory	} |
	{ ID id-MBMSSessionIdentity		CRITICALITY ignore	TYPE MBMSSessionIdentity		PRESENCE optional	} |
	{ ID id-MBMSBearerServiceType		CRITICALITY reject	TYPE MBMSBearerServiceType		PRESENCE mandatory	} |
	{ ID id-IuSigConId			CRITICALITY reject 	TYPE IuSignallingConnectionIdentifier	PRESENCE mandatory	} |
	{ ID id-RAB-Parameters			CRITICALITY reject 	TYPE RAB-Parameters			PRESENCE mandatory	} |
	{ ID id-PDP-TypeInformation		CRITICALITY ignore	TYPE PDP-TypeInformation		PRESENCE optional	} |
	{ ID id-MBMSSessionDuration		CRITICALITY reject	TYPE MBMSSessionDuration		PRESENCE mandatory	} |
	{ ID id-MBMSServiceArea			CRITICALITY reject	TYPE MBMSServiceArea			PRESENCE mandatory	} |
	{ ID id-FrequenceLayerConvergenceFlag	CRITICALITY ignore	TYPE FrequenceLayerConvergenceFlag	PRESENCE optional	} |
	{ ID id-RAListofIdleModeUEs		CRITICALITY ignore	TYPE RAListofIdleModeUEs		PRESENCE optional	} |
	{ ID id-GlobalCN-ID			CRITICALITY reject	TYPE GlobalCN-ID			PRESENCE optional	} |
	{ ID id-MBMSSessionRepetitionNumber	CRITICALITY ignore	TYPE MBMSSessionRepetitionNumber	PRESENCE optional	} |
	{ ID id-TimeToMBMSDataTransfer		CRITICALITY reject	TYPE TimeToMBMSDataTransfer		PRESENCE mandatory	},
	...
}

MBMSSessionStartExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 6 to enable MBMS counting in broadcast mode --
	{ ID id-MBMSCountingInformation			CRITICALITY ignore	EXTENSION MBMSCountingInformation		PRESENCE optional}|
	{ ID id-MBMSSynchronisationInformation		CRITICALITY ignore	EXTENSION MBMSSynchronisationInformation	PRESENCE optional}|
-- Extension for Release Release 9 to enable a new value --
	{ ID id-PDP-TypeInformation-extension		CRITICALITY ignore	EXTENSION PDP-TypeInformation-extension		PRESENCE optional}|
-- Extension for Release 12 to support Session re-establishment --
	{ ID id-Session-Re-establishment-Indicator	CRITICALITY ignore	EXTENSION Session-Re-establishment-Indicator	PRESENCE optional},
	...
}

MBMSSynchronisationInformation ::= SEQUENCE {
	mBMSHCIndicator		MBMSHCIndicator,
	iPMulticastAddress	IPMulticastAddress,
	gTPDLTEID		GTP-TEI,
	iE-Extensions		ProtocolExtensionContainer { {MBMSSynchronisationInformation-ExtIEs} }			OPTIONAL,
	...
}

MBMSSynchronisationInformation-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	{ ID id-IP-Source-Address	CRITICALITY reject		EXTENSION IPMulticastAddress				PRESENCE optional	},
	...
}

-- **************************************************************
--
-- MBMS Session Start Response
--
-- **************************************************************

MBMSSessionStartResponse::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {MBMSSessionStartResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {MBMSSessionStartResponseExtensions} }		OPTIONAL,
	...
}

MBMSSessionStartResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TransportLayerInformation	CRITICALITY ignore	TYPE TransportLayerInformation	PRESENCE optional	} |
	{ ID id-Cause				CRITICALITY ignore 	TYPE Cause			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

MBMSSessionStartResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS Session Start Failure
--
-- **************************************************************

MBMSSessionStartFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStartFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStartFailureExtensions} }		OPTIONAL,
	...
}

MBMSSessionStartFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

MBMSSessionStartFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS SESSION UPDATE PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS Session Update
--
-- **************************************************************

MBMSSessionUpdate ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateExtensions} }	OPTIONAL,
	...
}

MBMSSessionUpdateIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-SessionUpdateID			CRITICALITY reject	TYPE SessionUpdateID		PRESENCE mandatory	} |
	{ ID id-DeltaRAListofIdleModeUEs	CRITICALITY reject	TYPE DeltaRAListofIdleModeUEs	PRESENCE mandatory	},
	...
}

MBMSSessionUpdateExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS Session Update Response
--
-- **************************************************************

MBMSSessionUpdateResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateResponseExtensions} }		OPTIONAL,
	...
}

MBMSSessionUpdateResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-SessionUpdateID			CRITICALITY ignore	TYPE SessionUpdateID		PRESENCE mandatory	} |
	{ ID id-TransportLayerInformation	CRITICALITY ignore	TYPE TransportLayerInformation	PRESENCE optional	} |
	{ ID id-Cause				CRITICALITY ignore	TYPE Cause			PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

MBMSSessionUpdateResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS Session Update Failure
--
-- **************************************************************

MBMSSessionUpdateFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionUpdateFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionUpdateFailureExtensions} }		OPTIONAL,
	...
}

MBMSSessionUpdateFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-SessionUpdateID		CRITICALITY ignore	TYPE SessionUpdateID		PRESENCE mandatory	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

MBMSSessionUpdateFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS SESSIE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS Session Stop
--
-- **************************************************************

MBMSSessionStop ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStopIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStopExtensions} }			OPTIONAL,
	...
}

MBMSSessionStopIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-MBMSCNDe-Registration	CRITICALITY reject	TYPE MBMSCNDe-Registration				PRESENCE mandatory	},
	...
}

MBMSSessionStopExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS Session Stop Response
--
-- **************************************************************

MBMSSessionStopResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSSessionStopResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSSessionStopResponseExtensions} }		OPTIONAL,
	...
}

MBMSSessionStopResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause				PRESENCE optional		} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional		} ,
	...
}

MBMSSessionStopResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS UE LINKING PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS UE Linking Request
--
-- **************************************************************

MBMSUELinkingRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSUELinkingRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSUELinkingRequestExtensions} }			OPTIONAL,
	...
}

MBMSUELinkingRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-JoinedMBMSBearerServicesList	CRITICALITY reject	TYPE JoinedMBMSBearerService-IEs		PRESENCE optional	} |
	{ ID id-LeftMBMSBearerServicesList	CRITICALITY reject	TYPE LeftMBMSBearerService-IEs			PRESENCE optional	},
	...
}

LeftMBMSBearerService-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
	SEQUENCE {
		tMGI		TMGI,
		iE-Extensions	ProtocolExtensionContainer { {LeftMBMSBearerService-ExtIEs} } OPTIONAL,
		...
	}

LeftMBMSBearerService-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

MBMSUELinkingRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS UE Linking Response
--
-- **************************************************************

MBMSUELinkingResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSUELinkingResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSUELinkingResponseExtensions} }		OPTIONAL,
	...
}

MBMSUELinkingResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-UnsuccessfulLinkingList	CRITICALITY ignore	TYPE UnsuccessfulLinking-IEs	PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

UnsuccessfulLinking-IEs ::= SEQUENCE (SIZE (1.. maxnoofMulticastServicesPerUE)) OF
	SEQUENCE {
		tMGI		TMGI,
		cause		Cause,
		iE-Extensions	ProtocolExtensionContainer { {UnsuccessfulLinking-ExtIEs} } OPTIONAL,
		...
	}

UnsuccessfulLinking-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
	...
}

MBMSUELinkingResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- *************************************************
--
-- MBMS REGISTRATION PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS Registration Request
--
-- **************************************************************

MBMSRegistrationRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSRegistrationRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSRegistrationRequestExtensions} }			OPTIONAL,
	...
}

MBMSRegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-MBMSRegistrationRequestType	CRITICALITY reject	TYPE MBMSRegistrationRequestType	PRESENCE mandatory	} |
	{ ID id-TMGI				CRITICALITY reject	TYPE TMGI				PRESENCE mandatory	} |
	{ ID id-IPMulticastAddress		CRITICALITY reject	TYPE IPMulticastAddress			PRESENCE conditional
	-- This IE shall be present if the MBMS Registration Request Type IE is set to "register"	--				} |
	{ ID id-APN				CRITICALITY reject	TYPE APN				PRESENCE conditional
	-- This IE shall be present if the MBMS Registration Request Type IE is set to "register"	--				} |
	{ ID id-GlobalRNC-ID			CRITICALITY reject	TYPE GlobalRNC-ID			PRESENCE optional	},
	...
}

MBMSRegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID			CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
	...
}

-- **************************************************************
--
-- MBMS Registration Response
--
-- **************************************************************

MBMSRegistrationResponse ::= SEQUENCE {
	protocolIEs				ProtocolIE-Container		{ { MBMSRegistrationResponseIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ { MBMSRegistrationResponseExtensions} }		OPTIONAL,
	...
}

MBMSRegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TMGI							CRITICALITY ignore	TYPE TMGI							PRESENCE optional		} |
	{ ID id-GlobalCN-ID						CRITICALITY ignore	TYPE GlobalCN-ID					PRESENCE optional		} |
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		} ,
	...
}

MBMSRegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS Registration Failure
--
-- **************************************************************

MBMSRegistrationFailure ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container		{ { MBMSRegistrationFailureIEs} },
	protocolExtensions		ProtocolExtensionContainer	{ { MBMSRegistrationFailureExtensions} }		OPTIONAL,
	...
}

MBMSRegistrationFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TMGI			CRITICALITY ignore	TYPE TMGI			PRESENCE optional	} |
	{ ID id-GlobalCN-ID		CRITICALITY ignore	TYPE GlobalCN-ID		PRESENCE optional	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional	} ,
	...
}

MBMSRegistrationFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS CN DE-REGISTRATION PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS CN De-Registration Request
--
-- **************************************************************

MBMSCNDe-RegistrationRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSCNDe-RegistrationRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSCNDe-RegistrationRequestExtensions} }			OPTIONAL,
	...
}

MBMSCNDe-RegistrationRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TMGI		CRITICALITY reject	TYPE TMGI		PRESENCE mandatory	} |
	{ ID id-GlobalCN-ID	CRITICALITY reject	TYPE GlobalCN-ID	PRESENCE optional	},
	...
}

MBMSCNDe-RegistrationRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS CN De-Registration Response
--
-- **************************************************************

MBMSCNDe-RegistrationResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSCNDe-RegistrationResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSCNDe-RegistrationResponseExtensions} }		OPTIONAL,
	...
}

MBMSCNDe-RegistrationResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TMGI			CRITICALITY ignore	TYPE TMGI				PRESENCE mandatory	} |
	{ ID id-GlobalRNC-ID		CRITICALITY ignore	TYPE GlobalRNC-ID			PRESENCE mandatory	} |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause				PRESENCE optional	} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional	} ,
	...
}

MBMSCNDe-RegistrationResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 7 to indicate extended RNC-ID --
	{ ID id-ExtendedRNC-ID		CRITICALITY reject	EXTENSION ExtendedRNC-ID		PRESENCE optional	},
	...
}

-- **************************************************************
--
-- MBMS RAB ESTABLISHMENT INDICATION PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS RAB Establishment Indication
--
-- **************************************************************

MBMSRABEstablishmentIndication ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { MBMSRABEstablishmentIndicationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { MBMSRABEstablishmentIndicationExtensions} }			OPTIONAL,
	...
}

MBMSRABEstablishmentIndicationIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-TransportLayerInformation		CRITICALITY ignore	TYPE TransportLayerInformation		PRESENCE mandatory	} ,
	...
}

MBMSRABEstablishmentIndicationExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS RAB RELEASE PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- MBMS RAB Release Request
--
-- **************************************************************

MBMSRABReleaseRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseRequestExtensions} }			OPTIONAL,
	...
}

MBMSRABReleaseRequestIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause				PRESENCE mandatory	},
	...
}


MBMSRABReleaseRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS RAB Release
--
-- **************************************************************

MBMSRABRelease ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseExtensions} }			OPTIONAL,
	...
}

MBMSRABReleaseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause	 			PRESENCE mandatory	}|
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		},
	...
}

MBMSRABReleaseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- MBMS RAB Release Failure
--
-- **************************************************************

MBMSRABReleaseFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {MBMSRABReleaseFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {MBMSRABReleaseFailureExtensions} }			OPTIONAL,
	...
}

MBMSRABReleaseFailureIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause				PRESENCE mandatory	}|
	{ ID id-CriticalityDiagnostics			CRITICALITY ignore	TYPE CriticalityDiagnostics			PRESENCE optional		},
	...
}

MBMSRABReleaseFailureExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- SRVCC PREPARATION ELEMENTARY PROCEDURE
--
-- **************************************************************

-- **************************************************************
--
-- SRVCC CS Keys Request
--
-- **************************************************************

SRVCC-CSKeysRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container			{ {SRVCC-CSKeysRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SRVCC-CSKeysRequestExtensions} }				OPTIONAL,
	...
}

SRVCC-CSKeysRequestIEs RANAP-PROTOCOL-IES ::= {
	...
}

SRVCC-CSKeysRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- SRVCC CS Keys Response
--
-- **************************************************************

SRVCC-CSKeysResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container			{ {SRVCC-CSKeysResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {SRVCC-CSKeysResponseExtensions} }				OPTIONAL,
	...
}

SRVCC-CSKeysResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-IntegrityProtectionKey		CRITICALITY reject	TYPE IntegrityProtectionKey		PRESENCE mandatory	}|
	{ ID id-EncryptionKey				CRITICALITY reject	TYPE EncryptionKey				PRESENCE mandatory	}|
	{ ID id-SRVCC-Information			CRITICALITY reject	TYPE SRVCC-Information			PRESENCE mandatory	}|
	{ ID id-CriticalityDiagnostics		CRITICALITY ignore	TYPE CriticalityDiagnostics		PRESENCE optional		},
	...
}

SRVCC-CSKeysResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- UE RADIO CAPABILITY MATCH PROCEDURE
--
-- **************************************************************


-- **************************************************************
--
-- UE Radio Capability Match Request
--
-- **************************************************************

UeRadioCapabilityMatchRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UeRadioCapabilityMatchRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UeRadioCapabilityMatchRequestExtensions} }			OPTIONAL,
	...
}

UeRadioCapabilityMatchRequestIEs RANAP-PROTOCOL-IES ::= {
	...
}

UeRadioCapabilityMatchRequestExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- UE Radio Capability Match Response
--
-- **************************************************************

UeRadioCapabilityMatchResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UeRadioCapabilityMatchResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UeRadioCapabilityMatchResponseExtensions} }				OPTIONAL,
	...
}

UeRadioCapabilityMatchResponseIEs RANAP-PROTOCOL-IES ::= {
	{ ID id-VoiceSupportMatchIndicator		CRITICALITY reject	TYPE VoiceSupportMatchIndicator		PRESENCE mandatory	},
	...
}

UeRadioCapabilityMatchResponseExtensions RANAP-PROTOCOL-EXTENSION ::= {
	...
}

END
