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

DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS
    Criticality,
    ProcedureCode,
    ProtocolIE-ID

FROM RANAP-CommonDataTypes

    Alt-RAB-Parameters,
    Ass-RAB-Parameters,
    Cause,
    CN-DomainIndicator,
    DataVolumeReference,
    DataVolumeReportingIndication,
    DL-GTP-PDU-SequenceNumber,
    DL-N-PDU-SequenceNumber,
    GERAN-Classmark,
    GTP-TEI,
    IPMulticastAddress,
    IuSignallingConnectionIdentifier,
    IuTransportAssociation,
    MBMSHCIndicator,
    NAS-PDU,
    NAS-SynchronisationIndicator,
    PDP-TypeInformation,
    RAB-ID,
    RAB-Parameters,
    Requested-RAB-Parameter-Values,
    SAPI,
    Service-Handover,
    TMGI,
    TransportLayerAddress,
    UL-GTP-PDU-SequenceNumber,
    UL-N-PDU-SequenceNumber,
    UnsuccessfullyTransmittedDataVolume,
    UP-ModeVersions,
    UserPlaneMode

FROM RANAP-IEs

    maxnoofMulticastServicesPerUE,
    maxNrOfVol,
    maxProtocolIEs,
    maxProtocolExtensions

FROM RANAP-Constants;

RANAP-PDU ::= CHOICE {
    initiatingMessage       InitiatingMessage,
    successfulOutcome       SuccessfulOutcome,
    unsuccessfulOutcome     UnsuccessfulOutcome,
    outcome     	    Outcome,
    ...
}

InitiatingMessage ::= SEQUENCE {
    procedureCode   ProcedureCode,
    criticality     Criticality,
    value           ANY
}

SuccessfulOutcome ::= SEQUENCE {
    procedureCode   ProcedureCode,
    criticality     Criticality,
    value           ANY
}

UnsuccessfulOutcome ::= SEQUENCE {
    procedureCode   ProcedureCode,
    criticality     Criticality,
    value           ANY
}

Outcome ::= SEQUENCE {
    procedureCode   ProcedureCode,
    criticality     Criticality,
    value           ANY
}


Iu-ReleaseCommand ::= SEQUENCE {
    iu-ReleaseCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

Iu-ReleaseComplete ::= SEQUENCE {
    iu-ReleaseComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationRequired ::= SEQUENCE {
    relocationRequired-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationCommand ::= SEQUENCE {
    relocationCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationPreparationFailure ::= SEQUENCE {
    relocationPreparationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationRequest ::= SEQUENCE {
    relocationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationRequestAcknowledge ::= SEQUENCE {
    relocationRequestAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationFailure ::= SEQUENCE {
    relocationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationCancel ::= SEQUENCE {
    relocationCancel-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationCancelAcknowledge ::= SEQUENCE {
    relocationCancelAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SRNS-ContextRequest ::= SEQUENCE {
    sRNS-ContextRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SRNS-ContextResponse ::= SEQUENCE {
    sRNS-ContextResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SecurityModeCommand ::= SEQUENCE {
    securityModeCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SecurityModeComplete ::= SEQUENCE {
    securityModeComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SecurityModeReject ::= SEQUENCE {
    securityModeReject-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

DataVolumeReportRequest ::= SEQUENCE {
    dataVolumeReportRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

DataVolumeReport ::= SEQUENCE {
    dataVolumeReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

Reset ::= SEQUENCE {
    reset-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ResetAcknowledge ::= SEQUENCE {
    resetAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RAB-ReleaseRequest ::= SEQUENCE {
    rAB-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

Iu-ReleaseRequest ::= SEQUENCE {
    iu-ReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationDetect ::= SEQUENCE {
    relocationDetect-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RelocationComplete ::= SEQUENCE {
    relocationComplete-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

Paging ::= SEQUENCE {
    paging-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

CommonID ::= SEQUENCE {
    commonID-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

CN-InvokeTrace ::= SEQUENCE {
    cN-InvokeTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

CN-DeactivateTrace ::= SEQUENCE {
    cN-DeactivateTrace-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

LocationReportingControl ::= SEQUENCE {
    locationReportingControl-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

LocationReport ::= SEQUENCE {
    locationReport-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

InitialUE-Message ::= SEQUENCE {
    initialUE-Message-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

DirectTransfer ::= SEQUENCE {
    directTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

Overload ::= SEQUENCE {
    overload-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ErrorIndication ::= SEQUENCE {
    errorIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SRNS-DataForwardCommand ::= SEQUENCE {
    sRNS-DataForwardCommand-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ForwardSRNS-Context ::= SEQUENCE {
    forwardSRNS-Context-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RAB-AssignmentRequest ::= SEQUENCE {
    rAB-AssignmentRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RAB-AssignmentResponse ::= SEQUENCE {
    rAB-AssignmentResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

PrivateMessage ::= SEQUENCE {
    privateMessage-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ResetResource ::= SEQUENCE {
    resetResource-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ResetResourceAcknowledge ::= SEQUENCE {
    resetResourceAcknowledge-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RANAP-RelocationInformation ::= SEQUENCE {
    rANAP-RelocationInformation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RAB-ModifyRequest ::= SEQUENCE {
    rAB-ModifyRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

LocationRelatedDataRequest ::= SEQUENCE {
    locationRelatedDataRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

LocationRelatedDataResponse ::= SEQUENCE {
    locationRelatedDataResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

LocationRelatedDataFailure ::= SEQUENCE {
    locationRelatedDataFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

InformationTransferIndication ::= SEQUENCE {
    informationTransferIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

InformationTransferConfirmation ::= SEQUENCE {
    informationTransferConfirmation-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

InformationTransferFailure ::= SEQUENCE {
    informationTransferFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UESpecificInformationIndication ::= SEQUENCE {
    uESpecificInformationIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

DirectInformationTransfer ::= SEQUENCE {
    directInformationTransfer-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UplinkInformationExchangeRequest ::= SEQUENCE {
    uplinkInformationExchangeRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UplinkInformationExchangeResponse ::= SEQUENCE {
    uplinkInformationExchangeResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UplinkInformationExchangeFailure ::= SEQUENCE {
    uplinkInformationExchangeFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionStart ::= SEQUENCE {
    mBMSSessionStart-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionStartResponse ::= SEQUENCE {
    mBMSSessionStartResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionStartFailure ::= SEQUENCE {
    mBMSSessionStartFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionUpdate ::= SEQUENCE {
    mBMSSessionUpdate-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionUpdateResponse ::= SEQUENCE {
    mBMSSessionUpdateResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionUpdateFailure ::= SEQUENCE {
    mBMSSessionUpdateFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionStop ::= SEQUENCE {
    mBMSSessionStop-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSSessionStopResponse ::= SEQUENCE {
    mBMSSessionStopResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSUELinkingRequest ::= SEQUENCE {
    mBMSUELinkingRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSUELinkingResponse ::= SEQUENCE {
    mBMSUELinkingResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRegistrationRequest ::= SEQUENCE {
    mBMSRegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRegistrationResponse ::= SEQUENCE {
    mBMSRegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRegistrationFailure ::= SEQUENCE {
    mBMSRegistrationFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSCNDe-RegistrationRequest ::= SEQUENCE {
    mBMSCNDe-RegistrationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSCNDe-RegistrationResponse ::= SEQUENCE {
    mBMSCNDe-RegistrationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRABEstablishmentIndication ::= SEQUENCE {
    mBMSRABEstablishmentIndication-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRABReleaseRequest ::= SEQUENCE {
    mBMSRABReleaseRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRABRelease ::= SEQUENCE {
    mBMSRABRelease-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

MBMSRABReleaseFailure ::= SEQUENCE {
    mBMSRABReleaseFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

EnhancedRelocationCompleteRequest ::= SEQUENCE {
    enhancedRelocationCompleteRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

EnhancedRelocationCompleteResponse ::= SEQUENCE {
    enhancedRelocationCompleteResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

EnhancedRelocationCompleteFailure ::= SEQUENCE {
    enhancedRelocationCompleteFailure-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

EnhancedRelocationCompleteConfirm ::= SEQUENCE {
    enhancedRelocationCompleteConfirm-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RANAP-EnhancedRelocationInformationRequest ::= SEQUENCE {
    rANAP-EnhancedRelocationInformationRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

RANAP-EnhancedRelocationInformationResponse ::= SEQUENCE {
    rANAP-EnhancedRelocationInformationResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SRVCC-CSKeysRequest ::= SEQUENCE {
    sRVCC-CSKeysRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

SRVCC-CSKeysResponse ::= SEQUENCE {
    sRVCC-CSKeysResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UeRadioCapabilityMatchRequest ::= SEQUENCE {
    ueRadioCapabilityMatchRequest-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

UeRadioCapabilityMatchResponse ::= SEQUENCE {
    ueRadioCapabilityMatchResponse-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
    ...
}

ProtocolExtensionContainer ::= SEQUENCE (SIZE (1..maxProtocolExtensions)) OF ProtocolExtensionField

ProtocolExtensionField ::= SEQUENCE {
    id ProtocolIE-ID,
    criticality Criticality,
    value ANY
}

IE ::= SEQUENCE {
    id ProtocolIE-ID,
    criticality Criticality,
    value ANY
}

DataVolumeReportList ::= SEQUENCE {
	dataVolumeReportListe-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
	...
}

RAB-ReleasedList-IuRelComp ::= SEQUENCE {
	rabReleasedListIuRelComp-ies SEQUENCE (SIZE (0..maxProtocolIEs)) OF IE,
	...
}

RAB-RelocationReleaseList ::= SEQUENCE {
	rabRelocationReleaseList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-DataForwardingList ::= SEQUENCE {
	rabDataForwardingList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-RelocReq ::= SEQUENCE {
	rabSetupListRelocReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-RelocReqAck ::= SEQUENCE {
	rabSetupListRelocReqAck-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-FailedList ::= SEQUENCE {
	rabFailedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-DataForwardingList-SRNS-CtxReq ::= SEQUENCE {
	rabDataForwardingListSRNSCtxReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ContextList ::= SEQUENCE {
	rabContextList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ContextFailedtoTransferList ::= SEQUENCE {
	rabContextFailedtoTransferList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-DataVolumeReportRequestList ::= SEQUENCE {
	rabDataVolumeReportRequestList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-FailedtoReportList ::= SEQUENCE {
	rabFailedtoReportList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-EnhancedRelocCompleteReq ::= SEQUENCE {
	rabSetupListEnhancedRElocCompleteReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-EnhancedRelocCompleteRes ::= SEQUENCE {
	rabSetupListEnhancedRelocCompleteRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ToBeReleasedList-EnhancedRelocCompleteRes ::= SEQUENCE {
	rabToBeReleasedListEnhancedRelocCompleteRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupOrModifiedList ::= SEQUENCE {
	rabSetupOrModifiedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ReleasedList ::= SEQUENCE {
	rabReleaesdList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-QueuedList ::= SEQUENCE {
	rabQueuedList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

GERAN-Iumode-RAB-FailedList-RABAssgntResponse ::= SEQUENCE {
	foo-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ContextList-RANAP-RelocInf ::= SEQUENCE {
	rabContextListRANAPRelocInf-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-EnhRelocInfoReq ::= SEQUENCE {
	rabSetupListEnhRelocInfoReq-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-SetupList-EnhRelocInfoRes ::= SEQUENCE {
	rabSetupListEnhRelocInfoRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-FailedList-EnhRelocInfoRes ::= SEQUENCE {
	rabFailedListEnhRelocInfoRes-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-ModifyList ::= SEQUENCE {
	rabModifyList-ies SEQUENCE (SIZE(0..maxProtocolIEs)) OF IE,
	...
}

RAB-DataVolumeReportList ::= SEQUENCE {
	rabDataVolumeReportList-ies SEQUENCE (SIZE(0..maxProtocolIEs))
OF IE,
	...
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TransportLayerInformation ::= SEQUENCE {
	transportLayerAddress	TransportLayerAddress,
	iuTransportAssociation	IuTransportAssociation,
	iE-Extensions		ProtocolExtensionContainer 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 OPTIONAL,
	...
}

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

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

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

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

RAB-ReleaseFailedList ::= RAB-FailedList

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

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

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

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

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


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

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

TNLInformationEnhRelInfoRes ::=SEQUENCE{
	dl-forwardingTransportLayerAddress	TransportLayerAddress,
	dl-forwardingTransportAssociation	IuTransportAssociation,
	iE-Extensions 				ProtocolExtensionContainer OPTIONAL,
	...
}


-- **************************************************************
--
-- RAB MODIFICATION REQUEST ELEMENTARY PROCEDURE
--
-- **************************************************************

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

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

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

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


END
