|
|
1.1 root 1: -- ros.py - ROS definitions
2: -- lifted directly from ISO9072-2
3:
4: -- $Header: /f/osi/rosap/RCS/ros.py,v 7.0 89/11/23 22:21:24 mrose Rel $
5: --
6: -- Based on an TCP-based implementation by George Michaelson of University
7: -- College London.
8: --
9: --
10: -- $Log: ros.py,v $
11: -- Revision 7.0 89/11/23 22:21:24 mrose
12: -- Release 6.0
13: --
14:
15: --
16: -- NOTICE
17: --
18: -- Acquisition, use, and distribution of this module and related
19: -- materials are subject to the restrictions of a license agreement.
20: -- Consult the Preface in the User's Manual for the full terms of
21: -- this agreement.
22: --
23: --
24:
25:
26: --* Remote-Operations-APDUs *-- ROS
27: --* { joint-iso-ccitt remote-operations(4) apdus(1) } *--
28: DEFINITIONS ::=
29:
30: %{
31: #ifndef lint
32: static char *rcsid = "$Header: /f/osi/rosap/RCS/ros.py,v 7.0 89/11/23 22:21:24 mrose Rel $";
33: #endif
34:
35: #include <stdio.h>
36: #include "ropkt.h"
37:
38:
39: int rosap_operation;
40: int rosap_error;
41: int rosap_type;
42: int rosap_id;
43: int rosap_null;
44: int rosap_linked;
45: int rosap_lnull;
46: PE rosap_data;
47: int rosap_reason;
48:
49: /* */
50: %}
51:
52: BEGIN
53:
54: -- EXPORTS
55: -- rOSE, InvokeIDType;
56:
57: -- IMPORTS
58: -- OPERATION, ERROR
59: -- FROM Remote-Operation-Notation
60: -- { joint-ccitt-iso remote-operations(4) notation(0) }
61: -- APPLICATION-SERVICE-ELEMENT
62: -- FROM RemoteOperations-Notation-extension
63: -- { joint-ccitt-iso remote-operations(4) notation-extension(2) };
64:
65: -- rOSE APPLICATION-SERVICE-ELEMENT ::=
66: -- { joint-iso-ccitt remote-opreations(4) aseID(3) }
67:
68: Operation ::=
69: INTEGER
70: %{ rosap_operation = $$; %}
71:
72: Error ::=
73: INTEGER
74: %{ rosap_error = $$; %}
75:
76:
77: -- APDUs
78: -- Types and values of operations and errors are defined in an ROSE-user
79: -- protocol specification using the RO-notation. Operation values are either
80: -- of object identifier type or integer type. If integer types are used they
81: -- shall be distinct within an abstract syntax. Error values are either of
82: -- object identifier type or integer type. If integer types are used they
83: -- shall be distinct within an abstract syntax. There is no object identifier
84: -- specified for the abstract syntax name for ROSE. However all ASN.1 data
85: -- types defnied in this module shall be included in the name abstract syntax
86: -- defined in the ROSE-user protocol specification.
87:
88: ROSEapdus ::=
89: CHOICE {
90: roiv-apdu[1] %{ rosap_type = APDU_INVOKE; %}
91: IMPLICIT ROIVapdu,
92:
93: rors-apdu[2] %{ rosap_type = APDU_RESULT; %}
94: IMPLICIT RORSapdu,
95:
96: roer-apdu[3] %{ rosap_type = APDU_ERROR; %}
97: IMPLICIT ROERapdu,
98:
99: rorj-apdu [4] %{ rosap_type = APDU_REJECT; %}
100: IMPLICIT RORJapdu
101: }
102:
103:
104: -- APDU types
105:
106: ROIVapdu ::=
107: SEQUENCE {
108: invokeID
109: InvokeIDType,
110:
111: linked-ID[0]
112: IMPLICIT --* InvokeIDType *-- INTEGER
113: %{ rosap_linked = $$; rosap_lnull = 0; %}
114: OPTIONAL,
115:
116: operation-value
117: Operation,
118:
119: argument
120: ANY DEFINED BY operation-value
121: %{ rosap_data = $$; %}
122: OPTIONAL
123: -- ANY is filled by the single ASN.1 data type following the
124: -- key word ARGUMENT in the type definition of a particular
125: -- operation.
126: }
127:
128: InvokeIDType ::=
129: INTEGER %{ rosap_id = $$; %}
130:
131: RORSapdu ::=
132: SEQUENCE {
133: invokeID
134: InvokeIDType,
135:
136: SEQUENCE {
137: operation-value
138: Operation,
139:
140: result
141: ANY DEFINED BY operation-value
142: %{ rosap_data = $$; %}
143: -- ANY is filled by the single ASN.1 data type following
144: -- the key word RESULT in the type definition of a
145: -- particular operation.
146: }
147: OPTIONAL
148: }
149:
150: ROERapdu ::=
151: SEQUENCE {
152: invokeID
153: InvokeIDType,
154:
155: error-value
156: Error,
157:
158: parameter
159: ANY DEFINED BY error-value
160: %{ rosap_data = $$; %}
161: -- ANY is filled by the single ASN.1 data type following
162: -- the key word PARAMETER in the type definition of a
163: -- particular error.
164: OPTIONAL
165: }
166:
167: RORJapdu ::=
168: SEQUENCE {
169: invokeID
170: CHOICE {
171: InvokeIDType,
172:
173: NULL
174: %{ rosap_null = 1; %}
175: },
176:
177: problem
178: CHOICE {
179: [0]
180: IMPLICIT GeneralProblem,
181:
182: [1]
183: IMPLICIT InvokeProblem,
184:
185: [2]
186: IMPLICIT ReturnResultProblem,
187:
188: [3]
189: IMPLICIT ReturnErrorProblem
190: }
191: }
192:
193: GeneralProblem ::=
194: INTEGER { -- ROSE-provider detected
195: unrecognizedAPDU(0) %{ rosap_reason = ROS_GP_UNRECOG; %},
196: mistypedAPDU(1) %{ rosap_reason = ROS_GP_MISTYPED; %},
197: badlyStructuredAPDU(2) %{ rosap_reason = ROS_GP_STRUCT; %}
198: }
199:
200:
201: InvokeProblem ::=
202: INTEGER { -- ROSE-user detected
203: duplicateInvocation(0) %{ rosap_reason = ROS_IP_DUP; %},
204: unrecognizedOperation(1) %{ rosap_reason = ROS_IP_UNRECOG; %},
205: mistypedArgument(2) %{ rosap_reason = ROS_IP_MISTYPED; %},
206: resourceLimitation(3) %{ rosap_reason = ROS_IP_LIMIT; %},
207: initiatorReleasing(4) %{ rosap_reason = ROS_IP_RELEASE; %},
208: unrecognizedLinkedID(5) %{ rosap_reason = ROS_IP_UNLINKED; %},
209: linkedResponseUnexpected(6) %{ rosap_reason = ROS_IP_LINKED; %},
210: unexpectedChildOperation(7) %{ rosap_reason = ROS_IP_CHILD; %}
211: }
212:
213: ReturnResultProblem ::=
214: INTEGER { -- ROSE-user detected
215: unrecognizedInvocation(0) %{ rosap_reason = ROS_RRP_UNRECOG; %},
216: resultResponseUnexpected(1) %{ rosap_reason = ROS_RRP_UNEXP; %},
217: mistypedresult(2) %{ rosap_reason = ROS_RRP_MISTYPED; %}
218: }
219:
220: ReturnErrorProblem ::=
221: INTEGER { -- ROSE-user detected
222: unrecognizedInvocation(0) %{ rosap_reason = ROS_REP_UNRECOG; %},
223: errorResponseUnexpected(1) %{ rosap_reason = ROS_REP_UNEXP; %},
224: unrecognizedError(2) %{ rosap_reason = ROS_REP_RECERR; %},
225: unexpectedError(3) %{ rosap_reason = ROS_REP_UNEXPERR; %},
226: mistypedParameter(4) %{ rosap_reason = ROS_REP_MISTYPED; %}
227: }
228:
229:
230: -- Note that although ISO 9072-2 uses different names for types, the syntax
231: -- and semantics are nearly identical to the specifications in ECMA TR/31
232: -- and CCITT recommendation X.410 which are used here
233:
234: -- OPDU
235:
236: OPDU ::=
237: CHOICE {
238: [1] %{ rosap_type = APDU_INVOKE; %}
239: Invoke,
240:
241: [2] %{ rosap_type = APDU_RESULT; %}
242: ReturnResult,
243:
244: [3] %{ rosap_type = APDU_ERROR; %}
245: ReturnError,
246:
247: [4] %{ rosap_type = APDU_REJECT; %}
248: Reject
249: }
250:
251:
252: -- OPDU types
253:
254: Invoke ::=
255: SEQUENCE {
256: invokeID
257: INTEGER %{ rosap_id = $$; %},
258:
259: Operation,
260:
261: argument
262: ANY
263: %{ rosap_data = $$; %}
264: OPTIONAL
265: }
266:
267: ReturnResult ::=
268: SEQUENCE {
269: invokeID
270: InvokeIDType,
271:
272: result
273: ANY
274: %{ rosap_data = $$; %}
275: OPTIONAL
276: }
277:
278: ReturnError ::=
279: SEQUENCE {
280: invokeID
281: INTEGER
282: %{ rosap_id = $$; %},
283:
284: Error,
285:
286: parameter
287: ANY
288: %{ rosap_data = $$; %}
289: OPTIONAL
290: }
291:
292: Reject ::=
293: RORJapdu
294:
295: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.