Add separate TCAP decoder that is not linked to MAP

this way we can parse only the TCAP layer into dialogue portion
and component portion, but without actually parsing those.
This commit is contained in:
Harald Welte 2011-12-09 09:50:26 +01:00
parent d940afc0e8
commit 6cc415222f
3 changed files with 103 additions and 1 deletions

101
asn1/TC.asn Normal file
View File

@ -0,0 +1,101 @@
-- 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
}
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

1
asn1/tcap_asn.set.asn1 Normal file
View File

@ -0,0 +1 @@
TC.asn

View File

@ -1,7 +1,7 @@
{application, osmo_map,
[{description, "Osmocom SS7 MAP"},
{vsn, "1"},
{modules, [map, map_codec]},
{modules, [map, map_codec, tcap_asn]},
{registered, []},
{applications, []},
{env, [