-- This is a manually-crafted simplified TCAP ASN.1 syntax, created -- for the signerl project by Harald Welte -- -- The "problem" with the real TCAP spec is its use of templates, -- which is nice if you want to create a fully integrated TCAP + MAP -- decoder, but in this case we simply want to parse all the common -- parts and ignore the application-specific parameters/rsults of the -- respective operation. TC DEFINITIONS IMPLICIT TAGS ::= BEGIN Components ::= [APPLICATION 12] SEQUENCE SIZE (1..MAX) OF Component Component ::= CHOICE { invoke [1] Invoke, returnResult [2] ReturnResult, returnError [3] ReturnError, reject [4] Reject, returnResultNotLast [7] ReturnResult } Invoke ::= SEQUENCE { invokeId InvokeId, linkedId CHOICE { present [0] IMPLICIT present < InvokeId, absent [1] IMPLICIT NULL } OPTIONAL, opcode Code, argument Param } ReturnResult ::= SEQUENCE { invokeId InvokeId, result SEQUENCE { opcode Code, result Param OPTIONAL } } ReturnError ::= SEQUENCE { invokeId InvokeId, errcode Code, parameter Param OPTIONAL } Reject ::= SEQUENCE { invokeId InvokeId, problem CHOICE { general [0] GeneralProblem, invoke [1] InvokeProblem, returnResult [2] ReturnResultProblem, returnError [3] ReturnErrorProblem } } GeneralProblem ::= INTEGER { unrecognizedPDU(0), mistypedPDU(1), badlyStructuredPDU(2)} InvokeProblem ::= INTEGER { duplicateInvocation(0), unrecognizedOperation(1), mistypedArgument(2), resourceLimitation(3), releaseInProgress(4), unrecognizedLinkedId(5), linkedResponseUnexpected(6), unexpectedLinkedOperation(7)} ReturnResultProblem ::= INTEGER { unrecognizedInvocation(0), resultResponseUnexpected(1), mistypedResult(2) } ReturnErrorProblem ::= INTEGER { unrecognizedInvocation(0), errorResponseUnexpected(1), unrecognizedError(2), unexpectedError(3), mistypedParameter(4)} RejectProblem ::= INTEGER { general-unrecognizedPDU(0), general-mistypedPDU(1), general-badlyStructuredPDU(2), invoke-duplicateInvocation(10), invoke-unrecognizedOperation(11), invoke-mistypedArgument(12), invoke-resourceLimitation(13), invoke-releaseInProgress(14), invoke-unrecognizedLinkedId(15), invoke-linkedResponseUnexpected(16), invoke-unexpectedLinkedOperation(17), returnResult-unrecognizedInvocation(20), returnResult-resultResponseUnexpected(21), returnResult-mistypedResult(22), returnError-unrecognizedInvocation(30), returnError-errorResponseUnexpected(31), returnError-unrecognizedError(32), returnError-unexpectedError(33), returnError-mistypedParameter(34)} InvokeId ::= CHOICE {present INTEGER, absent NULL } Code ::= CHOICE {local INTEGER, global OBJECT IDENTIFIER } Param ::= ANY END