summaryrefslogtreecommitdiffstats
path: root/TCAP/asn_src/ITU/TC.asn
blob: cfacf5448ecc633ac361f00f17cd3dcf05a307a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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 OPTIONAL
}

ReturnResult ::= SEQUENCE {
	invokeId InvokeId,
	result SEQUENCE {
		opcode Code,
		result Param OPTIONAL
	} 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