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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
-- **************************************************************
--
-- Information Element Definitions
--
-- **************************************************************
Param -- { object identifier to be allocated }--
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
-- A
Criticality ::= ENUMERATED { reject, ignore, notify }
Presence ::= ENUMERATED { optional, conditional, mandatory }
ProtocolExtensionID ::= INTEGER (0..65535)
RANAP-PROTOCOL-EXTENSION ::= CLASS {
&id ProtocolExtensionID UNIQUE,
&criticality Criticality,
&Extension,
&presence Presence
}
WITH SYNTAX {
ID &id
CRITICALITY &criticality
EXTENSION &Extension
PRESENCE &presence
}
ProtocolExtensionContainer {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::=
SEQUENCE (SIZE (1..10)) OF
ProtocolExtensionField {{ExtensionSetParam}}
ProtocolExtensionField {RANAP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
id RANAP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}),
criticality RANAP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}),
extensionValue RANAP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id})
}
AllocationOrRetentionPriority ::= SEQUENCE {
priorityLevel BOOLEAN,
iE-Extensions ProtocolExtensionContainer { {AllocationOrRetentionPriority-ExtIEs} } OPTIONAL,
...
}
AllocationOrRetentionPriority-ExtIEs RANAP-PROTOCOL-EXTENSION ::= {
...
}
obj1 RANAP-PROTOCOL-EXTENSION ::= {
ID id-one
CRITICALITY ignore
EXTENSION INTEGER
PRESENCE optional
}
obj2 RANAP-PROTOCOL-EXTENSION ::= {
ID id-two
CRITICALITY ignore
EXTENSION BOOLEAN
PRESENCE optional
}
id-one INTEGER ::= 1
id-two INTEGER ::= 2
-- The following code for test of OTP-4242, ValueFromObject
-- Similar use as in the Camel spec
CONFIG-DATA ::= CLASS {
&minLevel INTEGER,
&maxLevel INTEGER
}
WITH SYNTAX {
MINLEVEL &minLevel
MAXLEVEL &maxLevel
}
config-data CONFIG-DATA ::= {MINLEVEL 1 MAXLEVEL 3}
OS1 ::= OCTET STRING (SIZE (config-data.&minLevel .. config-data.&maxLevel))
POS2 {CONFIG-DATA:obj} ::= OCTET STRING (SIZE(obj.&minLevel .. obj.&maxLevel))
OS2 ::= POS2 {config-data}
--
-- Test a CLASS without the user-friendly syntax.
--
CL ::= CLASS {
&code INTEGER UNIQUE,
&Data
}
P{T} ::= CHOICE { a INTEGER, b T }
o1 CL ::= {
&code 42,
&Data P{BOOLEAN}
}
SetCL CL ::= { o1 }
Scl ::= SEQUENCE {
code CL.&code ({SetCL}),
data CL.&Data ({SetCL}{@code})
}
END
|