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