forked from erlang/signerl
102 lines
2.7 KiB
Groff
102 lines
2.7 KiB
Groff
-- This is a manually-crafted simplified TCAP ASN.1 syntax, created
|
|
-- for the signerl project by Harald Welte <laforge@gnumonks.org>
|
|
--
|
|
-- 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 OPTIONAL
|
|
}
|
|
|
|
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
|