-- $Id$ DialoguePDUs { ccitt recommendation q 773 modules (2) dialoguePDUs(2) version1 (1) } DEFINITIONS ::= BEGIN EXPORTS dialogue-as-id, DialoguePDU; -- abstract syntax name for structured dialogue APDUs dialogue-as-id OBJECT IDENTIFIER ::= { ccitt recommendation q 773 as (1) dialogue-as (1) version1 (1) } DialoguePDU ::= CHOICE { dialogueRequest AARQ-apdu, dialogueResponse AARE-apdu, dialogueAbort ABRT-apdu } ExternalPDU ::= [UNIVERSAL 8] IMPLICIT SEQUENCE { oid OBJECT IDENTIFIER, dialog [0] IMPLICIT Dialog1 } UserInformation ::= [UNIVERSAL 8] IMPLICIT SEQUENCE { useroid UserInfoOID, externuserinfo [0] IMPLICIT ExternUserInfo } ExternUserInfo ::= OCTET STRING Dialog1 ::= OCTET STRING UserInfoOID ::= OBJECT IDENTIFIER Applicationcontext ::= OBJECT IDENTIFIER AARQ-apdu ::= [APPLICATION 0] IMPLICIT SEQUENCE { protocol-versionrq [0] IMPLICIT BIT STRING { version1 (0) } DEFAULT { version1 }, application-context-name [1] OBJECT IDENTIFIER, user-information [30] IMPLICIT SEQUENCE OF EXTERNAL OPTIONAL } AARE-apdu ::= [APPLICATION 1] IMPLICIT SEQUENCE { protocol-versionre [0] IMPLICIT BIT STRING { version1 (0) } DEFAULT { version1 }, application-context-name [1] OBJECT IDENTIFIER, result [2] Associate-result, result-source-diagnostic [3] Associate-source-diagnostic, user-information [30] IMPLICIT User-information OPTIONAL } -- RLRQ PDU is currently not used. -- It is included for completeness only. RLRQ-apdu ::= [APPLICATION 2] IMPLICIT SEQUENCE { reasonrq [0] IMPLICIT Release-request-reason OPTIONAL, user-information [30] IMPLICIT User-information OPTIONAL } -- RLRE PDU is currently not used. -- It is included for completeness only RLRE-apdu ::= [APPLICATION 3] IMPLICIT SEQUENCE { reasonre [0] IMPLICIT Release-response-reason OPTIONAL, user-information [30] IMPLICIT User-information OPTIONAL } ABRT-apdu ::= [APPLICATION 4] IMPLICIT SEQUENCE { abort-source [0] IMPLICIT ABRT-source, user-information [30] IMPLICIT User-information OPTIONAL } User-information ::= OCTET STRING ABRT-source ::= INTEGER { dialogue-service-user (0), dialogue-service-provider (1) } Associate-result ::= INTEGER { accepted (0), reject-permanent (1) } Associate-source-diagnostic ::= CHOICE { dialogue-service-user [1] INTEGER { null (0), no-reason-given (1), application-context-name-not-supported (2) }, dialogue-service-provider [2] INTEGER { null (0), no-reason-given (1), no-common-dialogue-portion (2) } } -- Release-request-reason is currently not used. -- It is included for completeness only. Release-request-reason ::= INTEGER { normal (0), urgent (1), user-defined (30) } -- Release-response-reason is currently not used. -- It is included for completeness only. Release-response-reason ::= INTEGER { normal (0), not-finished (1), user-defined (30) } END TCAPMessages {itu-t recommendation q 773 modules(2) messages(1) version3(3)} DEFINITIONS ::= BEGIN --EXPORTS OPERATION, ERROR, Component, InvokeId Type; -- Transaction Portion fields TCMessage ::= 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 , -- and we now get clever making this ansi and itu! ansiqueryWithPerm [ PRIVATE 2 ] IMPLICIT TransactionPDU , ansiqueryWithoutPerm [ PRIVATE 3 ] IMPLICIT TransactionPDU , ansiresponse [ PRIVATE 4 ] IMPLICIT TransactionPDU , ansiconversationWithPerm [ PRIVATE 5 ] IMPLICIT TransactionPDU , ansiconversationWithoutPerm [ PRIVATE 6 ] IMPLICIT TransactionPDU } 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 Reason OPTIONAL } Reason ::= CHOICE{ p-abortCause P-AbortCause, u-abortCause DialoguePortion } -- NOTE - When the Abort Message is generated by the Transaction sublayer, a p-Abort Cause may 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] EXPLICIT EXTERNAL -- WS adaptation DialoguePortion ::= [APPLICATION 11] IMPLICIT DialogueOC DialogueOC ::= OCTET STRING -- 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)}(0..127) -- 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 -- Recommendation X.880 defines four Application Protocol Data Units (APDUs) for invoking -- operations, returning results or error, and for the rejection of invalid PDUs. -- 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, opCode OPERATION, parameter Parameter OPTIONAL } Parameter ::= ANY -- 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, resultretres SEQUENCE { opCode OPERATION, parameter Parameter OPTIONAL } 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 ErrorCode, parameter Parameter OPTIONAL } -- ANY is filled by the single ASN.1 data type following the keyword PARAMETER in the type definition -- of a particular error. Reject ::= SEQUENCE { invokeIDRej 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) OPERATION ::= CHOICE { localValue INTEGER, globalValue OBJECT IDENTIFIER } ERROR ::= CHOICE { localValue INTEGER, globalValue OBJECT IDENTIFIER } -- 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. --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) } TransactionPDU ::= SEQUENCE { identifier TransactionID , dialoguePortionansi DialoguePortionANSI OPTIONAL } --TransactionPDU should include either a Dialogue Portion , a Component Sequence or both TransactionID ::= [PRIVATE 7 ] IMPLICIT OCTET STRING -- 0 (zero) Octet for Unidirectional,4 Octet for Query , Response And Abort -- 8 Octet for Conversation in the order Originating then Responding TID DialoguePortionANSI ::= [ PRIVATE 25 ] IMPLICIT SEQUENCE { version ProtocolVersion OPTIONAL , applicationContext [0] CHOICE { integerApplicationId IntegerApplicationContext , objectApplicationId ObjectIDApplicationContext } OPTIONAL , userInformation UserInformation OPTIONAL , securityContext CHOICE { integerSecurityId [ 0 ] IMPLICIT INTEGER , objectSecurityId [ 1 ] IMPLICIT OBJECT IDENTIFIER } OPTIONAL , confidentiality [ 2 ] IMPLICIT Confidentiality OPTIONAL , ... } ProtocolVersion ::= [ PRIVATE 26 ] IMPLICIT OCTET STRING ( SIZE(1) ) IntegerApplicationContext ::= [ PRIVATE 27 ] IMPLICIT INTEGER ObjectIDApplicationContext ::= [ PRIVATE 28 ] IMPLICIT OBJECT IDENTIFIER --UserInformation ::= [ PRIVATE 29 ] IMPLICIT SEQUENCE OF EXTERNAL Confidentiality ::= SEQUENCE { confidentialityId CHOICE { integerConfidentialityId [ 0 ] IMPLICIT INTEGER , objectConfidentialityId [ 1 ] IMPLICIT OBJECT IDENTIFIER } OPTIONAL , ... } --UserAbortInformation ::= [ PRIVATE 24 ] EXTERNAL ErrorCode ::= CHOICE { nationaler [PRIVATE 19] IMPLICIT INTEGER (-32768..32767), privateer [PRIVATE 20] IMPLICIT INTEGER } END -- end of the TCAP Package Module