From 18bd1239bee04427340a44f57f993ea92c264e41 Mon Sep 17 00:00:00 2001 From: Kenneth Lundin Date: Fri, 19 Feb 2010 14:01:57 +0000 Subject: OTP-8463 Support for EXTENSIBILITY IMPLIED and SET/SEQ OF NamedType is added. --- .../test/asn1_SUITE_data/TCAPMessages-simple.asn | 206 +++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 lib/asn1/test/asn1_SUITE_data/TCAPMessages-simple.asn (limited to 'lib/asn1/test/asn1_SUITE_data/TCAPMessages-simple.asn') diff --git a/lib/asn1/test/asn1_SUITE_data/TCAPMessages-simple.asn b/lib/asn1/test/asn1_SUITE_data/TCAPMessages-simple.asn new file mode 100644 index 0000000000..a9ace659d5 --- /dev/null +++ b/lib/asn1/test/asn1_SUITE_data/TCAPMessages-simple.asn @@ -0,0 +1,206 @@ +TCAPMessages-simple { ccitt recommendation q 773 modules (2) messages (1) version2 (2) } + +DEFINITIONS ::= + +BEGIN + +EXPORTS OPERATION, ERROR, Component, InvokeIdType; + +-- Transaction Portion fields + +MessageType ::= CHOICE { unidirectional [APPLICATION 1] IMPLICIT Unidirectional, + begin [APPLICATION 2] IMPLICIT Begin, + end [APPLICATION 4] IMPLICIT End, + continue [APPLICATION 5] IMPLICIT Continue, + abort [APPLICATION 7] IMPLICIT Abort } + +Unidirectional ::= SEQUENCE { + dialoguePortion DialoguePortion OPTIONAL, + components ComponentPortion } + +Begin ::= SEQUENCE { + otid OrigTransactionID, + dialoguePortion DialoguePortion OPTIONAL, + components ComponentPortion OPTIONAL + } + +End ::= SEQUENCE { + dtid DestTransactionID, + dialoguePortion DialoguePortion OPTIONAL, + components ComponentPortion OPTIONAL + } + +Continue ::= SEQUENCE { + otid OrigTransactionID, + dtid DestTransactionID, + dialoguePortion DialoguePortion OPTIONAL, + components ComponentPortion OPTIONAL + } + +Abort ::= SEQUENCE { + dtid DestTransactionID, + reason CHOICE { p-abortCause P-AbortCause, u-abortCause DialoguePortion } OPTIONAL + } + +-- NOTE When the Abort Message is generated by the Transaction sublayer, a p-Abort Cause must be +-- present.The u-abortCause may be generated by the component sublayer in which case it is an ABRT +-- APDU, or by the TC-User in which case it could be either an ABRT APDU or data in some user-defined +-- abstract syntax. + +DialoguePortion ::= [APPLICATION 11] EXTERNAL + +-- The dialogue portion carries the dialogue control PDUs as value of the external data type. +-- The direct reference should be set to { ccitt recommendation q 773 as (1) dialogue-as (1) version (1) } +-- if structured dialogue is used and to { ccitt recommendation q 773 as (1) unidialogue-as (2) version (1) } +-- if unstructured dialogue is used or any user defined abstract syntax name when only user information +-- is carried (e.g. when user information is sent in a 1988 Abort message). + +OrigTransactionID ::= [APPLICATION 8] IMPLICIT OCTET STRING (SIZE (1..4) ) +DestTransactionID ::= [APPLICATION 9] IMPLICIT OCTET STRING (SIZE (1..4) ) + +P-AbortCause ::= [APPLICATION 10] IMPLICIT INTEGER { + unrecognizedMessageType (0), + unrecognizedTransactionID (1), + badlyFormattedTransactionPortion (2), + incorrectTransactionPortion (3), + resourceLimitation (4) } + +-- COMPONENT PORTION. The last field in the transaction portion of the TCAP message is the Component Portion. +-- The Component Portion may be absent. + +ComponentPortion ::= [APPLICATION 12] IMPLICIT SEQUENCE SIZE (1..MAX) OF Component + +-- Component Portion fields +-- COMPONENT TYPE. Recommendation X.229 defines four Application Protocol Data Units (APDUs). +-- TCAP adds returnResultNotLast to allow for the segmentation of a result. + +Component ::= CHOICE { + invoke [1] IMPLICIT Invoke, + returnResultLast [2] IMPLICIT ReturnResult, + returnError [3] IMPLICIT ReturnError, + reject [4] IMPLICIT Reject, + returnResultNotLast [7] IMPLICIT ReturnResult } + +-- The Components are sequences of data elements. + +Invoke ::= SEQUENCE { + invokeID InvokeIdType, + linkedID [0] IMPLICIT InvokeIdType OPTIONAL, + operationCode OPERATION, + parameter ANY DEFINED BY operationCode OPTIONAL } + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER or the keyword ARGUMENT +-- in the type definition of a particular operation. + +ReturnResult ::= SEQUENCE { + invokeID InvokeIdType, + result SEQUENCE { + operationCode OPERATION, + parameter ANY DEFINED BY operationCode + } OPTIONAL + } + +-- ANY is filled by the single ASN.1 data type following the keyword RESULT in the type definition +-- of a particular operation. + +ReturnError ::= SEQUENCE { + invokeID InvokeIdType, + errorCode ERROR, + parameter ANY DEFINED BY errorCode OPTIONAL } + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER in the type definition +-- of a particular error. + + + +-- Recommendation Q.773 (06/97) 3 + +Reject ::= SEQUENCE { + invokeID CHOICE { + derivable InvokeIdType, + not-derivable NULL }, + problem CHOICE { + generalProblem [0] IMPLICIT GeneralProblem, + invokeProblem [1] IMPLICIT InvokeProblem, + returnResultProblem [2] IMPLICIT ReturnResultProblem, + returnErrorProblem [3] IMPLICIT ReturnErrorProblem + } + } + +InvokeIdType ::= INTEGER ( -128..127) + +-- OPERATIONS +-- Operations are specified with the OPERATION MACRO. +-- When an operation is specified, the valid parameter set, results, and errors for that operation are indicated. +-- Default values and optional parameters are permitted. + +-- FAKE OPERATION +OPERATION ::= INTEGER ( 0..65535 ) +ERROR ::= INTEGER ( 0..65535 ) + +--OPERATION MACRO ::= +--BEGIN +-- TYPE NOTATION ::= Parameter Result Errors LinkedOperations +-- VALUE NOTATION ::= value (VALUE CHOICE { localValue INTEGER, globalValue OBJECT IDENTIFIER } ) +-- Parameter ::= ArgKeyword NamedType | empty ArgKeyword ::= "ARGUMENT" | "PARAMETER" +-- Result ::= "RESULT" ResultType | empty +-- Errors ::= "ERRORS" "{"ErrorNames"}" | empty +-- LinkedOperations ::= "LINKED" "{"LinkedOperationNames"}" | empty +-- ResultType ::= NamedType | empty +-- ErrorNames ::= ErrorList | empty +-- ErrorList ::= Error | ErrorList "," Error +-- Error ::= value (ERROR) +-- +-- shall reference an error value +-- +-- | type +-- shall reference an error type +-- +-- if no error value is specified +-- LinkedOperationNames ::= OperationList | empty +-- OperationList ::= Operation | OperationList "," Operation +-- Operation ::= value (OPERATION) +-- shall reference an operation value +-- | type +-- shall reference an operation type if +-- +-- no operation value is specified +-- NamedType ::= identifier type | type +--END + +-- ERRORS +-- Errors are specified with the ERROR MACRO. +-- When an error is specified, the valid parameters for that error are indicated. +-- Default values and optional parameters are permitted. + +--ERROR MACRO ::= +--BEGIN +-- TYPE NOTATION ::= Parameter +-- VALUE NOTATION ::= value (VALUE CHOICE { localValue INTEGER, globalValue OBJECT IDENTIFIER } ) +-- Parameter ::= "PARAMETER" NamedType | empty +-- NamedType ::= identifier type | type +--END + +-- PROBLEMS + +GeneralProblem ::= INTEGER { unrecognizedComponent (0), + mistypedComponent (1), + badlyStructuredComponent (2) } +InvokeProblem ::= INTEGER { duplicateInvokeID (0), + unrecognizedOperation (1), + mistypedParameter (2), + resourceLimitation (3), + initiatingRelease (4), + unrecognizedLinkedID (5), + linkedResponseUnexpected (6), + unexpectedLinkedOperation (7) } +ReturnResultProblem ::= INTEGER { unrecognizedInvokeID (0), + returnResultUnexpected (1), + mistypedParameter (2) } +ReturnErrorProblem ::= INTEGER { unrecognizedInvokeID (0), + returnErrorUnexpected (1), + unrecognizedError (2), + unexpectedError (3), + mistypedParameter (4) } + +END -- TCAPMessages -- cgit v1.2.3