|
|
1.1 root 1: -- nrs-dec.py - additional QUIPU NRS type definitions module
2:
3: --
4: -- NOTICE
5: --
6: -- Acquisition, use, and distribution of this module and related
7: -- materials are subject to the restrictions of a license agreement.
8: -- Consult the Preface in the User's Manual for the full terms of
9: -- this agreement.
10: --
11: --
12:
13:
14: QuipuNRS
15: {
16: ccitt
17: data(9)
18: pss(2342)
19: ucl(19200300)
20: quipu(99)
21: nRSDefinitions(2)
22: }
23:
24: DEFINITIONS ::=
25:
26: %{
27: #include <stdio.h>
28: #include "quipu/util.h"
29: #include "quipu/nrs_info.h"
30:
31: extern LLog * log_dsap;
32: #define decode_UNIV_NumericString parse_UNIV_NumericString
33: #define decode_UNIV_VisibleString parse_UNIV_VisibleString
34: #define decode_UNIV_OCTETSTRING parse_UNIV_OCTETSTRING
35: %}
36:
37: PREFIXES encode decode print
38:
39: BEGIN
40:
41: DECODER decode
42:
43: Context [[P int *]]
44: ::=
45: INTEGER
46: [[i (*parm)]]
47: {
48: context-unknown(-1),
49: x29(0),
50: ts29(1),
51: niftp(2),
52: mail-niftp(3),
53: not-used(4),
54: mail-telex(5),
55: jtmp(6),
56: jtmp-files(7),
57: jtmp-reg(8),
58: ybts-node(9),
59: ybts(10),
60: ftam(11),
61: jtm(12),
62: jtm-reg(13),
63: vt(14),
64: motis(15)
65: }
66:
67: Address-space-id [[P int *]]
68: ::=
69: INTEGER
70: [[i (*parm)]]
71: {
72: pss(0),
73: janet(1),
74: telex(2),
75: osi-cons(3)
76: }
77:
78: Route-cost [[P PE *]]
79: ::=
80: ANY
81: [[a (*parm)]]
82:
83: Addressing-info [[P struct addr_info **]]
84: %{
85: struct str_seq **ss;
86: %}
87: ::=
88: %{
89: if(((*parm) = (struct addr_info *) calloc(1, sizeof(struct addr_info))) == (struct addr_info *)NULL)
90: {
91: }
92: %}
93: CHOICE
94: {
95: dte-only
96: [0] NumericString [[s (*parm)->dte_number]]
97: %{
98: (*parm)->addr_info_type = ADDR_INFO_DTE_ONLY;
99: %} ,
100:
101: dte-appli-info
102: [1] SEQUENCE
103: %{
104: ss = &((*parm)->applic_info);
105: %}
106: {
107: dte-number
108: [0] NumericString [[s (*parm)->dte_number]] ,
109:
110: applic-info
111: [1] SEQUENCE OF
112: %{
113: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
114: {
115: }
116: %}
117: VisibleString [[s (*ss)->ss_str]]
118: %{
119: ss = &((*ss)->ss_next);
120: %}
121: %{
122: (*ss) = (struct str_seq *)NULL;
123: %}
124: }
125: %{
126: (*parm)->addr_info_type = ADDR_INFO_DTE_APPLIC_INFO;
127: %} ,
128:
129: dte-cudf
130: [2] SEQUENCE
131: {
132: dte-number
133: [0] NumericString [[s (*parm)->dte_number]] ,
134:
135: cudf
136: [1] OCTET STRING [[s (*parm)->cudf]]
137: }
138: %{
139: (*parm)->addr_info_type = ADDR_INFO_DTE_CUDF;
140: %} ,
141:
142: dte-cudf-applic-info
143: [3] SEQUENCE
144: %{
145: ss = &((*parm)->applic_info);
146: %}
147: {
148: dte-number
149: [0] NumericString [[s (*parm)->dte_number]] ,
150:
151: cudf
152: [1] OCTET STRING [[s (*parm)->cudf]] ,
153:
154: applic-info
155: [2] SEQUENCE OF
156: %{
157: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
158: {
159: }
160: %}
161: VisibleString [[s (*ss)->ss_str]]
162: %{
163: ss = &((*ss)->ss_next);
164: %}
165: %{
166: (*ss) = (struct str_seq *)NULL;
167: %}
168: }
169: %{
170: (*parm)->addr_info_type = ADDR_INFO_DTE_CUDF_APPLIC_INFO;
171: %} ,
172:
173: dte-ybts
174: [4] SEQUENCE
175: {
176: dte-number
177: [0] NumericString [[s (*parm)->dte_number]] ,
178:
179: ybts-string
180: [1] VisibleString [[s (*parm)->ybts_string]]
181: }
182: %{
183: (*parm)->addr_info_type = ADDR_INFO_DTE_YBTS;
184: %} ,
185:
186: dte-ybts-applic-info[5]
187: SEQUENCE
188: %{
189: ss = &((*parm)->applic_info);
190: %}
191: {
192: dte-number
193: [0] NumericString [[s (*parm)->dte_number]] ,
194:
195: ybts-string
196: [1] VisibleString [[s (*parm)->ybts_string]] ,
197:
198: applic-info
199: [2] SEQUENCE OF
200: %{
201: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
202: {
203: }
204: %}
205: VisibleString [[s (*ss)->ss_str]]
206: %{
207: ss = &((*ss)->ss_next);
208: %}
209: %{
210: (*ss) = (struct str_seq *)NULL;
211: %}
212: }
213: %{
214: (*parm)->addr_info_type = ADDR_INFO_DTE_YBTS_APPLIC_INFO;
215: %} ,
216:
217: dte-ybts-appli-relays[6]
218: SEQUENCE
219: %{
220: ss = &((*parm)->applic_relay);
221: %}
222: {
223: dte-number
224: [0] NumericString [[s (*parm)->dte_number]] ,
225:
226: ybts-string
227: [1] VisibleString [[s (*parm)->ybts_string]] ,
228:
229: applic-relay
230: [2] SEQUENCE OF
231: %{
232: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
233: {
234: }
235: %}
236: VisibleString [[s (*ss)->ss_str]]
237: %{
238: ss = &((*ss)->ss_next);
239: %}
240: %{
241: (*ss) = (struct str_seq *)NULL;
242: %}
243: }
244: %{
245: (*parm)->addr_info_type = ADDR_INFO_DTE_YBTS_APPLIC_RELAY;
246: %} ,
247:
248: none-needed
249: [7] NULL
250: %{
251: (*parm)->addr_info_type = ADDR_INFO_NONE_NEEDED;
252: %} ,
253:
254: osi-addressing
255: [8] SEQUENCE
256: {
257: nsap
258: [0] NumericString [[s (*parm)->nsap]] ,
259:
260: tselector
261: [1] OCTET STRING [[s (*parm)->tselector]]
262: OPTIONAL ,
263:
264: sselector
265: [2] OCTET STRING [[s (*parm)->sselector]]
266: OPTIONAL ,
267:
268: pselector
269: [3] OCTET STRING [[s (*parm)->pselector]]
270: OPTIONAL ,
271:
272: place-holder
273: [4] ANY [[a (*parm)->place_holder]]
274: OPTIONAL ,
275:
276: application-title
277: [5] ANY [[a (*parm)->application_title]]
278: OPTIONAL ,
279:
280: per-application-context-info
281: [6] ANY [[a (*parm)->per_app_context_info]]
282: OPTIONAL
283: }
284: %{
285: (*parm)->addr_info_type = ADDR_INFO_OSI_ADDRESSING;
286: %} ,
287:
288: osi-nsap-only
289: [9] NumericString [[s (*parm)->nsap]]
290: %{
291: (*parm)->addr_info_type = ADDR_INFO_OSI_NSAP_ONLY;
292: %} ,
293:
294: osi-nsap-applic-info
295: [10] SEQUENCE
296: %{
297: ss = &((*parm)->applic_info);
298: %}
299: {
300: nsap
301: [0] NumericString [[s (*parm)->nsap]] ,
302:
303: applic-info
304: [1] SEQUENCE OF
305: %{
306: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
307: {
308: }
309: %}
310: VisibleString [[s (*ss)->ss_str]]
311: %{
312: ss = &((*ss)->ss_next);
313: %}
314: %{
315: (*ss) = (struct str_seq *)NULL;
316: %}
317: }
318: %{
319: (*parm)->addr_info_type = ADDR_INFO_OSI_NSAP_APPLIC_INFO;
320: %} ,
321:
322: osi-nsap-applic-relays
323: [11] SEQUENCE
324: %{
325: ss = &((*parm)->applic_relay);
326: %}
327: {
328: nsap
329: [0] NumericString [[s (*parm)->nsap]] ,
330:
331: applic-relay
332: [1] SEQUENCE OF
333: %{
334: if(((*ss) = (struct str_seq *) calloc(1, sizeof(struct str_seq))) == (struct str_seq *)NULL)
335: {
336: }
337: %}
338: VisibleString [[s (*ss)->ss_str]]
339: %{
340: ss = &((*ss)->ss_next);
341: %}
342: %{
343: (*ss) = (struct str_seq *)NULL;
344: %}
345: }
346: %{
347: (*parm)->addr_info_type = ADDR_INFO_OSI_NSAP_APPLIC_RELAY;
348: %} ,
349:
350: dte-ybts-osi-addressing
351: [12] SEQUENCE
352: {
353: dte-number
354: [0] NumericString [[s (*parm)->dte_number]] ,
355:
356: ybts-string
357: [1] VisibleString [[s (*parm)->ybts_string]] ,
358:
359: tselector
360: [2] OCTET STRING [[s (*parm)->tselector]]
361: OPTIONAL ,
362:
363: sselector
364: [3] OCTET STRING [[s (*parm)->sselector]]
365: OPTIONAL ,
366:
367: pselector
368: [4] OCTET STRING [[s (*parm)->pselector]]
369: OPTIONAL ,
370:
371: place-holder
372: [5] ANY [[a (*parm)->place_holder]]
373: OPTIONAL ,
374:
375: application-title
376: [6] ANY [[a (*parm)->application_title]]
377: OPTIONAL ,
378:
379: per-application-context-info
380: [7] ANY [[a (*parm)->per_app_context_info]]
381: OPTIONAL
382: }
383: %{
384: (*parm)->addr_info_type = ADDR_INFO_DTE_YBTS_OSI_ADDRESSING;
385: %}
386: }
387:
388: NRSInformation [[P struct nrs_info **]]
389: %{
390: struct nrs_routes **rt;
391: %}
392: ::=
393: %{
394: if(((*parm) = (struct nrs_info *) calloc(1, sizeof(struct nrs_info))) == (struct nrs_info *)NULL)
395: {
396: }
397: %}
398: SET
399: {
400: [0] Context [[p &((*parm)->context)]],
401: [1] Address-space-id [[p &((*parm)->addr_sp_id)]],
402: routes
403: %{
404: rt = &((*parm)->routes);
405: %}
406: [2] SEQUENCE OF
407: %{
408: if(((*rt) = (struct nrs_routes *) calloc(1, sizeof(struct nrs_routes))) == (struct nrs_routes *)NULL)
409: {
410: }
411: %}
412: SEQUENCE
413: {
414: Route-cost [[p &((*rt)->cost)]],
415: Addressing-info [[p &((*rt)->addr_info)]]
416: }
417: %{
418: rt = &((*rt)->next);
419: %}
420: %{
421: (*rt) = (struct nrs_routes *)NULL;
422: %}
423: }
424:
425: END
426:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.