-- RUA-PDU-Contents.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.3	PDU definitions
--

-- **************************************************************
--
-- PDU definitions for RUA.
--
-- **************************************************************

RUA-PDU-Contents {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Contents (1) }

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Cause,
	CriticalityDiagnostics,
	Context-ID,
	CN-DomainIndicator, 
	CSGMembershipStatus,
	IntraDomainNasNodeSelector,
	RANAP-Message,
	Establishment-Cause

FROM RUA-IEs


	ProtocolExtensionContainer{},
	ProtocolIE-ContainerList{},
	ProtocolIE-Container{},
	ProtocolIE-Single-Container{},
	PrivateIE-Container{},
	RUA-PRIVATE-IES,
	RUA-PROTOCOL-EXTENSION,
	RUA-PROTOCOL-IES
FROM RUA-Containers

	id-Cause,
	id-CriticalityDiagnostics,
	id-Context-ID,
	id-CN-DomainIndicator, 
 	id-CSGMembershipStatus,
	id-RANAP-Message,
	id-IntraDomainNasNodeSelector,
	id-Establishment-Cause

FROM RUA-Constants;


-- **************************************************************
--
-- Connect
--
-- **************************************************************

Connect ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container       { {ConnectIEs} },
	protocolExtensions	ProtocolExtensionContainer { {ConnectExtensions} } 	OPTIONAL,
	...
}

ConnectIEs RUA-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator				CRITICALITY reject	TYPE CN-DomainIndicator				PRESENCE mandatory } |
	{ ID id-Context-ID						CRITICALITY reject	TYPE Context-ID						PRESENCE mandatory } |
	{ ID id-IntraDomainNasNodeSelector 		CRITICALITY ignore	TYPE IntraDomainNasNodeSelector		PRESENCE optional } |
	{ ID id-Establishment-Cause				CRITICALITY reject	TYPE Establishment-Cause			PRESENCE mandatory } |
	{ ID id-RANAP-Message					CRITICALITY reject	TYPE RANAP-Message					PRESENCE mandatory },
	...
}

ConnectExtensions RUA-PROTOCOL-EXTENSION ::= {
	{ ID id-CSGMembershipStatus		CRITICALITY	 ignore		EXTENSION CSGMembershipStatus		PRESENCE optional	},

	...
}


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

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

DirectTransferIEs RUA-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator				CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory } |
	{ ID id-Context-ID						CRITICALITY reject	TYPE Context-ID				PRESENCE mandatory } |
	{ ID id-RANAP-Message					CRITICALITY reject	TYPE RANAP-Message			PRESENCE mandatory  },
	...
}

DirectTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
	...
}



-- **************************************************************
--
-- Disconnect
--
-- **************************************************************

Disconnect ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container       { {DisconnectIEs} },
	protocolExtensions	ProtocolExtensionContainer { {DisconnectExtensions} } 	OPTIONAL,
	...
}

DisconnectIEs RUA-PROTOCOL-IES ::= {
	{ ID id-CN-DomainIndicator				CRITICALITY reject	TYPE CN-DomainIndicator		PRESENCE mandatory } |
	{ ID id-Context-ID						CRITICALITY reject	TYPE Context-ID				PRESENCE mandatory } |
	{ ID id-Cause							CRITICALITY reject	TYPE Cause					PRESENCE mandatory } |
	{ ID id-RANAP-Message					CRITICALITY reject	TYPE RANAP-Message			PRESENCE conditional  },
	-- RANAP message shall be included if Cause value is "normal"
	...
}

DisconnectExtensions RUA-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- Connectionless Transfer
--
-- **************************************************************

ConnectionlessTransfer ::= SEQUENCE {
	protocolIEs			ProtocolIE-Container       { {ConnectionlessTransferIEs} },
	protocolExtensions	ProtocolExtensionContainer { {ConnectionlessTransferExtensions} } 	OPTIONAL,
	...
}

ConnectionlessTransferIEs RUA-PROTOCOL-IES ::= {
	{ ID id-RANAP-Message					CRITICALITY reject	TYPE RANAP-Message			PRESENCE mandatory  },
	...
}

ConnectionlessTransferExtensions RUA-PROTOCOL-EXTENSION ::= {
	...
}




-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************

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

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

ErrorIndicationExtensions RUA-PROTOCOL-EXTENSION ::= {
	...
}

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

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

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


END
