H323-MESSAGES DEFINITIONS AUTOMATIC TAGS ::=
BEGIN


IMPORTS
		SIGNED{},
		ENCRYPTED{},
		HASHED{},
		ChallengeString,
		TimeStamp,
		RandomVal,
		Password,
		EncodedPwdCertToken,
		ClearToken,
		CryptoToken,
		AuthenticationMechanism
	FROM H235-SECURITY-MESSAGES;

H323-UserInformation ::= SEQUENCE		-- root for all Q.931 related ASN.1
{
	h323-uu-pdu	H323-UU-PDU,
	user-data	SEQUENCE
	{
		protocol-discriminator		INTEGER	(0..255),
		user-information		OCTET STRING (SIZE(1..131)),
		...
	} OPTIONAL,
	...
}

H323-UU-PDU ::= SEQUENCE
{
	h323-message-body   CHOICE
	{
		setup			Setup-UUIE,
		callProceeding		CallProceeding-UUIE,
		connect			Connect-UUIE,
		alerting		Alerting-UUIE,
		userInformation	UI-UUIE,
		releaseComplete	ReleaseComplete-UUIE,
		facility		Facility-UUIE,
		...,
		progress		Progress-UUIE,
		empty			NULL		-- used when a FACILITY message is sent,
-- but the Facility-UUIE is not to be invoked
-- (possible when transporting supplementary
-- services messages)
	},
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	h4501SupplementaryService	SEQUENCE OF OCTET STRING OPTIONAL,
						-- each sequence of octet string is defined as one
						-- H4501SupplementaryService APDU as defined in
						-- Table 3/H.450.1
	h245Tunneling			BOOLEAN,
						-- if TRUE, tunneling of H.245 messages is enabled
	h245Control			SEQUENCE OF OCTET STRING OPTIONAL,
						-- each octet string may contain exactly
						-- one H.245 PDU
	nonStandardControl		SEQUENCE OF NonStandardParameter OPTIONAL
}

Alerting-UUIE ::= SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	destinationInfo	EndpointType,
	h245Address		TransportAddress OPTIONAL,
	...,
	callIdentifier		CallIdentifier,
	h245SecurityMode	H245Security OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	fastStart		SEQUENCE OF OCTET STRING OPTIONAL
}

CallProceeding-UUIE ::= SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	destinationInfo	EndpointType,
	h245Address		TransportAddress OPTIONAL,
	...,
	callIdentifier		CallIdentifier,
	h245SecurityMode	H245Security OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	fastStart		SEQUENCE OF OCTET STRING OPTIONAL
}

Connect-UUIE ::= SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	h245Address		TransportAddress OPTIONAL,
	destinationInfo	EndpointType,
	conferenceID		ConferenceIdentifier,
	...,
	callIdentifier		CallIdentifier,
	h245SecurityMode	H245Security OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	fastStart		SEQUENCE OF OCTET STRING OPTIONAL
}

UI-UUIE	::=SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	...,
	callIdentifier		CallIdentifier
}

ReleaseComplete-UUIE ::= SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	reason			ReleaseCompleteReason OPTIONAL,
	...,
	callIdentifier		CallIdentifier
}

ReleaseCompleteReason ::= CHOICE
{
	noBandwidth		NULL,	-- bandwidth taken away or ARQ denied
	gatekeeperResources	NULL,	-- exhausted
	unreachableDestination	NULL,	-- no transport path to the destination
	destinationRejection	NULL,	-- rejected at destination
	invalidRevision	NULL,
	noPermission		NULL,	-- called party's gatekeeper rejects
	unreachableGatekeeper	NULL,	-- terminal cannot reach gatekeeper for ARQ
	gatewayResources	NULL,
	badFormatAddress	NULL,
	adaptiveBusy		NULL,	-- call is dropping due to LAN crowding
	inConf			NULL,	-- no address in AlternativeAddress
	undefinedReason	NULL,
	...,
	facilityCallDeflection	NULL,	-- call was deflected using a Facility message
	securityDenied		NULL,	-- incompatible security settings
	calledPartyNotRegistered	NULL,	-- used by gatekeeper when endpoint has
						-- preGrantedARQ to bypass ARQ/ACF
	callerNotregistered		NULL	-- used by gatekeeper when endpoint has
						-- preGrantedArq to bypass ARQ/ACF
}

Setup-UUIE ::= SEQUENCE
{
	protocolIdentifier	ProtocolIdentifier,
	h245Address		TransportAddress OPTIONAL,
	sourceAddress		SEQUENCE OF AliasAddress OPTIONAL,
	sourceInfo		EndpointType,
	destinationAddress	SEQUENCE OF AliasAddress OPTIONAL,
	destCallSignalAddress	TransportAddress OPTIONAL,
	destExtraCallInfo	SEQUENCE OF AliasAddress OPTIONAL,	-- Note(1) 
	destExtraCRV		SEQUENCE OF CallReferenceValue OPTIONAL,-- Note(1)
	activeMC		BOOLEAN,
	conferenceID		ConferenceIdentifier,
	conferenceGoal		CHOICE
	{
		create		NULL,
		join		NULL,
		invite		NULL,
		...,
		capability-negotiation		NULL,
		callIndependentSupplementaryService	NULL
	},
	callServices		QseriesOptions  OPTIONAL,
	callType		CallType,
	...,
	sourceCallSignalAddress	TransportAddress OPTIONAL,
	remoteExtensionAddress	AliasAddress OPTIONAL,
	callIdentifier		CallIdentifier,
	h245SecurityCapability	SEQUENCE OF H245Security OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	fastStart		SEQUENCE OF OCTET STRING OPTIONAL,
	mediaWaitForConnect	BOOLEAN,
	canOverlapSend		BOOLEAN
}

Facility-UUIE ::= SEQUENCE
{
	protocolIdentifier		ProtocolIdentifier,
	alternativeAddress		TransportAddress OPTIONAL,
	alternativeAliasAddress	SEQUENCE OF AliasAddress OPTIONAL,
	conferenceID			ConferenceIdentifier OPTIONAL,
	reason				FacilityReason,
	...,
	callIdentifier			CallIdentifier,
	destExtraCallInfo		SEQUENCE OF AliasAddress OPTIONAL,
	remoteExtensionAddress		AliasAddress OPTIONAL,
	tokens				SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens			SEQUENCE OF CryptoH323Token OPTIONAL,
	conferences			SEQUENCE OF ConferenceList OPTIONAL,
	h245Address			TransportAddress OPTIONAL
}

ConferenceList ::= SEQUENCE
{
	conferenceID			ConferenceIdentifier OPTIONAL,
	conferenceAlias		AliasAddress OPTIONAL,
	nonStandardData		NonStandardParameter OPTIONAL,
	...
}

FacilityReason ::= CHOICE
{
	routeCallToGatekeeper	NULL,		-- call must use gatekeeper model
						-- gatekeeper is alternativeAddress
	callForwarded		NULL,
	routeCallToMC		NULL,
	undefinedReason	NULL,
	...,
	conferenceListChoice	NULL,
	startH245		NULL		-- recipient should connect to h245Address
}

Progress-UUIE ::= SEQUENCE
{
	protocolIdentifier		ProtocolIdentifier,
	destinationInfo		EndpointType,
	h245Address			TransportAddress OPTIONAL,
	callIdentifier			CallIdentifier,
	h245SecurityMode		H245Security OPTIONAL,
	...,
	tokens				SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens			SEQUENCE OF CryptoH323Token OPTIONAL,
	fastStart			SEQUENCE OF OCTET STRING OPTIONAL
}

TransportAddress ::= CHOICE
{
	ipAddress	SEQUENCE
	{
		ip		OCTET STRING (SIZE(4)),
		port		INTEGER(0..65535)
	},
	ipSourceRoute	SEQUENCE
	{
		ip		OCTET STRING (SIZE(4)),
		port		INTEGER(0..65535),
		route		SEQUENCE OF OCTET STRING(SIZE(4)),
		routing 	CHOICE
		{
			strict	NULL,
			loose	NULL,
			...
		},
		...
	},
	ipxAddress	SEQUENCE
	{
		node	OCTET STRING (SIZE(6)),
		netnum	OCTET STRING (SIZE(4)),
		port	OCTET STRING (SIZE(2))
	},
	ip6Address	SEQUENCE
	{
		ip	OCTET STRING (SIZE(16)),
		port	INTEGER(0..65535),
		...
	},
	netBios			OCTET STRING (SIZE(16)),
	nsap			OCTET STRING (SIZE(1..20)),
	nonStandardAddress	NonStandardParameter,	
	...	
}

EndpointType ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	vendor			VendorIdentifier OPTIONAL,
	gatekeeper		GatekeeperInfo OPTIONAL,
	gateway			GatewayInfo OPTIONAL,
	mcu			McuInfo OPTIONAL,	-- mc must be set as well
	terminal		TerminalInfo OPTIONAL,
	mc			BOOLEAN,		-- shall not be set by itself
	undefinedNode		BOOLEAN,	
	...
}

GatewayInfo ::= SEQUENCE
{
	protocol		SEQUENCE OF SupportedProtocols OPTIONAL,
	nonStandardData	NonStandardParameter OPTIONAL,
	...
}

SupportedProtocols ::= CHOICE
{
	nonStandardData	NonStandardParameter,
	h310			H310Caps,
	h320			H320Caps,
	h321			H321Caps,
	h322			H322Caps,
	h323			H323Caps,
	h324			H324Caps,
	voice			VoiceCaps,
	t120-only		T120OnlyCaps,
	...,
	nonStandardProtocol	NonStandardProtocol
}

H310Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

H320Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

H321Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

H322Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

H323Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

H324Caps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

VoiceCaps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

T120OnlyCaps ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix
}

NonStandardProtocol ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	dataRatesSupported	SEQUENCE OF DataRate OPTIONAL,
	supportedPrefixes	SEQUENCE OF SupportedPrefix,
	...
}

McuInfo ::=SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...
}

TerminalInfo ::=SEQUENCE 
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...
}

GatekeeperInfo ::=SEQUENCE 
{
	nonStandardData	NonStandardParameter OPTIONAL,
	...
}

VendorIdentifier ::= SEQUENCE
{
	vendor			H221NonStandard,
	productId		OCTET STRING (SIZE(1..256)) OPTIONAL,	-- per vendor
	versionId		OCTET STRING (SIZE(1..256)) OPTIONAL,	-- per product
	...
}

H221NonStandard ::= SEQUENCE
{	t35CountryCode		INTEGER(0..255),	-- country, as per T.35
	t35Extension		INTEGER(0..255),	-- assigned nationally
	manufacturerCode	INTEGER(0..65535),	-- assigned nationally
	...
}

NonStandardParameter ::= SEQUENCE
{
	nonStandardIdentifier	NonStandardIdentifier,
	data			OCTET STRING
}

NonStandardIdentifier		::=CHOICE
{
	object			OBJECT IDENTIFIER,
	h221NonStandard	H221NonStandard,
	...
}

AliasAddress ::= CHOICE
{
	e164		IA5String (SIZE (1..128)) (FROM ("0123456789#*,")),
	h323-ID		BMPString (SIZE (1..256)),	-- Basic ISO/IEC 10646-1 (Unicode)
	...,
	url-ID		IA5String (SIZE(1..512)),	-- URL style address
	transportID	TransportAddress,
	email-ID	IA5String (SIZE(1..512)),	-- rfc822-compliant email address
	partyNumber	PartyNumber
}	

PartyNumber ::= CHOICE
{
	publicNumber PublicPartyNumber,
		-- the numbering plan is according to
		-- Recommendations E.163 and E.164.
	dataPartyNumber NumberDigits,
		-- not used, value reserved.
	telexPartyNumber NumberDigits,
		-- not used, value reserved.
	privateNumber PrivatePartyNumber,
	nationalStandardPartyNumber NumberDigits,
		-- not used, value reserved.
	...
}

PublicPartyNumber ::= SEQUENCE
{
	publicTypeOfNumber	PublicTypeOfNumber,
	publicNumberDigits	NumberDigits
}

PrivatePartyNumber ::= SEQUENCE
{
	privateTypeOfNumber	PrivateTypeOfNumber,
	privateNumberDigits	NumberDigits
}

NumberDigits ::= IA5String (SIZE (1..128)) (FROM ("0123456789#*,"))

PublicTypeOfNumber ::= CHOICE
{
	unknown			NULL,
		-- if used number digits carry prefix indicating type
		-- of number according to national recommendations.
	internationalNumber	NULL,
	nationalNumber		NULL,
	networkSpecificNumber	NULL,
		-- not used, value reserved
	subscriberNumber	NULL,
	abbreviatedNumber	NULL,
		-- valid only for called party number at the outgoing
		-- access, network substitutes appropriate number.
...
}

PrivateTypeOfNumber ::= CHOICE
{
	unknown			NULL,
	level2RegionalNumber	NULL,
	level1RegionalNumber	NULL,
	pISNSpecificNumber	NULL,
	localNumber		NULL,
	abbreviatedNumber	NULL,
	...
}

Endpoint ::= SEQUENCE
{ 
	nonStandardData	NonStandardParameter OPTIONAL, 
	aliasAddress		SEQUENCE OF AliasAddress OPTIONAL,  
	callSignalAddress	SEQUENCE OF TransportAddress OPTIONAL,  
	rasAddress		SEQUENCE OF TransportAddress OPTIONAL,  
	endpointType		EndpointType OPTIONAL,  
	tokens			SEQUENCE OF ClearToken OPTIONAL,  
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	priority		INTEGER(0..127) OPTIONAL, 
	remoteExtensionAddress	SEQUENCE OF AliasAddress OPTIONAL,
	destExtraCallInfo	SEQUENCE OF AliasAddress OPTIONAL,
	...
} 
 
AlternateGK ::= SEQUENCE
{
	rasAddress		TransportAddress,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	needToRegister		BOOLEAN,
	priority		INTEGER (0..127),
	...
}

AltGKInfo ::= SEQUENCE
{
	alternateGatekeeper	SEQUENCE OF AlternateGK,
	altGKisPermanent	BOOLEAN,
	...
}

SecurityServiceMode ::= CHOICE 
{
nonStandard		NonStandardParameter,
none			NULL,
default			NULL,
...				-- can be extended with other specific modes
}

SecurityCapabilities ::= SEQUENCE 
{
	nonStandard		NonStandardParameter OPTIONAL,
	encryption		SecurityServiceMode,
	authenticaton		SecurityServiceMode,
	integrity		SecurityServiceMode,
...
}

H245Security ::= CHOICE 
{
	nonStandard		NonStandardParameter,
	noSecurity		NULL,
	tls			SecurityCapabilities,
	ipsec			SecurityCapabilities,
	...
}

QseriesOptions ::= SEQUENCE
{
	q932Full	BOOLEAN,	-- if true, indicates full support for Q.932
	q951Full	BOOLEAN, 	-- if true, indicates full support for Q.951
	q952Full	BOOLEAN, 	-- if true, indicates full support for Q.952
	q953Full	BOOLEAN, 	-- if true, indicates full support for Q.953
	q955Full	BOOLEAN, 	-- if true, indicates full support for Q.955
	q956Full	BOOLEAN, 	-- if true, indicates full support for Q.956
	q957Full	BOOLEAN, 	-- if true, indicates full support for Q.957
	q954Info	Q954Details,	
	...
}

Q954Details ::= SEQUENCE
{
	conferenceCalling	BOOLEAN,
	threePartyService	BOOLEAN,
	...
}

GloballyUniqueID	::=	OCTET STRING (SIZE(16))
ConferenceIdentifier	::=	GloballyUniqueID
RequestSeqNum		::=	INTEGER (1..65535)
GatekeeperIdentifier	::=	BMPString (SIZE(1..128))
BandWidth		::=	INTEGER (0.. 4294967295)	-- in 100s of bits
CallReferenceValue	::=	INTEGER (0..65535)
EndpointIdentifier	::=	BMPString (SIZE(1..128))
ProtocolIdentifier	::=	OBJECT IDENTIFIER	
				-- shall be set to  
				-- {itu-t (0) recommendation (0) h (8) 2250 version (0) 2}
TimeToLive		::=	INTEGER (1..4294967295)		--in seconds

CallIdentifier ::= SEQUENCE
{
	guid		GloballyUniqueID,
	...
}


EncryptIntAlg ::= CHOICE
{	-- core encryption algorithms for RAS message integrity
	nonStandard		NonStandardParameter,
	isoAlgorithm		OBJECT IDENTIFIER,	-- defined in ISO/IEC 9979
	...
}
NonIsoIntegrityMechanism ::= CHOICE 
{	-- HMAC mechanism used, no truncation, tagging may be necessary!
	hMAC-MD5		NULL,
	hMAC-iso10118-2-s	EncryptIntAlg,	-- according to ISO/IEC 10118-2 using
					-- EncryptIntAlg as core block encryption algorithm 
					-- (short MAC)
	hMAC-iso10118-2-l	EncryptIntAlg,	-- according to ISO/IEC 10118-2 using
					-- EncryptIntAlg as core block encryption algorithm 
					-- (long MAC)
	hMAC-iso10118-3	OBJECT IDENTIFIER,  -- according to ISO/IEC 10118-3 using
					-- OID as hash function (OID is SHA-1, RIPE-MD160,
					-- RIPE-MD128)
	...
}

IntegrityMechanism ::= CHOICE
{	-- for RAS message integrity
	nonStandard		NonStandardParameter,
	digSig			NULL,	-- indicates to apply a digital signature
	iso9797			OBJECT IDENTIFIER,	-- according to ISO/IEC 9797 using OID as
							-- core encryption algorithm (X-CBC MAC)
	nonIsoIM		NonIsoIntegrityMechanism,
	...
}

ICV ::= SEQUENCE
{
	algorithmOID	OBJECT IDENTIFIER,  -- the algorithm used to compute the signature
	icv		BIT STRING	-- the computed cryptographic integrity check value
-- or signature
}

FastStartToken ::= ClearToken (WITH COMPONENTS {..., timeStamp, dhkey, generalID -- set to 'alias' -- })
EncodedFastStartToken ::= TYPE-IDENTIFIER.&Type (FastStartToken)
CryptoH323Token::= CHOICE
{
	cryptoEPPwdHash SEQUENCE
{
		alias		AliasAddress, -- alias of entity generating hash
		timeStamp	TimeStamp, -- timestamp used in hash
token 		HASHED	{ EncodedPwdCertToken -- generalID set to 'alias' -- }
	},
	cryptoGKPwdHash  SEQUENCE
{
gatekeeperId	GatekeeperIdentifier, -- GatekeeperID of GK generating hash
		timeStamp	TimeStamp, -- timestamp used in hash
token		HASHED 	{ EncodedPwdCertToken  -- generalID set to Gatekeeperid -- }
	},
	cryptoEPPwdEncr	ENCRYPTED
{ EncodedPwdCertToken -- generalID set to Gatekeeperid --},
	cryptoGKPwdEncr	ENCRYPTED
{ EncodedPwdCertToken -- generalID set to Gatekeeperid --},
	cryptoEPCert		SIGNED { EncodedPwdCertToken -- generalID set to Gatekeeperid -- },
	cryptoGKCert   	SIGNED { EncodedPwdCertToken -- generalID set to alias -- },
	cryptoFastStart	SIGNED { EncodedFastStartToken },
	nestedcryptoToken	CryptoH323Token,
	...
}


DataRate ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	channelRate		BandWidth,
	channelMultiplier	INTEGER (1..256) OPTIONAL,
	...
}

SupportedPrefix ::= SEQUENCE
{
	nonStandardData	NonStandardParameter OPTIONAL,
	prefix			AliasAddress,
	...
}


RasMessage ::= CHOICE   
{
	gatekeeperRequest		GatekeeperRequest,
	gatekeeperConfirm		GatekeeperConfirm,
	gatekeeperReject		GatekeeperReject,
	registrationRequest		RegistrationRequest,
	registrationConfirm		RegistrationConfirm,
	registrationReject		RegistrationReject,
	unregistrationRequest		UnregistrationRequest,
	unregistrationConfirm		UnregistrationConfirm,
	unregistrationReject		UnregistrationReject,
	admissionRequest		AdmissionRequest,
	admissionConfirm		AdmissionConfirm,
	admissionReject		AdmissionReject,
	bandwidthRequest		BandwidthRequest,
	bandwidthConfirm		BandwidthConfirm,
	bandwidthReject		BandwidthReject,
	disengageRequest		DisengageRequest,
	disengageConfirm		DisengageConfirm,
	disengageReject		DisengageReject,
	locationRequest		LocationRequest,
	locationConfirm		LocationConfirm,
	locationReject			LocationReject, 
	infoRequest			InfoRequest,
	infoRequestResponse		InfoRequestResponse,
	nonStandardMessage		NonStandardMessage,
	unknownMessageResponse		UnknownMessageResponse,
	...,
	requestInProgress		RequestInProgress,
	resourcesAvailableIndicate	ResourcesAvailableIndicate,
	resourcesAvailableConfirm	ResourcesAvailableConfirm,
	infoRequestAck			InfoRequestAck,
	infoRequestNak			InfoRequestNak
}

GatekeeperRequest ::= SEQUENCE --(GRQ)
{
	
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	rasAddress		TransportAddress,
	endpointType		EndpointType,
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	callServices		QseriesOptions  OPTIONAL, 
	endpointAlias		SEQUENCE OF AliasAddress OPTIONAL,
	...,
	alternateEndpoints	SEQUENCE OF Endpoint OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	authenticationCapability	SEQUENCE OF AuthenticationMechanism OPTIONAL,
	algorithmOIDs		SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
	integrity		SEQUENCE OF IntegrityMechanism OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

GatekeeperConfirm ::= SEQUENCE --(GCF)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	rasAddress		TransportAddress,
	...,
	alternateGatekeeper	SEQUENCE OF AlternateGK OPTIONAL,
	authenticationMode	AuthenticationMechanism OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	algorithmOID		OBJECT IDENTIFIER OPTIONAL,
	integrity		SEQUENCE OF IntegrityMechanism OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

GatekeeperReject ::= SEQUENCE --(GRJ)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	rejectReason		GatekeeperRejectReason,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

GatekeeperRejectReason ::= CHOICE
{
	resourceUnavailable		NULL,
	terminalExcluded		NULL,	-- permission failure, not a resource failure
	invalidRevision		NULL,
	undefinedReason		NULL,
	...,
	securityDenial			NULL
}

RegistrationRequest ::= SEQUENCE --(RRQ)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	discoveryComplete	BOOLEAN,
	callSignalAddress	SEQUENCE OF TransportAddress,
	rasAddress		SEQUENCE OF TransportAddress,
	terminalType		EndpointType,
	terminalAlias		SEQUENCE OF AliasAddress OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	endpointVendor		VendorIdentifier,
	...,
	alternateEndpoints	SEQUENCE OF Endpoint OPTIONAL,
	timeToLive		TimeToLive OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	keepAlive		BOOLEAN,
	endpointIdentifier	EndpointIdentifier OPTIONAL,
	willSupplyUUIEs	BOOLEAN
}

RegistrationConfirm ::= SEQUENCE --(RCF)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	callSignalAddress	SEQUENCE OF TransportAddress,
	terminalAlias		SEQUENCE OF AliasAddress OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	endpointIdentifier	EndpointIdentifier,
	...,	
	alternateGatekeeper	SEQUENCE OF AlternateGK OPTIONAL,
	timeToLive		TimeToLive OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	willRespondToIRR	BOOLEAN,
	preGrantedARQ		SEQUENCE
	{
		makeCall				BOOLEAN,
		useGKCallSignalAddressToMakeCall	BOOLEAN,
		answerCall				BOOLEAN,
		useGKCallSignalAddressToAnswer	BOOLEAN,
		...
	} OPTIONAL
}

RegistrationReject ::= SEQUENCE --(RRJ)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	rejectReason		RegistrationRejectReason,
	gatekeeperIdentifier	GatekeeperIdentifier  OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

RegistrationRejectReason ::= CHOICE
{
	discoveryRequired		NULL,	-- registration permission has aged
	invalidRevision		NULL,
	invalidCallSignalAddress	NULL,
	invalidRASAddress		NULL,	-- supplied address is invalid
	duplicateAlias			SEQUENCE OF AliasAddress,
						-- alias registered to another endpoint
	invalidTerminalType		NULL,
	undefinedReason		NULL,
	transportNotSupported		NULL,	-- one or more of the transports
	...,
	transportQOSNotSupported	NULL,	-- endpoint QoS not supported
	resourceUnavailable		NULL,	-- gatekeeper resources exhausted
	invalidAlias			NULL,	-- alias not consistent with gatekeeper rules
	securityDenial			NULL
}

UnregistrationRequest ::= SEQUENCE --(URQ)
{
	requestSeqNum		RequestSeqNum,
	callSignalAddress	SEQUENCE OF TransportAddress,
	endpointAlias		SEQUENCE OF AliasAddress OPTIONAL,
	nonStandardData	NonStandardParameter OPTIONAL,
	endpointIdentifier	EndpointIdentifier OPTIONAL,
	...,
	alternateEndpoints	SEQUENCE OF Endpoint OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	reason			UnregRequestReason OPTIONAL
}

UnregRequestReason ::= CHOICE
{
	reregistrationRequired		NULL,
	ttlExpired			NULL,
	securityDenial			NULL,
	undefinedReason		NULL,
	...
}

UnregistrationConfirm ::= SEQUENCE --(UCF)
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

UnregistrationReject ::= SEQUENCE --(URJ)
{
	
	requestSeqNum		RequestSeqNum,
	rejectReason		UnregRejectReason,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

UnregRejectReason ::= CHOICE
{
	notCurrentlyRegistered	NULL,
	callInProgress		NULL,
	undefinedReason	NULL,
	...,
	permissionDenied	NULL,	-- requesting user not allowed to unregister
					-- specified user
	securityDenial		NULL
}

AdmissionRequest ::= SEQUENCE --(ARQ)
{
	requestSeqNum		RequestSeqNum,
	callType		CallType,
	callModel		CallModel OPTIONAL,
	endpointIdentifier	EndpointIdentifier,
	destinationInfo	SEQUENCE OF AliasAddress OPTIONAL,	--Note 1
	destCallSignalAddress	TransportAddress OPTIONAL,		--Note 1
	destExtraCallInfo	SEQUENCE OF AliasAddress OPTIONAL,
	srcInfo			SEQUENCE OF AliasAddress,
	srcCallSignalAddress	TransportAddress OPTIONAL, 
	bandWidth		BandWidth,
	callReferenceValue	CallReferenceValue,
	nonStandardData	NonStandardParameter OPTIONAL,
	callServices		QseriesOptions  OPTIONAL,
	conferenceID		ConferenceIdentifier,
	activeMC		BOOLEAN,
	answerCall		BOOLEAN,	-- answering a call
	...,
	canMapAlias		BOOLEAN,	-- can handle alias address
	callIdentifier		CallIdentifier,
	srcAlternatives	SEQUENCE OF Endpoint OPTIONAL,
	destAlternatives	SEQUENCE OF Endpoint OPTIONAL,
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	transportQOS		TransportQOS OPTIONAL,
	willSupplyUUIEs	BOOLEAN
}

CallType ::= CHOICE
{
	pointToPoint	NULL,		-- Point to point
	oneToN		NULL,		-- no interaction (FFS)
	nToOne		NULL,		-- no interaction (FFS)
	nToN		NULL,		-- interactive (multipoint)
	...
}

CallModel ::= CHOICE
{
	direct			NULL,
	gatekeeperRouted	NULL,
	...
}

TransportQOS ::= CHOICE
{
	endpointControlled	NULL,
	gatekeeperControlled	NULL,
	noControl		NULL,
	...
}

AdmissionConfirm ::= SEQUENCE --(ACF)
{
	requestSeqNum			RequestSeqNum,
	bandWidth			BandWidth,
	callModel			CallModel,
	destCallSignalAddress		TransportAddress,
	irrFrequency			INTEGER (1..65535) OPTIONAL,
	nonStandardData		NonStandardParameter OPTIONAL,
	...,
	destinationInfo		SEQUENCE OF AliasAddress OPTIONAL,
	destExtraCallInfo		SEQUENCE OF AliasAddress OPTIONAL,
	destinationType		EndpointType OPTIONAL,
	remoteExtensionAddress		SEQUENCE OF AliasAddress OPTIONAL,
	alternateEndpoints		SEQUENCE OF Endpoint OPTIONAL,
	tokens				SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens			SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue		ICV OPTIONAL,
	transportQOS			TransportQOS OPTIONAL,
	willRespondToIRR		BOOLEAN,
	uuiesRequested			UUIEsRequested
}

UUIEsRequested ::= SEQUENCE
{
	setup			BOOLEAN,
	callProceeding		BOOLEAN,
	connect			BOOLEAN,
	alerting		BOOLEAN,
	userInformation	BOOLEAN,
	releaseComplete	BOOLEAN,
	facility		BOOLEAN,
	progress		BOOLEAN,
	empty			BOOLEAN,
	...
}

AdmissionReject ::= SEQUENCE --(ARJ)
{
	requestSeqNum		RequestSeqNum,
	rejectReason		AdmissionRejectReason,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	callSignalAddress	SEQUENCE OF TransportAddress OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

AdmissionRejectReason ::= CHOICE
{
	calledPartyNotRegistered	NULL,	-- can't translate address
	invalidPermission		NULL,	-- permission has expired
	requestDenied			NULL,	-- no bandwidth available
	undefinedReason		NULL,
	callerNotRegistered		NULL,
	routeCallToGatekeeper		NULL,
	invalidEndpointIdentifier	NULL,
	resourceUnavailable		NULL,
	...,
	securityDenial			NULL,
	qosControlNotSupported		NULL,
	incompleteAddress		NULL
}

BandwidthRequest ::= SEQUENCE --(BRQ)
{
	requestSeqNum		RequestSeqNum,
	endpointIdentifier	EndpointIdentifier,
	conferenceID		ConferenceIdentifier,
	callReferenceValue	CallReferenceValue,
	callType		CallType OPTIONAL,
	bandWidth		BandWidth,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	callIdentifier		CallIdentifier,
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	answeredCall		BOOLEAN
}

BandwidthConfirm ::= SEQUENCE --(BCF)
{
	requestSeqNum		RequestSeqNum,
	bandWidth		BandWidth,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

BandwidthReject ::= SEQUENCE --(BRJ)
{
	requestSeqNum		RequestSeqNum,
	rejectReason		BandRejectReason,
	allowedBandWidth	BandWidth,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

BandRejectReason ::= CHOICE
{
	notBound			NULL,	-- discovery permission has aged
	invalidConferenceID		NULL,	-- possible revision
	invalidPermission		NULL,	-- true permission violation
	insufficientResources		NULL,
	invalidRevision		NULL,
	undefinedReason		NULL,
	...,
	securityDenial			NULL
}

LocationRequest ::= SEQUENCE --(LRQ)
{
	requestSeqNum		RequestSeqNum,
	endpointIdentifier	EndpointIdentifier OPTIONAL,
	destinationInfo	SEQUENCE OF AliasAddress,
	nonStandardData	NonStandardParameter OPTIONAL,
	replyAddress		TransportAddress,
	...,
	sourceInfo		SEQUENCE OF AliasAddress OPTIONAL,
	canMapAlias		BOOLEAN,	-- can handle alias address
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

LocationConfirm ::= SEQUENCE --(LCF)
{
	requestSeqNum			RequestSeqNum,
	callSignalAddress		TransportAddress,
	rasAddress			TransportAddress,
	nonStandardData		NonStandardParameter OPTIONAL,
	...,
	destinationInfo		SEQUENCE OF AliasAddress OPTIONAL,
	destExtraCallInfo		SEQUENCE OF AliasAddress OPTIONAL,
	destinationType		EndpointType OPTIONAL,
	remoteExtensionAddress		SEQUENCE OF AliasAddress OPTIONAL,
	alternateEndpoints		SEQUENCE OF Endpoint OPTIONAL,
	tokens				SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens			SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue		ICV OPTIONAL
}

LocationReject ::= SEQUENCE --(LRJ)
{
	requestSeqNum		RequestSeqNum,
	rejectReason		LocationRejectReason,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}


LocationRejectReason ::= CHOICE
{
	notRegistered		NULL,
	invalidPermission	NULL,	-- exclusion by administrator or feature
	requestDenied		NULL,	-- can't find location
	undefinedReason	NULL,
	...,
	securityDenial		NULL
}

DisengageRequest ::= SEQUENCE --(DRQ)
{
	requestSeqNum		RequestSeqNum,
	endpointIdentifier	EndpointIdentifier,
	conferenceID		ConferenceIdentifier,
	callReferenceValue	CallReferenceValue,
	disengageReason	DisengageReason,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	callIdentifier		CallIdentifier,
	gatekeeperIdentifier	GatekeeperIdentifier OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	answeredCall		BOOLEAN
}

DisengageReason ::= CHOICE
{
	forcedDrop		NULL,	-- gatekeeper is forcing the drop
	normalDrop		NULL,	-- associated with normal drop
	undefinedReason	NULL,
	...
}

DisengageConfirm ::= SEQUENCE --(DCF)
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

DisengageReject ::= SEQUENCE --(DRJ)
{
	requestSeqNum		RequestSeqNum,
	rejectReason		DisengageRejectReason,
	nonStandardData	NonStandardParameter OPTIONAL,
	...,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

DisengageRejectReason ::= CHOICE
{
	notRegistered		NULL,	-- not registered with gatekeeper
	requestToDropOther	NULL, 	-- can't request drop for others
	...,
	securityDenial		NULL
}

InfoRequest ::= SEQUENCE --(IRQ)
{
	requestSeqNum		RequestSeqNum,
	callReferenceValue	CallReferenceValue,
	nonStandardData	NonStandardParameter OPTIONAL,
	replyAddress		TransportAddress OPTIONAL,
	...,
	callIdentifier		CallIdentifier,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	uuiesRequested		UUIEsRequested OPTIONAL
}
InfoRequestResponse ::= SEQUENCE --(IRR)
{
	nonStandardData	NonStandardParameter OPTIONAL,
	requestSeqNum		RequestSeqNum,
	endpointType		EndpointType,
	endpointIdentifier	EndpointIdentifier,
	rasAddress		TransportAddress,
	callSignalAddress	SEQUENCE OF TransportAddress,
	endpointAlias		SEQUENCE OF AliasAddress OPTIONAL,
	perCallInfo		SEQUENCE OF SEQUENCE
	{
		nonStandardData	NonStandardParameter OPTIONAL,
		callReferenceValue	CallReferenceValue,
		conferenceID		ConferenceIdentifier,
		originator		BOOLEAN OPTIONAL,
		audio			SEQUENCE OF RTPSession OPTIONAL,
		video			SEQUENCE OF RTPSession OPTIONAL,
		data			SEQUENCE OF TransportChannelInfo OPTIONAL,
		h245			TransportChannelInfo,
		callSignaling		TransportChannelInfo,
		callType		CallType,
		bandWidth		BandWidth,
		callModel		CallModel,
		...,
		callIdentifier		CallIdentifier,
		tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
		substituteConfIDs	SEQUENCE OF ConferenceIdentifier,
		pdu			SEQUENCE OF SEQUENCE
		{
			h323pdu		H323-UU-PDU,
			sent		BOOLEAN		-- TRUE is sent, FALSE is received
		} OPTIONAL
	} OPTIONAL,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	needResponse		BOOLEAN
}

TransportChannelInfo ::= SEQUENCE
{
	sendAddress		TransportAddress OPTIONAL,
	recvAddress		TransportAddress OPTIONAL,
	...
}

RTPSession ::= SEQUENCE
{
	rtpAddress		TransportChannelInfo,
	rtcpAddress		TransportChannelInfo,
	cname			PrintableString,
	ssrc			INTEGER (1..4294967295),
	sessionId		INTEGER (1..255),
	associatedSessionIds	SEQUENCE OF INTEGER (1..255),
	...
}

InfoRequestAck ::= SEQUENCE --(IACK)
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	...
}

InfoRequestNak ::= SEQUENCE --(INAK)
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter OPTIONAL,
	nakReason		InfoRequestNakReason,
	altGKInfo		AltGKInfo OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	...
}

InfoRequestNakReason ::= CHOICE
{
	notRegistered		NULL,	-- not registered with gatekeeper
	securityDenial		NULL,
	undefinedReason	NULL,
	...
}

NonStandardMessage ::= SEQUENCE
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

UnknownMessageResponse ::= SEQUENCE	-- (XRS)
{
	requestSeqNum	RequestSeqNum,
	...,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL
}

RequestInProgress ::= SEQUENCE	-- (RIP)
{
	requestSeqNum		RequestSeqNum,
	nonStandardData	NonStandardParameter	OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	delay			INTEGER(1..65535),
	...
}

ResourcesAvailableIndicate ::= SEQUENCE --(RAI)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	endpointIdentifier	EndpointIdentifier,
	protocols		SEQUENCE OF SupportedProtocols,
	almostOutOfResources	BOOLEAN,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	...
}

ResourcesAvailableConfirm ::= SEQUENCE --(RAC)
{
	requestSeqNum		RequestSeqNum,
	protocolIdentifier	ProtocolIdentifier,
	nonStandardData	NonStandardParameter OPTIONAL,
	tokens			SEQUENCE OF ClearToken OPTIONAL,
	cryptoTokens		SEQUENCE OF CryptoH323Token OPTIONAL,
	integrityCheckValue	ICV OPTIONAL,
	...	
}

END		-- of ASN.1