-- SBC-AP-Containers.asn
--
-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09)
-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip
--
-- 4.4.8	Container Definitions
--

-- **************************************************************
--
-- Container definitions
--
-- **************************************************************

SBC-AP-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-Containers (5)}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	Presence,
	ProtocolExtensionID,
	ProtocolIE-ID
FROM SBC-AP-CommonDataTypes

	maxProtocolExtensions,
	maxProtocolIEs
FROM SBC-AP-Constants;

-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************

SBC-AP-PROTOCOL-IES ::= CLASS {
	&id	ProtocolIE-ID 	UNIQUE,
	&criticality	Criticality	DEFAULT ignore,
	&Value,
	&presence	Presence
}
WITH SYNTAX {
	ID	&id
	CRITICALITY	&criticality
	TYPE	&Value
	PRESENCE	&presence
}

-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************

SBC-AP-PROTOCOL-EXTENSION ::= CLASS {
	&id	ProtocolExtensionID 	UNIQUE,
	&criticality	Criticality	DEFAULT ignore,
	&Extension,
	&presence	Presence
}
WITH SYNTAX {
	ID	&id
	CRITICALITY	&criticality
	EXTENSION	&Extension
	PRESENCE	&presence
}

-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************

ProtocolIE-Container {SBC-AP-PROTOCOL-IES : IEsSetParam} ::= 
	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
	ProtocolIE-Field {{IEsSetParam}}

ProtocolIE-Field {SBC-AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
	id	SBC-AP-PROTOCOL-IES.&id	({IEsSetParam}),
	criticality	SBC-AP-PROTOCOL-IES.&criticality	({IEsSetParam}{@id}),
	value	SBC-AP-PROTOCOL-IES.&Value	        	({IEsSetParam}{@id})
}

-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************

ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, SBC-AP-PROTOCOL-IES : IEsSetParam} ::=
	SEQUENCE (SIZE (lowerBound..upperBound)) OF
	ProtocolIE-Container {{IEsSetParam}}

-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************

ProtocolExtensionContainer {SBC-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= 
	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
	ProtocolExtensionField {{ExtensionSetParam}}

ProtocolExtensionField {SBC-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
	id	SBC-AP-PROTOCOL-EXTENSION.&id	({ExtensionSetParam}),
	criticality	SBC-AP-PROTOCOL-EXTENSION.&criticality	({ExtensionSetParam}{@id}),
	extensionValue	SBC-AP-PROTOCOL-EXTENSION.&Extension	({ExtensionSetParam}{@id})
}


END
