blob: e94558e3a372f07a22285099bedfe0668aa28919 [file] [log] [blame]
vlmb0267572006-10-09 12:52:15 +00001
2/*** <<< INCLUDES [PDU] >>> ***/
3
4#include <IA5String.h>
5#include <VisibleString.h>
6#include <PrintableString.h>
7#include <NumericString.h>
8#include <UTF8String.h>
9#include <REAL.h>
10#include <OBJECT_IDENTIFIER.h>
11#include <asn_SEQUENCE_OF.h>
12#include <constr_SEQUENCE_OF.h>
13#include <constr_SEQUENCE.h>
14
15/*** <<< FWD-DECLS [PDU] >>> ***/
16
17struct PDU;
18
19/*** <<< TYPE-DECLS [PDU] >>> ***/
20
21typedef struct PDU {
22 struct many {
23 A_SEQUENCE_OF(struct PDU) list;
24
25 /* Context for parsing across buffer boundaries */
26 asn_struct_ctx_t _asn_ctx;
27 } *many;
28 IA5String_t *ia5 /* OPTIONAL */;
29 IA5String_t *ia5_c /* OPTIONAL */;
30 IA5String_t *ia5_ce /* OPTIONAL */;
31 IA5String_t *ia5_ir /* OPTIONAL */;
32 VisibleString_t *vs /* OPTIONAL */;
33 VisibleString_t *vs_c /* OPTIONAL */;
34 VisibleString_t *vs_ce /* OPTIONAL */;
35 VisibleString_t *vs_ir /* OPTIONAL */;
36 PrintableString_t *pr /* OPTIONAL */;
37 PrintableString_t *pr_c /* OPTIONAL */;
38 PrintableString_t *pr_ir /* OPTIONAL */;
39 NumericString_t *ns /* OPTIONAL */;
40 NumericString_t *ns_c /* OPTIONAL */;
41 NumericString_t *ns_ce /* OPTIONAL */;
42 NumericString_t *ns_ir /* OPTIONAL */;
43 UTF8String_t *ut_c /* OPTIONAL */;
44 UTF8String_t *ut_ce /* OPTIONAL */;
45 UTF8String_t *ut_ir /* OPTIONAL */;
46 REAL_t *real /* OPTIONAL */;
47 OBJECT_IDENTIFIER_t *oid /* OPTIONAL */;
48
49 /* Context for parsing across buffer boundaries */
50 asn_struct_ctx_t _asn_ctx;
51} PDU_t;
52
53/*** <<< FUNC-DECLS [PDU] >>> ***/
54
55extern asn_TYPE_descriptor_t asn_DEF_PDU;
56
57/*** <<< POST-INCLUDE [PDU] >>> ***/
58
59#include "PDU.h"
60
61/*** <<< CTABLES [PDU] >>> ***/
62
63static int check_permitted_alphabet_5(const void *sptr) {
64 /* The underlying type is IA5String */
65 const IA5String_t *st = (const IA5String_t *)sptr;
66 const uint8_t *ch = st->buf;
67 const uint8_t *end = ch + st->size;
68
69 for(; ch < end; ch++) {
70 uint8_t cv = *ch;
71 if(!(cv >= 65 && cv <= 90)) return -1;
72 }
73 return 0;
74}
75
76static int check_permitted_alphabet_6(const void *sptr) {
77 /* The underlying type is IA5String */
78 const IA5String_t *st = (const IA5String_t *)sptr;
79 const uint8_t *ch = st->buf;
80 const uint8_t *end = ch + st->size;
81
82 for(; ch < end; ch++) {
83 uint8_t cv = *ch;
84 if(!(cv >= 65 && cv <= 90)) return -1;
85 }
86 return 0;
87}
88
89static int permitted_alphabet_table_7[256] = {
90 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
94 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* AB */
95 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, /* XYZ */
96};
97static int permitted_alphabet_code2value_7[5] = {
9865,66,88,89,90,};
99
100
101static int check_permitted_alphabet_7(const void *sptr) {
102 int *table = permitted_alphabet_table_7;
103 /* The underlying type is IA5String */
104 const IA5String_t *st = (const IA5String_t *)sptr;
105 const uint8_t *ch = st->buf;
106 const uint8_t *end = ch + st->size;
107
108 for(; ch < end; ch++) {
109 uint8_t cv = *ch;
110 if(!table[cv]) return -1;
111 }
112 return 0;
113}
114
115static int check_permitted_alphabet_9(const void *sptr) {
116 /* The underlying type is VisibleString */
117 const VisibleString_t *st = (const VisibleString_t *)sptr;
118 const uint8_t *ch = st->buf;
119 const uint8_t *end = ch + st->size;
120
121 for(; ch < end; ch++) {
122 uint8_t cv = *ch;
123 if(!(cv >= 65 && cv <= 90)) return -1;
124 }
125 return 0;
126}
127
128static int check_permitted_alphabet_10(const void *sptr) {
129 /* The underlying type is VisibleString */
130 const VisibleString_t *st = (const VisibleString_t *)sptr;
131 const uint8_t *ch = st->buf;
132 const uint8_t *end = ch + st->size;
133
134 for(; ch < end; ch++) {
135 uint8_t cv = *ch;
136 if(!(cv >= 65 && cv <= 90)) return -1;
137 }
138 return 0;
139}
140
141static int permitted_alphabet_table_11[256] = {
142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
145 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
146 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* AB */
147 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, /* XYZ */
148};
149static int permitted_alphabet_code2value_11[5] = {
15065,66,88,89,90,};
151
152
153static int check_permitted_alphabet_11(const void *sptr) {
154 int *table = permitted_alphabet_table_11;
155 /* The underlying type is VisibleString */
156 const VisibleString_t *st = (const VisibleString_t *)sptr;
157 const uint8_t *ch = st->buf;
158 const uint8_t *end = ch + st->size;
159
160 for(; ch < end; ch++) {
161 uint8_t cv = *ch;
162 if(!table[cv]) return -1;
163 }
164 return 0;
165}
166
167static int check_permitted_alphabet_13(const void *sptr) {
168 /* The underlying type is PrintableString */
169 const PrintableString_t *st = (const PrintableString_t *)sptr;
170 const uint8_t *ch = st->buf;
171 const uint8_t *end = ch + st->size;
172
173 for(; ch < end; ch++) {
174 uint8_t cv = *ch;
175 if(!(cv >= 65 && cv <= 90)) return -1;
176 }
177 return 0;
178}
179
180static int permitted_alphabet_table_14[256] = {
181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
185 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* AB */
186 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 0, 0, 0, 0, /* XYZ */
187};
188static int permitted_alphabet_code2value_14[5] = {
18965,66,88,89,90,};
190
191
192static int check_permitted_alphabet_14(const void *sptr) {
193 int *table = permitted_alphabet_table_14;
194 /* The underlying type is PrintableString */
195 const PrintableString_t *st = (const PrintableString_t *)sptr;
196 const uint8_t *ch = st->buf;
197 const uint8_t *end = ch + st->size;
198
199 for(; ch < end; ch++) {
200 uint8_t cv = *ch;
201 if(!table[cv]) return -1;
202 }
203 return 0;
204}
205
206static int check_permitted_alphabet_16(const void *sptr) {
207 /* The underlying type is NumericString */
208 const NumericString_t *st = (const NumericString_t *)sptr;
209 const uint8_t *ch = st->buf;
210 const uint8_t *end = ch + st->size;
211
212 for(; ch < end; ch++) {
213 uint8_t cv = *ch;
214 if(!(cv >= 53 && cv <= 57)) return -1;
215 }
216 return 0;
217}
218
219static int check_permitted_alphabet_17(const void *sptr) {
220 /* The underlying type is NumericString */
221 const NumericString_t *st = (const NumericString_t *)sptr;
222 const uint8_t *ch = st->buf;
223 const uint8_t *end = ch + st->size;
224
225 for(; ch < end; ch++) {
226 uint8_t cv = *ch;
227 if(!(cv >= 53 && cv <= 57)) return -1;
228 }
229 return 0;
230}
231
232static int permitted_alphabet_table_18[256] = {
233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
236 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, /* 1 9 */
237};
238static int permitted_alphabet_code2value_18[2] = {
23949,57,};
240
241
242static int check_permitted_alphabet_18(const void *sptr) {
243 int *table = permitted_alphabet_table_18;
244 /* The underlying type is NumericString */
245 const NumericString_t *st = (const NumericString_t *)sptr;
246 const uint8_t *ch = st->buf;
247 const uint8_t *end = ch + st->size;
248
249 for(; ch < end; ch++) {
250 uint8_t cv = *ch;
251 if(!table[cv]) return -1;
252 }
253 return 0;
254}
255
256static int permitted_alphabet_table_21[128] = {
257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
261 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* A */
262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, /* Z */
263};
264
265static int check_permitted_alphabet_21(const void *sptr) {
266 int *table = permitted_alphabet_table_21;
267 /* The underlying type is UTF8String */
268 const UTF8String_t *st = (const UTF8String_t *)sptr;
269 const uint8_t *ch = st->buf;
270 const uint8_t *end = ch + st->size;
271
272 for(; ch < end; ch++) {
273 uint8_t cv = *ch;
274 if(cv >= 0x80) return -1;
275 if(!table[cv]) return -1;
276 }
277 return 0;
278}
279
280
281/*** <<< CODE [PDU] >>> ***/
282
283static int
284memb_ia5_c_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
285 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
286 const IA5String_t *st = (const IA5String_t *)sptr;
287
288 if(!sptr) {
289 _ASN_CTFAIL(app_key, td, sptr,
290 "%s: value not given (%s:%d)",
291 td->name, __FILE__, __LINE__);
292 return -1;
293 }
294
295
296 if(!check_permitted_alphabet_5(st)) {
297 /* Constraint check succeeded */
298 return 0;
299 } else {
300 _ASN_CTFAIL(app_key, td, sptr,
301 "%s: constraint failed (%s:%d)",
302 td->name, __FILE__, __LINE__);
303 return -1;
304 }
305}
306
307static int
308memb_ia5_ce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
309 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
310 const IA5String_t *st = (const IA5String_t *)sptr;
311
312 if(!sptr) {
313 _ASN_CTFAIL(app_key, td, sptr,
314 "%s: value not given (%s:%d)",
315 td->name, __FILE__, __LINE__);
316 return -1;
317 }
318
319
320 if(!check_permitted_alphabet_6(st)) {
321 /* Constraint check succeeded */
322 return 0;
323 } else {
324 _ASN_CTFAIL(app_key, td, sptr,
325 "%s: constraint failed (%s:%d)",
326 td->name, __FILE__, __LINE__);
327 return -1;
328 }
329}
330
331static int
332memb_ia5_ir_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
333 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
334 const IA5String_t *st = (const IA5String_t *)sptr;
335
336 if(!sptr) {
337 _ASN_CTFAIL(app_key, td, sptr,
338 "%s: value not given (%s:%d)",
339 td->name, __FILE__, __LINE__);
340 return -1;
341 }
342
343
344 if(!check_permitted_alphabet_7(st)) {
345 /* Constraint check succeeded */
346 return 0;
347 } else {
348 _ASN_CTFAIL(app_key, td, sptr,
349 "%s: constraint failed (%s:%d)",
350 td->name, __FILE__, __LINE__);
351 return -1;
352 }
353}
354
355static int asn_PER_MAP_ia5_ir_7_v2c(unsigned int value) {
356 if(value >= sizeof(permitted_alphabet_table_7)/sizeof(permitted_alphabet_table_7[0]))
357 return -1;
358 return permitted_alphabet_table_7[value] - 1;
359}
360static int asn_PER_MAP_ia5_ir_7_c2v(unsigned int code) {
361 if(code >= sizeof(permitted_alphabet_code2value_7)/sizeof(permitted_alphabet_code2value_7[0]))
362 return -1;
363 return permitted_alphabet_code2value_7[code];
364}
365static int
366memb_vs_c_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
367 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
368 const VisibleString_t *st = (const VisibleString_t *)sptr;
369
370 if(!sptr) {
371 _ASN_CTFAIL(app_key, td, sptr,
372 "%s: value not given (%s:%d)",
373 td->name, __FILE__, __LINE__);
374 return -1;
375 }
376
377
378 if(!check_permitted_alphabet_9(st)) {
379 /* Constraint check succeeded */
380 return 0;
381 } else {
382 _ASN_CTFAIL(app_key, td, sptr,
383 "%s: constraint failed (%s:%d)",
384 td->name, __FILE__, __LINE__);
385 return -1;
386 }
387}
388
389static int
390memb_vs_ce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
391 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
392 const VisibleString_t *st = (const VisibleString_t *)sptr;
393
394 if(!sptr) {
395 _ASN_CTFAIL(app_key, td, sptr,
396 "%s: value not given (%s:%d)",
397 td->name, __FILE__, __LINE__);
398 return -1;
399 }
400
401
402 if(!check_permitted_alphabet_10(st)) {
403 /* Constraint check succeeded */
404 return 0;
405 } else {
406 _ASN_CTFAIL(app_key, td, sptr,
407 "%s: constraint failed (%s:%d)",
408 td->name, __FILE__, __LINE__);
409 return -1;
410 }
411}
412
413static int
414memb_vs_ir_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
415 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
416 const VisibleString_t *st = (const VisibleString_t *)sptr;
417
418 if(!sptr) {
419 _ASN_CTFAIL(app_key, td, sptr,
420 "%s: value not given (%s:%d)",
421 td->name, __FILE__, __LINE__);
422 return -1;
423 }
424
425
426 if(!check_permitted_alphabet_11(st)) {
427 /* Constraint check succeeded */
428 return 0;
429 } else {
430 _ASN_CTFAIL(app_key, td, sptr,
431 "%s: constraint failed (%s:%d)",
432 td->name, __FILE__, __LINE__);
433 return -1;
434 }
435}
436
437static int asn_PER_MAP_vs_ir_11_v2c(unsigned int value) {
438 if(value >= sizeof(permitted_alphabet_table_11)/sizeof(permitted_alphabet_table_11[0]))
439 return -1;
440 return permitted_alphabet_table_11[value] - 1;
441}
442static int asn_PER_MAP_vs_ir_11_c2v(unsigned int code) {
443 if(code >= sizeof(permitted_alphabet_code2value_11)/sizeof(permitted_alphabet_code2value_11[0]))
444 return -1;
445 return permitted_alphabet_code2value_11[code];
446}
447static int
448memb_pr_c_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
449 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
450 const PrintableString_t *st = (const PrintableString_t *)sptr;
451
452 if(!sptr) {
453 _ASN_CTFAIL(app_key, td, sptr,
454 "%s: value not given (%s:%d)",
455 td->name, __FILE__, __LINE__);
456 return -1;
457 }
458
459
460 if(!check_permitted_alphabet_13(st)) {
461 /* Constraint check succeeded */
462 return 0;
463 } else {
464 _ASN_CTFAIL(app_key, td, sptr,
465 "%s: constraint failed (%s:%d)",
466 td->name, __FILE__, __LINE__);
467 return -1;
468 }
469}
470
471static int
472memb_pr_ir_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
473 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
474 const PrintableString_t *st = (const PrintableString_t *)sptr;
475
476 if(!sptr) {
477 _ASN_CTFAIL(app_key, td, sptr,
478 "%s: value not given (%s:%d)",
479 td->name, __FILE__, __LINE__);
480 return -1;
481 }
482
483
484 if(!check_permitted_alphabet_14(st)) {
485 /* Constraint check succeeded */
486 return 0;
487 } else {
488 _ASN_CTFAIL(app_key, td, sptr,
489 "%s: constraint failed (%s:%d)",
490 td->name, __FILE__, __LINE__);
491 return -1;
492 }
493}
494
495static int asn_PER_MAP_pr_ir_14_v2c(unsigned int value) {
496 if(value >= sizeof(permitted_alphabet_table_14)/sizeof(permitted_alphabet_table_14[0]))
497 return -1;
498 return permitted_alphabet_table_14[value] - 1;
499}
500static int asn_PER_MAP_pr_ir_14_c2v(unsigned int code) {
501 if(code >= sizeof(permitted_alphabet_code2value_14)/sizeof(permitted_alphabet_code2value_14[0]))
502 return -1;
503 return permitted_alphabet_code2value_14[code];
504}
505static int
506memb_ns_c_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
507 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
508 const NumericString_t *st = (const NumericString_t *)sptr;
509
510 if(!sptr) {
511 _ASN_CTFAIL(app_key, td, sptr,
512 "%s: value not given (%s:%d)",
513 td->name, __FILE__, __LINE__);
514 return -1;
515 }
516
517
518 if(!check_permitted_alphabet_16(st)) {
519 /* Constraint check succeeded */
520 return 0;
521 } else {
522 _ASN_CTFAIL(app_key, td, sptr,
523 "%s: constraint failed (%s:%d)",
524 td->name, __FILE__, __LINE__);
525 return -1;
526 }
527}
528
529static int
530memb_ns_ce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
531 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
532 const NumericString_t *st = (const NumericString_t *)sptr;
533
534 if(!sptr) {
535 _ASN_CTFAIL(app_key, td, sptr,
536 "%s: value not given (%s:%d)",
537 td->name, __FILE__, __LINE__);
538 return -1;
539 }
540
541
542 if(!check_permitted_alphabet_17(st)) {
543 /* Constraint check succeeded */
544 return 0;
545 } else {
546 _ASN_CTFAIL(app_key, td, sptr,
547 "%s: constraint failed (%s:%d)",
548 td->name, __FILE__, __LINE__);
549 return -1;
550 }
551}
552
553static int
554memb_ns_ir_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
555 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
556 const NumericString_t *st = (const NumericString_t *)sptr;
557
558 if(!sptr) {
559 _ASN_CTFAIL(app_key, td, sptr,
560 "%s: value not given (%s:%d)",
561 td->name, __FILE__, __LINE__);
562 return -1;
563 }
564
565
566 if(!check_permitted_alphabet_18(st)) {
567 /* Constraint check succeeded */
568 return 0;
569 } else {
570 _ASN_CTFAIL(app_key, td, sptr,
571 "%s: constraint failed (%s:%d)",
572 td->name, __FILE__, __LINE__);
573 return -1;
574 }
575}
576
577static int asn_PER_MAP_ns_ir_18_v2c(unsigned int value) {
578 if(value >= sizeof(permitted_alphabet_table_18)/sizeof(permitted_alphabet_table_18[0]))
579 return -1;
580 return permitted_alphabet_table_18[value] - 1;
581}
582static int asn_PER_MAP_ns_ir_18_c2v(unsigned int code) {
583 if(code >= sizeof(permitted_alphabet_code2value_18)/sizeof(permitted_alphabet_code2value_18[0]))
584 return -1;
585 return permitted_alphabet_code2value_18[code];
586}
587static int
588memb_ut_c_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
589 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
590 const UTF8String_t *st = (const UTF8String_t *)sptr;
591 size_t size;
592
593 if(!sptr) {
594 _ASN_CTFAIL(app_key, td, sptr,
595 "%s: value not given (%s:%d)",
596 td->name, __FILE__, __LINE__);
597 return -1;
598 }
599
600 size = UTF8String_length(st);
601 if((ssize_t)size < 0) {
602 _ASN_CTFAIL(app_key, td, sptr,
603 "%s: UTF-8: broken encoding (%s:%d)",
604 td->name, __FILE__, __LINE__);
605 return -1;
606 }
607
608 if((size == 6)) {
609 /* Constraint check succeeded */
610 return 0;
611 } else {
612 _ASN_CTFAIL(app_key, td, sptr,
613 "%s: constraint failed (%s:%d)",
614 td->name, __FILE__, __LINE__);
615 return -1;
616 }
617}
618
619static int
620memb_ut_ce_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
621 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
622 const UTF8String_t *st = (const UTF8String_t *)sptr;
623 size_t size;
624
625 if(!sptr) {
626 _ASN_CTFAIL(app_key, td, sptr,
627 "%s: value not given (%s:%d)",
628 td->name, __FILE__, __LINE__);
629 return -1;
630 }
631
632 size = UTF8String_length(st);
633 if((ssize_t)size < 0) {
634 _ASN_CTFAIL(app_key, td, sptr,
635 "%s: UTF-8: broken encoding (%s:%d)",
636 td->name, __FILE__, __LINE__);
637 return -1;
638 }
639
640 if((size == 6)) {
641 /* Constraint check succeeded */
642 return 0;
643 } else {
644 _ASN_CTFAIL(app_key, td, sptr,
645 "%s: constraint failed (%s:%d)",
646 td->name, __FILE__, __LINE__);
647 return -1;
648 }
649}
650
651static int
652memb_ut_ir_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
653 asn_app_constraint_failed_f *ctfailcb, void *app_key) {
654 const UTF8String_t *st = (const UTF8String_t *)sptr;
655
656 if(!sptr) {
657 _ASN_CTFAIL(app_key, td, sptr,
658 "%s: value not given (%s:%d)",
659 td->name, __FILE__, __LINE__);
660 return -1;
661 }
662
663
664 if(!check_permitted_alphabet_21(st)) {
665 /* Constraint check succeeded */
666 return 0;
667 } else {
668 _ASN_CTFAIL(app_key, td, sptr,
669 "%s: constraint failed (%s:%d)",
670 td->name, __FILE__, __LINE__);
671 return -1;
672 }
673}
674
675
676/*** <<< CTDEFS [PDU] >>> ***/
677
678static asn_per_constraints_t asn_PER_memb_ia5_c_constr_5 = {
679 { APC_CONSTRAINED, 5, 5, 65, 90 } /* (65..90) */,
680 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
681 0, 0 /* No PER character map necessary */
682};
683static asn_per_constraints_t asn_PER_memb_ia5_ce_constr_6 = {
684 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
685 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
686 0, 0 /* No PER character map necessary */
687};
688static asn_per_constraints_t asn_PER_memb_ia5_ir_constr_7 = {
689 { APC_CONSTRAINED, 3, 3, 65, 90 } /* (65..90) */,
690 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
691 asn_PER_MAP_ia5_ir_7_v2c, /* Value to PER code map */
692 asn_PER_MAP_ia5_ir_7_c2v /* PER code to value map */
693};
694static asn_per_constraints_t asn_PER_memb_vs_c_constr_9 = {
695 { APC_CONSTRAINED, 5, 5, 65, 90 } /* (65..90) */,
696 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
697 0, 0 /* No PER character map necessary */
698};
699static asn_per_constraints_t asn_PER_memb_vs_ce_constr_10 = {
700 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
701 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
702 0, 0 /* No PER character map necessary */
703};
704static asn_per_constraints_t asn_PER_memb_vs_ir_constr_11 = {
705 { APC_CONSTRAINED, 3, 3, 65, 90 } /* (65..90) */,
706 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
707 asn_PER_MAP_vs_ir_11_v2c, /* Value to PER code map */
708 asn_PER_MAP_vs_ir_11_c2v /* PER code to value map */
709};
710static asn_per_constraints_t asn_PER_memb_pr_c_constr_13 = {
711 { APC_CONSTRAINED, 5, 5, 65, 90 } /* (65..90) */,
712 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
713 0, 0 /* No PER character map necessary */
714};
715static asn_per_constraints_t asn_PER_memb_pr_ir_constr_14 = {
716 { APC_CONSTRAINED, 3, 3, 65, 90 } /* (65..90) */,
717 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
718 asn_PER_MAP_pr_ir_14_v2c, /* Value to PER code map */
719 asn_PER_MAP_pr_ir_14_c2v /* PER code to value map */
720};
721static asn_per_constraints_t asn_PER_memb_ns_c_constr_16 = {
722 { APC_CONSTRAINED, 3, 3, 53, 57 } /* (53..57) */,
723 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
724 0, 0 /* No PER character map necessary */
725};
726static asn_per_constraints_t asn_PER_memb_ns_ce_constr_17 = {
727 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
728 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
729 0, 0 /* No PER character map necessary */
730};
731static asn_per_constraints_t asn_PER_memb_ns_ir_constr_18 = {
732 { APC_CONSTRAINED, 1, 1, 49, 57 } /* (49..57) */,
733 { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 } /* (SIZE(0..MAX)) */,
734 asn_PER_MAP_ns_ir_18_v2c, /* Value to PER code map */
735 asn_PER_MAP_ns_ir_18_c2v /* PER code to value map */
736};
737static asn_per_constraints_t asn_PER_memb_ut_c_constr_19 = {
738 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
739 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
740 0, 0 /* No PER value map */
741};
742static asn_per_constraints_t asn_PER_memb_ut_ce_constr_20 = {
743 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
744 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
745 0, 0 /* No PER value map */
746};
747static asn_per_constraints_t asn_PER_memb_ut_ir_constr_21 = {
748 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
749 { APC_UNCONSTRAINED, -1, -1, 0, 0 },
750 0, 0 /* No PER value map */
751};
752
753/*** <<< STAT-DEFS [PDU] >>> ***/
754
755static asn_TYPE_member_t asn_MBR_many_2[] = {
756 { ATF_POINTER, 0, 0,
757 .tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
758 .tag_mode = 0,
759 .type = &asn_DEF_PDU,
760 .memb_constraints = 0, /* Defer constraints checking to the member type */
761 .per_constraints = 0, /* No PER visible constraints */
762 .default_value = 0,
763 .name = ""
764 },
765};
766static ber_tlv_tag_t asn_DEF_many_tags_2[] = {
767 (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
768 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
769};
770static asn_SET_OF_specifics_t asn_SPC_many_specs_2 = {
771 sizeof(struct many),
772 offsetof(struct many, _asn_ctx),
773 0, /* XER encoding is XMLDelimitedItemList */
774};
775static /* Use -fall-defs-global to expose */
776asn_TYPE_descriptor_t asn_DEF_many_2 = {
777 "many",
778 "many",
779 SEQUENCE_OF_free,
780 SEQUENCE_OF_print,
781 SEQUENCE_OF_constraint,
782 SEQUENCE_OF_decode_ber,
783 SEQUENCE_OF_encode_der,
784 SEQUENCE_OF_decode_xer,
785 SEQUENCE_OF_encode_xer,
786 SEQUENCE_OF_decode_uper,
787 SEQUENCE_OF_encode_uper,
788 0, /* Use generic outmost tag fetcher */
789 asn_DEF_many_tags_2,
790 sizeof(asn_DEF_many_tags_2)
791 /sizeof(asn_DEF_many_tags_2[0]) - 1, /* 1 */
792 asn_DEF_many_tags_2, /* Same as above */
793 sizeof(asn_DEF_many_tags_2)
794 /sizeof(asn_DEF_many_tags_2[0]), /* 2 */
795 0, /* No PER visible constraints */
796 asn_MBR_many_2,
797 1, /* Single element */
798 &asn_SPC_many_specs_2 /* Additional specs */
799};
800
801static asn_TYPE_member_t asn_MBR_PDU_1[] = {
802 { ATF_POINTER, 21, offsetof(struct PDU, many),
803 .tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
vlmc154db62006-10-19 02:46:01 +0000804 .tag_mode = 0,
vlmb0267572006-10-09 12:52:15 +0000805 .type = &asn_DEF_many_2,
806 .memb_constraints = 0, /* Defer constraints checking to the member type */
807 .per_constraints = 0, /* No PER visible constraints */
808 .default_value = 0,
809 .name = "many"
810 },
811 { ATF_POINTER, 20, offsetof(struct PDU, ia5),
812 .tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
813 .tag_mode = -1, /* IMPLICIT tag at current level */
814 .type = &asn_DEF_IA5String,
815 .memb_constraints = 0, /* Defer constraints checking to the member type */
816 .per_constraints = 0, /* No PER visible constraints */
817 .default_value = 0,
818 .name = "ia5"
819 },
820 { ATF_POINTER, 19, offsetof(struct PDU, ia5_c),
821 .tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
822 .tag_mode = -1, /* IMPLICIT tag at current level */
823 .type = &asn_DEF_IA5String,
824 .memb_constraints = memb_ia5_c_constraint_1,
825 .per_constraints = &asn_PER_memb_ia5_c_constr_5,
826 .default_value = 0,
827 .name = "ia5-c"
828 },
829 { ATF_POINTER, 18, offsetof(struct PDU, ia5_ce),
830 .tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
831 .tag_mode = -1, /* IMPLICIT tag at current level */
832 .type = &asn_DEF_IA5String,
833 .memb_constraints = memb_ia5_ce_constraint_1,
834 .per_constraints = &asn_PER_memb_ia5_ce_constr_6,
835 .default_value = 0,
836 .name = "ia5-ce"
837 },
838 { ATF_POINTER, 17, offsetof(struct PDU, ia5_ir),
839 .tag = (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
840 .tag_mode = -1, /* IMPLICIT tag at current level */
841 .type = &asn_DEF_IA5String,
842 .memb_constraints = memb_ia5_ir_constraint_1,
843 .per_constraints = &asn_PER_memb_ia5_ir_constr_7,
844 .default_value = 0,
845 .name = "ia5-ir"
846 },
847 { ATF_POINTER, 16, offsetof(struct PDU, vs),
848 .tag = (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
849 .tag_mode = -1, /* IMPLICIT tag at current level */
850 .type = &asn_DEF_VisibleString,
851 .memb_constraints = 0, /* Defer constraints checking to the member type */
852 .per_constraints = 0, /* No PER visible constraints */
853 .default_value = 0,
854 .name = "vs"
855 },
856 { ATF_POINTER, 15, offsetof(struct PDU, vs_c),
857 .tag = (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
858 .tag_mode = -1, /* IMPLICIT tag at current level */
859 .type = &asn_DEF_VisibleString,
860 .memb_constraints = memb_vs_c_constraint_1,
861 .per_constraints = &asn_PER_memb_vs_c_constr_9,
862 .default_value = 0,
863 .name = "vs-c"
864 },
865 { ATF_POINTER, 14, offsetof(struct PDU, vs_ce),
866 .tag = (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
867 .tag_mode = -1, /* IMPLICIT tag at current level */
868 .type = &asn_DEF_VisibleString,
869 .memb_constraints = memb_vs_ce_constraint_1,
870 .per_constraints = &asn_PER_memb_vs_ce_constr_10,
871 .default_value = 0,
872 .name = "vs-ce"
873 },
874 { ATF_POINTER, 13, offsetof(struct PDU, vs_ir),
875 .tag = (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
876 .tag_mode = -1, /* IMPLICIT tag at current level */
877 .type = &asn_DEF_VisibleString,
878 .memb_constraints = memb_vs_ir_constraint_1,
879 .per_constraints = &asn_PER_memb_vs_ir_constr_11,
880 .default_value = 0,
881 .name = "vs-ir"
882 },
883 { ATF_POINTER, 12, offsetof(struct PDU, pr),
884 .tag = (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
885 .tag_mode = -1, /* IMPLICIT tag at current level */
886 .type = &asn_DEF_PrintableString,
887 .memb_constraints = 0, /* Defer constraints checking to the member type */
888 .per_constraints = 0, /* No PER visible constraints */
889 .default_value = 0,
890 .name = "pr"
891 },
892 { ATF_POINTER, 11, offsetof(struct PDU, pr_c),
893 .tag = (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
894 .tag_mode = -1, /* IMPLICIT tag at current level */
895 .type = &asn_DEF_PrintableString,
896 .memb_constraints = memb_pr_c_constraint_1,
897 .per_constraints = &asn_PER_memb_pr_c_constr_13,
898 .default_value = 0,
899 .name = "pr-c"
900 },
901 { ATF_POINTER, 10, offsetof(struct PDU, pr_ir),
902 .tag = (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
903 .tag_mode = -1, /* IMPLICIT tag at current level */
904 .type = &asn_DEF_PrintableString,
905 .memb_constraints = memb_pr_ir_constraint_1,
906 .per_constraints = &asn_PER_memb_pr_ir_constr_14,
907 .default_value = 0,
908 .name = "pr-ir"
909 },
910 { ATF_POINTER, 9, offsetof(struct PDU, ns),
911 .tag = (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
912 .tag_mode = -1, /* IMPLICIT tag at current level */
913 .type = &asn_DEF_NumericString,
914 .memb_constraints = 0, /* Defer constraints checking to the member type */
915 .per_constraints = 0, /* No PER visible constraints */
916 .default_value = 0,
917 .name = "ns"
918 },
919 { ATF_POINTER, 8, offsetof(struct PDU, ns_c),
920 .tag = (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
921 .tag_mode = -1, /* IMPLICIT tag at current level */
922 .type = &asn_DEF_NumericString,
923 .memb_constraints = memb_ns_c_constraint_1,
924 .per_constraints = &asn_PER_memb_ns_c_constr_16,
925 .default_value = 0,
926 .name = "ns-c"
927 },
928 { ATF_POINTER, 7, offsetof(struct PDU, ns_ce),
929 .tag = (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
930 .tag_mode = -1, /* IMPLICIT tag at current level */
931 .type = &asn_DEF_NumericString,
932 .memb_constraints = memb_ns_ce_constraint_1,
933 .per_constraints = &asn_PER_memb_ns_ce_constr_17,
934 .default_value = 0,
935 .name = "ns-ce"
936 },
937 { ATF_POINTER, 6, offsetof(struct PDU, ns_ir),
938 .tag = (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
939 .tag_mode = -1, /* IMPLICIT tag at current level */
940 .type = &asn_DEF_NumericString,
941 .memb_constraints = memb_ns_ir_constraint_1,
942 .per_constraints = &asn_PER_memb_ns_ir_constr_18,
943 .default_value = 0,
944 .name = "ns-ir"
945 },
946 { ATF_POINTER, 5, offsetof(struct PDU, ut_c),
947 .tag = (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
948 .tag_mode = -1, /* IMPLICIT tag at current level */
949 .type = &asn_DEF_UTF8String,
950 .memb_constraints = memb_ut_c_constraint_1,
951 .per_constraints = &asn_PER_memb_ut_c_constr_19,
952 .default_value = 0,
953 .name = "ut-c"
954 },
955 { ATF_POINTER, 4, offsetof(struct PDU, ut_ce),
956 .tag = (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
957 .tag_mode = -1, /* IMPLICIT tag at current level */
958 .type = &asn_DEF_UTF8String,
959 .memb_constraints = memb_ut_ce_constraint_1,
960 .per_constraints = &asn_PER_memb_ut_ce_constr_20,
961 .default_value = 0,
962 .name = "ut-ce"
963 },
964 { ATF_POINTER, 3, offsetof(struct PDU, ut_ir),
965 .tag = (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
966 .tag_mode = -1, /* IMPLICIT tag at current level */
967 .type = &asn_DEF_UTF8String,
968 .memb_constraints = memb_ut_ir_constraint_1,
969 .per_constraints = &asn_PER_memb_ut_ir_constr_21,
970 .default_value = 0,
971 .name = "ut-ir"
972 },
973 { ATF_POINTER, 2, offsetof(struct PDU, real),
974 .tag = (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
975 .tag_mode = -1, /* IMPLICIT tag at current level */
976 .type = &asn_DEF_REAL,
977 .memb_constraints = 0, /* Defer constraints checking to the member type */
978 .per_constraints = 0, /* No PER visible constraints */
979 .default_value = 0,
980 .name = "real"
981 },
982 { ATF_POINTER, 1, offsetof(struct PDU, oid),
983 .tag = (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
984 .tag_mode = -1, /* IMPLICIT tag at current level */
985 .type = &asn_DEF_OBJECT_IDENTIFIER,
986 .memb_constraints = 0, /* Defer constraints checking to the member type */
987 .per_constraints = 0, /* No PER visible constraints */
988 .default_value = 0,
989 .name = "oid"
990 },
991};
992static int asn_MAP_PDU_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
993static ber_tlv_tag_t asn_DEF_PDU_tags_1[] = {
994 (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
995};
996static asn_TYPE_tag2member_t asn_MAP_PDU_tag2el_1[] = {
997 { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* many at 15 */
998 { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ia5 at 16 */
999 { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ia5-c at 17 */
1000 { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ia5-ce at 18 */
1001 { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ia5-ir at 19 */
1002 { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* vs at 20 */
1003 { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* vs-c at 21 */
1004 { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* vs-ce at 22 */
1005 { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* vs-ir at 23 */
1006 { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pr at 24 */
1007 { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* pr-c at 25 */
1008 { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* pr-ir at 26 */
1009 { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* ns at 27 */
1010 { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* ns-c at 28 */
1011 { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* ns-ce at 29 */
1012 { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* ns-ir at 30 */
1013 { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* ut-c at 31 */
1014 { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* ut-ce at 32 */
1015 { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* ut-ir at 33 */
1016 { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* real at 34 */
1017 { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 } /* oid at 35 */
1018};
1019static asn_SEQUENCE_specifics_t asn_SPC_PDU_specs_1 = {
1020 sizeof(struct PDU),
1021 offsetof(struct PDU, _asn_ctx),
1022 asn_MAP_PDU_tag2el_1,
1023 21, /* Count of tags in the map */
1024 asn_MAP_PDU_oms_1, /* Optional members */
1025 21, 0, /* Root/Additions */
1026 -1, /* Start extensions */
1027 -1 /* Stop extensions */
1028};
1029asn_TYPE_descriptor_t asn_DEF_PDU = {
1030 "PDU",
1031 "PDU",
1032 SEQUENCE_free,
1033 SEQUENCE_print,
1034 SEQUENCE_constraint,
1035 SEQUENCE_decode_ber,
1036 SEQUENCE_encode_der,
1037 SEQUENCE_decode_xer,
1038 SEQUENCE_encode_xer,
1039 SEQUENCE_decode_uper,
1040 SEQUENCE_encode_uper,
1041 0, /* Use generic outmost tag fetcher */
1042 asn_DEF_PDU_tags_1,
1043 sizeof(asn_DEF_PDU_tags_1)
1044 /sizeof(asn_DEF_PDU_tags_1[0]), /* 1 */
1045 asn_DEF_PDU_tags_1, /* Same as above */
1046 sizeof(asn_DEF_PDU_tags_1)
1047 /sizeof(asn_DEF_PDU_tags_1[0]), /* 1 */
1048 0, /* No PER visible constraints */
1049 asn_MBR_PDU_1,
1050 21, /* Elements count */
1051 &asn_SPC_PDU_specs_1 /* Additional specs */
1052};
1053