|
|
1.1 root 1: -- das-dec.py - manually augmented DirectoryAbstractService module
2:
3: -- $Header: /f/osi/dsap/x500as/RCS/das-dec.py,v 7.0 89/11/23 21:50:06 mrose Rel $
4: --
5: --
6: -- $Log: das-dec.py,v $
7: -- Revision 7.0 89/11/23 21:50:06 mrose
8: -- Release 6.0
9: --
10:
11: --
12: -- NOTICE
13: --
14: -- Acquisition, use, and distribution of this module and related
15: -- materials are subject to the restrictions of a license agreement.
16: -- Consult the Preface in the User's Manual for the full terms of
17: -- this agreement.
18: --
19: --
20:
21:
22: DAS
23: {
24: joint-iso-ccitt
25: ds(5)
26: modules(1)
27: directoryAbstractService(2)
28: }
29:
30: DEFINITIONS ::=
31:
32: %{
33: #include "quipu/util.h"
34: #include "quipu/entry.h"
35: #include "quipu/common.h"
36: #include "quipu/bind.h"
37:
38: extern LLog * log_dsap;
39:
40: #define decode_UNIV_UTCTime parse_UNIV_UTCTime
41: %}
42:
43: PREFIXES encode decode print
44:
45: BEGIN
46:
47: -- EXPORTS
48: -- DirectoryBindArgument ,
49: -- ReadArgument ,
50: -- ReadResult ,
51: -- AbandonArgument ,
52: -- AbandonResult ,
53: -- CompareArgument ,
54: -- CompareResult ,
55: -- ListArgument ,
56: -- ListResult ,
57: -- SearchArgument ,
58: -- SearchResult ,
59: -- AddEntryArgument ,
60: -- AddEntryResult ,
61: -- RemoveEntryArgument ,
62: -- RemoveEntryResult ,
63: -- ModifyEntryArgument ,
64: -- ModifyEntryResult ,
65: -- ModifyRDNArgument ,
66: -- ModifyRDNResult ,
67: -- AbandonFailedParm ,
68: -- AttributeErrorParm ,
69: -- NameErrorParm ,
70: -- ReferralParm ,
71: -- SecurityErrorParm ,
72: -- ServiceErrorParm ,
73: -- UpdateErrorParm;
74:
75: IMPORTS
76: Attribute ,
77: AttributeType ,
78: AttributeValue ,
79: AttributeValueAssertion ,
80: DistinguishedName ,
81: Name ,
82: RelativeDistinguishedName
83: FROM IF
84: {
85: joint-iso-ccitt
86: ds(5)
87: modules(1)
88: informationFramework(1)
89: }
90:
91: OperationProgress ,
92: ContinuationReference ,
93: InvokeID
94: FROM DO
95: {
96: joint-iso-ccitt
97: ds(5)
98: modules(1)
99: distributedOperations(3)
100: }
101:
102: Certificate ,
103: CertificationPath ,
104: AlgorithmIdentifier
105: FROM AF
106: {
107: joint-iso-ccitt
108: ds(5)
109: modules(1)
110: authenticationFramework(7)
111: };
112:
113: DECODER decode
114:
115: SimpleCredentials [[P struct ds_bind_arg *]]
116: %{
117: char *passwd;
118: %}
119: ::=
120: %{
121: DLOG(log_dsap, LLOG_TRACE, ("About to decode SimpleCredentials (DAS)"));
122: parm->dba_dn = NULLDN;
123: parm->dba_passwd_len = 0;
124: parm->dba_passwd[0] = '\0';
125: parm->dba_time1 = NULLCP;
126: parm->dba_time2 = NULLCP;
127: parm->dba_r1.value = NULLCP;
128: parm->dba_r1.n_bits = 0;
129: parm->dba_r2.value = NULLCP;
130: parm->dba_r2.n_bits = 0;
131: parm->dba_auth_type = DBA_AUTH_NONE;
132: %}
133: SEQUENCE
134: {
135: name
136: [0] DistinguishedName [[p &(parm->dba_dn)]]
137: %{
138: %} ,
139: validity
140: [1] SET
141: %{
142: %}
143: {
144: time1
145: [0] UTCTime [[s parm -> dba_time1]]
146: %{
147: %} OPTIONAL ,
148: time2
149: [1] UTCTime [[s parm -> dba_time2]]
150: %{
151: %} OPTIONAL ,
152: random1
153: [2] BIT STRING [[x parm->dba_r1.value $ parm->dba_r1.n_bits]]
154: OPTIONAL ,
155: random2
156: [3] BIT STRING [[x parm->dba_r2.value $ parm->dba_r2.n_bits]]
157: OPTIONAL
158: }
159: %{
160: parm->dba_auth_type = DBA_AUTH_PROTECTED;
161: %} OPTIONAL ,
162: password
163: [2] OCTET STRING [[o passwd $ parm->dba_passwd_len]]
164: %{
165: bcopy(passwd, parm->dba_passwd, parm->dba_passwd_len);
166: free(passwd);
167: if (parm->dba_auth_type == DBA_AUTH_NONE)
168: parm->dba_auth_type = DBA_AUTH_SIMPLE;
169: %}
170: OPTIONAL
171: }
172: %{
173: DLOG(log_dsap, LLOG_TRACE, ("Done decode SimpleCredentials"));
174: %}
175:
176: TokenToSign [[P struct ds_bind_arg *]]
177: %{
178: struct alg_id alg;
179: %}
180: ::=
181: %{
182: DLOG(log_dsap, LLOG_TRACE, ("About to decode TokenToSign (DAS)"));
183: %}
184: SEQUENCE
185: {
186: algorithm
187: [0] AlgorithmIdentifier [[p &alg]],
188: name
189: [1] DistinguishedName [[p &(parm->dba_dn)]]
190: %{
191: %} ,
192: time
193: [2] UTCTime [[s parm->dba_time1]],
194: random
195: [3] BIT STRING [[x parm->dba_r1.value $ parm->dba_r1.n_bits ]]
196: }
197: %{
198: DLOG(log_dsap, LLOG_TRACE, ("Done decode TokenToSign (DAS)"));
199: %}
200:
201: Token [[P struct ds_bind_arg *]]
202: %{
203: %}
204: ::=
205: %{
206: DLOG(log_dsap, LLOG_TRACE, ("About to decode Token (DAS)"));
207: parm->dba_sig = (struct signature *)
208: calloc(1, sizeof(struct signature));
209: %}
210: SEQUENCE
211: {
212: TokenToSign [[p parm]],
213: AlgorithmIdentifier [[p &(parm->dba_sig->alg)]],
214: BIT STRING [[x parm->dba_sig->encrypted $ parm->dba_sig->n_bits]]
215: }
216: %{
217: DLOG(log_dsap, LLOG_TRACE, ("Done decode Token (DAS)"));
218: %}
219:
220: StrongCredentials [[P struct ds_bind_arg *]]
221: %{
222: %}
223: ::=
224: %{
225: DLOG(log_dsap, LLOG_TRACE, ("About to decode StrongCredentials (DAS)"));
226: %}
227: SET
228: {
229: certificationPath
230: [0] CertificationPath [[p &(parm->dba_cpath)]]
231: OPTIONAL ,
232: bindToken
233: [1] Token [[p parm]]
234: }
235: %{
236: DLOG(log_dsap, LLOG_TRACE, ("Done decode StrongCredentials (DAS)"));
237: %}
238:
239: Credentials [[P struct ds_bind_arg *]]
240: %{
241: %}
242: ::=
243: %{
244: DLOG(log_dsap, LLOG_TRACE, ("About to decode Credentials (DAS)"));
245: %}
246: CHOICE
247: {
248: simple
249: [0] SimpleCredentials [[p parm]]
250: %{
251: %} ,
252: strong
253: [1] StrongCredentials [[p parm]]
254: %{
255: parm->dba_auth_type = DBA_AUTH_STRONG;
256: %} ,
257: externalProcedure
258: [2] EXTERNAL
259: %{
260: parm->dba_auth_type = DBA_AUTH_EXTERNAL;
261: %}
262: }
263: %{
264: DLOG(log_dsap, LLOG_TRACE, ("Done decode Credentials (DAS)"));
265: %}
266:
267: Versions [[P int*]]
268: %{
269: int ver_len;
270: char *ver_bits;
271: %}
272: ::=
273: %{
274: DLOG(log_dsap, LLOG_TRACE, ("About to decode Versions"));
275: %}
276: BIT STRING [[x ver_bits $ ver_len]]
277: {
278: v1988(0)
279: }
280: %{
281: (*parm) = strb2int(ver_bits ,ver_len);
282: /*
283: interworking HACK 'till 1992 !!!
284: */
285: (*parm) = DBA_VERSION_V1988;
286: free (ver_bits);
287: DLOG(log_dsap, LLOG_TRACE, ("Done decode Versions"));
288: %}
289:
290: SecurityProblem [[P int*]]
291: %{
292: %}
293: ::=
294: %{
295: DLOG(log_dsap, LLOG_TRACE, ("About to decode SecurityProblem"));
296: (*parm) = 0;
297: %}
298: INTEGER [[i (*parm)]]
299: {
300: inappropriateAuthentication(1) ,
301: invalidCredentials(2) ,
302: insufficientAccessRights(3) ,
303: invalidSignature(4) ,
304: protectionRequired(5) ,
305: noInformation(6)
306: }
307: %{
308: DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityProblem"));
309: %}
310:
311: ServiceProblem [[P int*]]
312: %{
313: %}
314: ::=
315: %{
316: DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceProblem"));
317: (*parm) = 0;
318: %}
319: INTEGER [[i (*parm)]]
320: {
321: busy(1) ,
322: unavailable(2) ,
323: unwillingToPerform(3) ,
324: chainingRequired(4) ,
325: unableToProceed(5) ,
326: invalidReference(6) ,
327: timeLimitExceeded(7) ,
328: administrativeLimitExceeded(8) ,
329: loopDetected(9) ,
330: unavailableCriticalExtension(10) ,
331: outOfScope(11) ,
332: ditError(12)
333: }
334: %{
335: DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceProblem"));
336: %}
337:
338: EntryInformationSelection [[P struct entryinfoselection *]]
339: %{
340: Attr_Sequence *attr_link;
341: %}
342: ::=
343: %{
344: DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryInformationSelection"));
345: parm->eis_allattributes = TRUE;
346: parm->eis_select = NULLATTR;
347: parm->eis_infotypes = EIS_ATTRIBUTESANDVALUES;
348: attr_link = &(parm->eis_select);
349: %}
350: SET
351: {
352: attributeTypes
353: CHOICE
354: {
355: allAttributes
356: [0] NULL
357: %{
358: parm->eis_allattributes = TRUE;
359: %} ,
360: select
361: [1] SET OF
362: %{
363: (*attr_link) = as_comp_alloc();
364: (*attr_link)->attr_value = NULLAV;
365: (*attr_link)->attr_acl = NULLACL_INFO;
366: %}
367: AttributeType [[p &((*attr_link)->attr_type)]]
368: %{
369: attr_link = &((*attr_link)->attr_link);
370: %}
371: %{
372: (*attr_link) = NULLATTR;
373: parm->eis_allattributes = FALSE;
374: %}
375: }
376: %{
377: %}
378: -- DEFAULT allAttributes NULL ,
379: OPTIONAL ,
380: infoTypes
381: [2] INTEGER [[i parm->eis_infotypes]]
382: {
383: attributeTypesOnly(0) ,
384: attributeTypesAndValues(1)
385: }
386: %{
387: %}
388: -- DEFAULT attributeTypesAndValues
389: OPTIONAL
390: }
391: %{
392: DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryInformationSelection"));
393: %}
394:
395: ServiceControls [[P struct svccontrol *]]
396: %{
397: char *opt_bits;
398: int opt_len;
399: %}
400: ::=
401: %{
402: DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceControls"));
403: parm->svc_options = 0;
404: parm->svc_prio = SVC_PRIO_MED;
405: parm->svc_timelimit = SVC_NOTIMELIMIT;
406: parm->svc_sizelimit = SVC_NOSIZELIMIT;
407: parm->svc_scopeofreferral = SVC_REFSCOPE_NONE;
408: %}
409: SET
410: {
411: options
412: [0] BIT STRING [[x opt_bits $ opt_len]]
413: {
414: preferChaining(0) ,
415: chainingProhibited(1) ,
416: localScope(2) ,
417: dontUseCopy(3) ,
418: dontDereferenceAliases(4)
419: }
420: %{
421: parm->svc_options = strb2int(opt_bits ,opt_len);
422: free (opt_bits);
423: %}
424: -- DEFAULT {} ,
425: OPTIONAL ,
426: priority
427: [1] INTEGER [[i parm->svc_prio]]
428: {
429: low(0) ,
430: medium(1) ,
431: high(2)
432: }
433: %{
434: %}
435: -- DEFAULT medium ,
436: OPTIONAL ,
437: timeLimit
438: [2] INTEGER [[i parm->svc_timelimit]]
439: %{
440: %}
441: OPTIONAL ,
442: sizeLimit
443: [3] INTEGER [[i parm->svc_sizelimit]]
444: %{
445: %}
446: OPTIONAL ,
447: scopeOfReferral
448: [4] INTEGER [[i parm->svc_scopeofreferral]]
449: {
450: dmd(0) ,
451: country(1)
452: }
453: OPTIONAL
454: }
455: %{
456: DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceControls"));
457: %}
458:
459: ProtectionRequest [[P int *]]
460: ::=
461: %{
462: DLOG(log_dsap, LLOG_TRACE, ("At decode ProtectionRequest"));
463: %}
464: INTEGER [[i (*parm)]]
465: {
466: none (0) ,
467: signed (1)
468: }
469: %{
470: DLOG(log_dsap, LLOG_TRACE, ("Done decode ProtectionRequest"));
471: %}
472:
473: SecurityParameters [[P struct security_parms **]]
474: %{
475: struct security_parms *dummy = (struct security_parms *) 0;
476: int prot;
477: struct random_number random;
478: %}
479: ::=
480: %{
481: DLOG(log_dsap, LLOG_TRACE, ("At decode SecurityParameters"));
482: if (parm == (struct security_parms **) 0)
483: parm = &dummy;
484: (*parm) = (struct security_parms *)
485: calloc(1, sizeof(struct security_parms));
486: (*parm)->sp_path = (struct certificate_list *) 0;
487: (*parm)->sp_name = NULLDN;
488: (*parm)->sp_time = NULLCP;
489: (*parm)->sp_random = (struct random_number *) 0;
490: (*parm)->sp_target = (char) 0;
491: %}
492: SET
493: {
494: certificationPath
495: [0] CertificationPath [[p &((*parm)->sp_path)]]
496: OPTIONAL ,
497: name
498: [1] DistinguishedName [[p &((*parm)->sp_name)]]
499: OPTIONAL ,
500: time
501: [2] UTCTime [[s ((*parm)->sp_time)]]
502: OPTIONAL ,
503: random
504: [3] BIT STRING [[x random.value $ random.n_bits]]
505: %{
506: (*parm)->sp_random = (struct random_number *)
507: calloc(1, sizeof(struct random_number));
508: bcopy((char *)&random, (char *)&((*parm)->sp_random), sizeof(struct random_number));
509: %}
510: OPTIONAL ,
511: target
512: [4] ProtectionRequest [[p &prot]]
513: %{
514: (*parm)->sp_target = (char) prot;
515: %}
516: OPTIONAL
517: }
518: %{
519: if (dummy)
520: cfree((char *) dummy);
521: DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityParameters"));
522: %}
523:
524: Extension [[P struct extension *]]
525: ::=
526: %{
527: DLOG(log_dsap, LLOG_TRACE, ("At decode Extension"));
528: LLOG(log_dsap, LLOG_FATAL, ("Some smartass Extension!!!"));
529: parm->ext_critical = FALSE;
530: parm->ext_item = NULLPE;
531: %}
532: SET
533: {
534: identifier
535: [0] INTEGER [[i parm->ext_id]] ,
536: critical
537: [1] BOOLEAN [[b parm->ext_critical]]
538: -- DEFAULT FALSE ,
539: OPTIONAL ,
540: item
541: [2] ANY DEFINED BY identifier [[a parm->ext_item]]
542: }
543: %{
544: DLOG(log_dsap, LLOG_TRACE, ("Done decode Extension"));
545: %}
546:
547: EntryInformation [[P struct entrystruct *]]
548: %{
549: Attr_Sequence attr_tmp;
550: %}
551: ::=
552: %{
553: DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryInformation"));
554: parm->ent_dn = NULLDN;
555: parm->ent_attr = NULLATTR;
556: parm->ent_iscopy = E_DATA_MASTER;
557: parm->ent_next = NULLENTRYINFO;
558: %}
559: SEQUENCE
560: {
561: DistinguishedName [[p &(parm->ent_dn)]]
562: %{
563: %} ,
564: fromEntry
565: BOOLEAN [[b parm->ent_iscopy]]
566: %{
567: %}
568: -- DEFAULT TRUE ,
569: OPTIONAL ,
570: SET OF
571: %{
572: attr_tmp = as_comp_alloc();
573: attr_tmp->attr_value = NULLAV;
574: attr_tmp->attr_acl = NULLACL_INFO;
575: attr_tmp->attr_link = NULLATTR;
576: %}
577: CHOICE
578: {
579: AttributeType [[p &(attr_tmp->attr_type)]]
580: %{
581: %} ,
582: Attribute [[p attr_tmp]]
583: %{
584: %}
585: }
586: %{
587: parm->ent_attr = as_merge(parm->ent_attr, attr_tmp);
588: %}
589: OPTIONAL
590: }
591: %{
592: DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryInformation"));
593: %}
594:
595: LimitProblem [[P int*]]
596: %{
597: %}
598: ::=
599: %{
600: DLOG(log_dsap, LLOG_TRACE, ("About to decode LimitProblem"));
601: %}
602: INTEGER [[i (*parm)]]
603: {
604: timeLimitExceeded(0) ,
605: sizeLimitExceeded(1) ,
606: administrativeLimitExceeded(2)
607: }
608: %{
609: DLOG(log_dsap, LLOG_TRACE, ("Done decode LimitProblem"));
610: %}
611:
612: PartialOutcomeQualifier [[P struct part_outcome *]]
613: %{
614: ContinuationRef *crefp;
615: %}
616: ::=
617: %{
618: DLOG(log_dsap, LLOG_TRACE, ("About to decode PartialOutcomeQualifier"));
619: parm->poq_limitproblem = LSR_NOLIMITPROBLEM;
620: parm->poq_cref = NULLCONTINUATIONREF;
621: crefp = &(parm->poq_cref);
622: %}
623: SET
624: {
625: limitProblem
626: [0] LimitProblem [[p &(parm->poq_limitproblem)]]
627: %{
628: %}
629: OPTIONAL ,
630: unexplored
631: [1] SET OF
632: %{
633: (*crefp) = (ContinuationRef) smalloc(sizeof(continuation_ref));
634: %}
635: ContinuationReference [[p (*crefp)]]
636: %{
637: crefp = &((*crefp)->cr_next);
638: %}
639: %{
640: (*crefp) = NULLCONTINUATIONREF;
641: %}
642: OPTIONAL ,
643: unavailableCriticalExtensions
644: [2] BOOLEAN [[b parm->poq_no_ext]]
645: -- DEFAULT FALSE
646: OPTIONAL
647: }
648: %{
649: DLOG(log_dsap, LLOG_TRACE, ("Done decode PartialOutcomeQualifier"));
650: %}
651:
652: FilterItem [[P struct filter_item *]]
653: %{
654: AV_Sequence * avs_initial;
655: AV_Sequence * avs_any;
656: AV_Sequence * avs_final;
657: AttributeValue av_next;
658: Filter_Substrings *subs_next;
659: %}
660: ::=
661: %{
662: DLOG(log_dsap, LLOG_TRACE, ("About to decode FilterItem"));
663: %}
664: CHOICE
665: {
666: equality
667: %{
668: parm->fi_type = FILTERITEM_EQUALITY;
669: %}
670: [0] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]]
671: %{
672: %} ,
673: substrings
674: %{
675: parm->fi_type = FILTERITEM_SUBSTRINGS;
676: subs_next = &(parm->fi_un.fi_un_substrings);
677: subs_next->fi_sub_initial = NULLAV;
678: subs_next->fi_sub_any = NULLAV;
679: subs_next->fi_sub_final = NULLAV;
680: avs_initial = &(subs_next->fi_sub_initial);
681: avs_any = &(subs_next->fi_sub_any);
682: avs_final = &(subs_next->fi_sub_final);
683: %}
684: [1] SEQUENCE
685: {
686: type
687: AttributeType [[p &subs_next->fi_sub_type]]
688: %{
689: %} ,
690: strings
691: SEQUENCE OF
692: %{
693: av_next = AttrV_alloc();
694: %}
695: CHOICE
696: {
697: initial
698: [0] AttributeValue [[p av_next]]
699: %{
700: AttrV_decode (subs_next->fi_sub_type,av_next);
701: (*avs_initial) = avs_comp_new(av_next);
702: avs_initial = &((*avs_initial)->avseq_next);
703: (*avs_initial) = NULLAV;
704: %} ,
705: any
706: [1] AttributeValue [[p av_next]]
707: %{
708: AttrV_decode (subs_next->fi_sub_type,av_next);
709: (*avs_any) = avs_comp_new(av_next);
710: avs_any = &((*avs_any)->avseq_next);
711: (*avs_any) = NULLAV;
712: %} ,
713: final
714: [2] AttributeValue [[p av_next]]
715: %{
716: AttrV_decode (subs_next->fi_sub_type,av_next);
717: (*avs_final) = avs_comp_new(av_next);
718: avs_final = &((*avs_final)->avseq_next);
719: (*avs_final) = NULLAV;
720: %}
721: }
722: %{
723: %}
724: %{
725: %}
726: }
727: %{
728: %} ,
729: greaterOrEqual
730: %{
731: parm->fi_type = FILTERITEM_GREATEROREQUAL;
732: %}
733: [2] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]]
734: %{
735: %} ,
736: lessOrEqual
737: %{
738: parm->fi_type = FILTERITEM_LESSOREQUAL;
739: %}
740: [3] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]]
741: %{
742: %} ,
743: present
744: %{
745: parm->fi_type = FILTERITEM_PRESENT;
746: %}
747: [4] AttributeType [[p &parm->fi_un.fi_un_type]]
748: %{
749: %} ,
750: approximateMatch
751: %{
752: parm->fi_type = FILTERITEM_APPROX;
753: %}
754: [5] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]]
755: %{
756: %}
757: }
758: %{
759: DLOG(log_dsap, LLOG_TRACE, ("Done decode FilterItem"));
760: %}
761:
762: Filter [[P struct filter *]]
763: %{
764: Filter *flt_next;
765: %}
766: ::=
767: %{
768: DLOG(log_dsap, LLOG_TRACE, ("About to decode Filter"));
769: parm->flt_next = NULLFILTER;
770: flt_next = &(parm->flt_un.flt_un_filter);
771: (*flt_next) = NULLFILTER;
772: %}
773: CHOICE
774: {
775: item
776: %{
777: parm->flt_type = FILTER_ITEM;
778: %}
779: [0] FilterItem [[p &(parm->flt_un.flt_un_item)]]
780: %{
781: %} ,
782: and
783: %{
784: parm->flt_type = FILTER_AND;
785: %}
786: [1] SET OF
787: %{
788: (*flt_next) = filter_alloc();
789: %}
790: Filter [[p (*flt_next)]]
791: %{
792: flt_next = &((*flt_next)->flt_next);
793: %}
794: %{
795: (*flt_next) = NULLFILTER;
796: %} ,
797: or
798: %{
799: parm->flt_type = FILTER_OR;
800: %}
801: [2] SET OF
802: %{
803: (*flt_next) = filter_alloc();
804: %}
805: Filter [[p (*flt_next)]]
806: %{
807: flt_next = &((*flt_next)->flt_next);
808: %}
809: %{
810: (*flt_next) = NULLFILTER;
811: %} ,
812: not
813: %{
814: parm->flt_type = FILTER_NOT;
815: parm->flt_next = NULLFILTER;
816: (*flt_next) = filter_alloc();
817: %}
818: [3] Filter [[p (*flt_next)]]
819: %{
820: %}
821: %{
822: (*flt_next)->flt_next = NULLFILTER;
823: %}
824: }
825: %{
826: DLOG(log_dsap, LLOG_TRACE, ("Done decode Filter"));
827: %}
828:
829: EntryModification [[P struct entrymod *]]
830: %{
831: %}
832: ::=
833: %{
834: DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryModification"));
835: parm->em_type = 0;
836: parm->em_what = NULLATTR;
837: parm->em_next = NULL;
838: %}
839: CHOICE
840: {
841: addAttribute
842: %{
843: parm->em_type = EM_ADDATTRIBUTE;
844: parm->em_what = as_comp_alloc();
845: %}
846: [0] Attribute [[p parm->em_what]]
847: %{
848: %} ,
849: removeAttribute
850: %{
851: parm->em_type = EM_REMOVEATTRIBUTE;
852: parm->em_what = as_comp_new(NULLAttrT ,NULLAV ,NULLACL_INFO);
853: %}
854: [1] AttributeType [[p &(parm->em_what->attr_type)]]
855: %{
856: %} ,
857: addValues
858: %{
859: parm->em_type = EM_ADDVALUES;
860: parm->em_what = as_comp_alloc();
861: %}
862: [2] Attribute [[p parm->em_what]]
863: %{
864: %} ,
865: removeValues
866: %{
867: parm->em_type = EM_REMOVEVALUES;
868: parm->em_what = as_comp_alloc();
869: %}
870: [3] Attribute [[p parm->em_what]]
871: %{
872: %}
873: }
874: %{
875: DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryModification"));
876: %}
877:
878: AbandonProblem [[P int*]]
879: %{
880: %}
881: ::=
882: %{
883: DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonProblem"));
884: %}
885: INTEGER [[i (*parm)]]
886: {
887: noSuchOperation(1) ,
888: tooLate(2) ,
889: cannotAbandon(3)
890: }
891: %{
892: DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonProblem"));
893: %}
894:
895: AttributeProblem [[P int*]]
896: %{
897: %}
898: ::=
899: %{
900: DLOG(log_dsap, LLOG_TRACE, ("About to decode AttributeProblem"));
901: %}
902: INTEGER [[i (*parm)]]
903: {
904: noSuchAttributeOrValue(1) ,
905: invalidAttributeSyntax(2) ,
906: undefinedAttributeType(3) ,
907: inappropriateMatching(4) ,
908: constraintViolation(5) ,
909: attributeOrValueAlreadyExists(6)
910: }
911: %{
912: DLOG(log_dsap, LLOG_TRACE, ("Done decode AttributeProblem"));
913: %}
914:
915: NameProblem [[P int*]]
916: %{
917: %}
918: ::=
919: %{
920: DLOG(log_dsap, LLOG_TRACE, ("About to decode NameProblem"));
921: %}
922: INTEGER [[i (*parm)]]
923: {
924: noSuchObject(1) ,
925: aliasProblem(2) ,
926: invalidAttributeSyntax(3) ,
927: aliasDereferencingProblem(4)
928: }
929: %{
930: DLOG(log_dsap, LLOG_TRACE, ("Done decode NameProblem"));
931: %}
932:
933: UpdateProblem [[P int*]]
934: %{
935: %}
936: ::=
937: %{
938: DLOG(log_dsap, LLOG_TRACE, ("About to decode UpdateProblem"));
939: %}
940: INTEGER [[i (*parm)]]
941: {
942: namingViolation(1) ,
943: objectClassViolation(2) ,
944: notAllowedOnNonLeaf(3) ,
945: notAllowedOnRDN(4) ,
946: entryAlreadyExists(5) ,
947: affectsMultipleDSAs(6) ,
948: objectClassModificationProhibited(7)
949: }
950: %{
951: DLOG(log_dsap, LLOG_TRACE, ("Done decode UpdateProblem"));
952: %}
953:
954: DirectoryBindArgument [[P struct ds_bind_arg *]]
955: %{
956: struct simple_creds usc_s;
957: struct simple_creds * usc = &(usc_s);
958: %}
959: ::=
960: %{
961: DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindArgument"));
962: parm->dba_dn = usc->usc_dn = NULLDN;
963: parm->dba_passwd_len = usc->usc_passwd_len = 0;
964: parm->dba_auth_type = DBA_AUTH_NONE;
965: usc->usc_passwd = NULL;
966: usc->usc_time1 = NULL;
967: usc->usc_time2 = NULL;
968: parm->dba_version = DBA_VERSION_V1988;
969: %}
970: SET
971: {
972: credentials
973: [0] Credentials [[p parm]]
974: %{
975: %}
976: OPTIONAL ,
977: versions
978: [1] Versions [[p &(parm->dba_version)]]
979: %{
980: %}
981: -- DEFAULT v1988
982: OPTIONAL
983: }
984: %{
985: DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindArgument"));
986: %}
987:
988: DirectoryBindResult [[P struct ds_bind_arg *]]
989: %{
990: %}
991: ::=
992: %{
993: DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindResult"));
994: %}
995: DirectoryBindArgument [[p parm]]
996: %{
997: DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindResult"));
998: %}
999:
1000: ReadArgumentData [[P struct ds_read_arg *]]
1001: %{
1002: struct extension **extp;
1003: struct common_args * ca;
1004: %}
1005: ::=
1006: %{
1007: DLOG(log_dsap, LLOG_TRACE, ("About to decode ReadArgumentData"));
1008: parm->rda_object = NULLDN;
1009: eis_def(&(parm->rda_eis));
1010: ca = &(parm->rda_common);
1011: svc_def(&(ca->ca_servicecontrol));
1012: ca->ca_requestor = NULLDN;
1013: ca->ca_progress.op_resolution_phase = 0;
1014: ca->ca_progress.op_nextrdntoberesolved = 0;
1015: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1016: ca->ca_extensions = NULLEXT;
1017: ca->ca_security = (struct security_parms *) 0;
1018: ca->ca_sig = (struct signature *) 0;
1019: extp = &(ca->ca_extensions);
1020: %}
1021: SET
1022: {
1023: object
1024: [0] Name [[p &(parm->rda_object)]]
1025: %{
1026: %} ,
1027: selection
1028: [1] EntryInformationSelection [[p &(parm->rda_eis)]]
1029: %{
1030: %}
1031: -- DEFAULT {} ,
1032: OPTIONAL ,
1033: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
1034: %{
1035: %}
1036: -- DEFAULT {} ,
1037: OPTIONAL ,
1038: [29] SecurityParameters [[p &(ca->ca_security)]]
1039: -- DEFAULT {} ,
1040: OPTIONAL ,
1041: requestor
1042: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1043: %{
1044: %}
1045: OPTIONAL ,
1046: [27] OperationProgress [[p &(ca->ca_progress)]]
1047: %{
1048: %}
1049: OPTIONAL ,
1050: aliasedRDNs
1051: [26] INTEGER [[i ca->ca_aliased_rdns]]
1052: OPTIONAL ,
1053: extensions
1054: [25] SET OF
1055: %{
1056: (*extp) = ext_alloc();
1057: %}
1058: Extension [[p (*extp)]]
1059: %{
1060: extp = &((*extp)->ext_next);
1061: %}
1062: %{
1063: (*extp) = NULLEXT;
1064: %}
1065: OPTIONAL
1066: }
1067: %{
1068: DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadArgumentData"));
1069: %}
1070:
1071: ReadArgument [[P struct ds_read_arg *]]
1072: %{
1073: struct signature sig;
1074: %}
1075: ::=
1076: %{
1077: DLOG(log_dsap, LLOG_TRACE, ("At decode ReadArgument"));
1078: %}
1079: CHOICE
1080: {
1081: ReadArgumentData [[p parm]] ,
1082: SEQUENCE
1083: {
1084: ReadArgumentData [[p parm]] ,
1085: AlgorithmIdentifier [[p &(sig.alg)]],
1086: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
1087: }
1088: %{
1089: parm->rda_common.ca_sig = (struct signature *)
1090: calloc(1, sizeof(sig));
1091: bcopy((char *)&sig, (char *)parm->rda_common.ca_sig, sizeof(sig));
1092: %}
1093: }
1094: %{
1095: DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadArgument"));
1096: %}
1097:
1098: ReadResultData [[P struct ds_read_result *]]
1099: %{
1100: %}
1101: ::=
1102: %{
1103: DLOG(log_dsap, LLOG_TRACE, ("About to decode ReadResultData"));
1104: parm->rdr_entry.ent_dn = NULLDN;
1105: parm->rdr_entry.ent_attr = NULLATTR;
1106: parm->rdr_entry.ent_iscopy = 0;
1107: parm->rdr_entry.ent_next = NULLENTRYINFO;
1108: parm->rdr_common.cr_requestor = NULLDN;
1109: parm->rdr_common.cr_aliasdereferenced = FALSE;
1110: %}
1111: SET
1112: {
1113: entry
1114: [0] EntryInformation [[p &(parm->rdr_entry)]]
1115: %{
1116: %} ,
1117: [30] SecurityParameters [[p ((struct security_parms **) 0)]]
1118: OPTIONAL ,
1119: performer
1120: [29] DistinguishedName [[p &(parm->rdr_common.cr_requestor)]]
1121: %{
1122: %}
1123: OPTIONAL ,
1124: aliasDereferenced
1125: [28] BOOLEAN [[b parm->rdr_common.cr_aliasdereferenced]]
1126: %{
1127: %}
1128: -- DEFAULT FALSE
1129: OPTIONAL
1130: }
1131: %{
1132: DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadResultData"));
1133: %}
1134:
1135: ReadResult [[P struct ds_read_result *]]
1136: %{
1137: struct alg_id alg;
1138: %}
1139: ::=
1140: %{
1141: DLOG(log_dsap, LLOG_TRACE, ("At decode ReadResult"));
1142: %}
1143: CHOICE
1144: {
1145: ReadResultData [[p parm]] ,
1146: SEQUENCE
1147: {
1148: ReadResultData [[p parm]] ,
1149: AlgorithmIdentifier [[p &alg]],
1150: BIT STRING
1151: }
1152: }
1153: %{
1154: DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadResult"));
1155: %}
1156:
1157: CompareArgumentData [[P struct ds_compare_arg *]]
1158: %{
1159: struct extension **extp;
1160: struct common_args * ca;
1161: %}
1162: ::=
1163: %{
1164: DLOG(log_dsap, LLOG_TRACE, ("About to decode CompareArgumentData"));
1165: parm->cma_object = NULLDN;
1166: parm->cma_purported.ava_type = NULLAttrT;
1167: parm->cma_purported.ava_value = NULLAttrV;
1168: ca = &(parm->cma_common);
1169: svc_def(&(ca->ca_servicecontrol));
1170: ca->ca_requestor = NULLDN;
1171: ca->ca_progress.op_resolution_phase = 0;
1172: ca->ca_progress.op_nextrdntoberesolved = 0;
1173: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1174: ca->ca_extensions = NULLEXT;
1175: ca->ca_security = (struct security_parms *) 0;
1176: ca->ca_sig = (struct signature *) 0;
1177: extp = &(ca->ca_extensions);
1178: %}
1179: SET
1180: {
1181: object
1182: [0] Name [[p &(parm->cma_object)]]
1183: %{
1184: %} ,
1185: purported
1186: [1] AttributeValueAssertion [[p &(parm->cma_purported)]]
1187: %{
1188: %} ,
1189: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
1190: %{
1191: %}
1192: -- DEFAULT {} ,
1193: OPTIONAL ,
1194: [29] SecurityParameters [[p &(ca->ca_security)]]
1195: -- DEFAULT {} ,
1196: OPTIONAL ,
1197: requestor
1198: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1199: %{
1200: %}
1201: OPTIONAL ,
1202: [27] OperationProgress [[p &(ca->ca_progress)]]
1203: %{
1204: %}
1205: OPTIONAL ,
1206: aliasedRDNs
1207: [26] INTEGER [[i ca->ca_aliased_rdns]]
1208: OPTIONAL ,
1209: extensions
1210: [25] SET OF
1211: %{
1212: (*extp) = ext_alloc();
1213: %}
1214: Extension [[p (*extp)]]
1215: %{
1216: extp = &((*extp)->ext_next);
1217: %}
1218: %{
1219: (*extp) = NULLEXT;
1220: %}
1221: OPTIONAL
1222: }
1223: %{
1224: DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareArgumentData"));
1225: %}
1226:
1227: CompareArgument [[P struct ds_compare_arg *]]
1228: %{
1229: struct signature sig;
1230: %}
1231: ::=
1232: %{
1233: DLOG(log_dsap, LLOG_TRACE, ("At decode CompareArgument"));
1234: %}
1235: CHOICE
1236: {
1237: CompareArgumentData [[p parm]] ,
1238: SEQUENCE
1239: {
1240: CompareArgumentData [[p parm]] ,
1241: AlgorithmIdentifier [[p &(sig.alg)]],
1242: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
1243: }
1244: %{
1245: parm->cma_common.ca_sig = (struct signature *)
1246: calloc(1, sizeof(sig));
1247: bcopy((char*)&sig, (char*)parm->cma_common.ca_sig, sizeof(sig));
1248: %}
1249: }
1250: %{
1251: DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareArgument"));
1252: %}
1253:
1254: CompareResultData [[P struct ds_compare_result *]]
1255: %{
1256: %}
1257: ::=
1258: %{
1259: DLOG(log_dsap, LLOG_TRACE, ("About to decode CompareResultData"));
1260: parm->cmr_object = NULLDN;
1261: parm->cmr_matched = 0;
1262: parm->cmr_iscopy = E_DATA_MASTER;
1263: parm->cmr_common.cr_requestor = NULLDN;
1264: parm->cmr_common.cr_aliasdereferenced = FALSE;
1265: %}
1266: SET
1267: {
1268: DistinguishedName [[p &(parm->cmr_object)]]
1269: %{
1270: %}
1271: OPTIONAL ,
1272: matched
1273: [0] BOOLEAN [[b parm->cmr_matched]]
1274: %{
1275: %} ,
1276: fromEntry
1277: [1] BOOLEAN [[b parm->cmr_iscopy]]
1278: %{
1279: %}
1280: -- DEFAULT TRUE ,
1281: OPTIONAL ,
1282: [30] SecurityParameters [[p ((struct security_parms **) 0)]]
1283: OPTIONAL ,
1284: performer
1285: [29] DistinguishedName [[p &(parm->cmr_common.cr_requestor)]]
1286: %{
1287: %}
1288: OPTIONAL ,
1289: aliasDereferenced
1290: [28] BOOLEAN [[b parm->cmr_common.cr_aliasdereferenced]]
1291: %{
1292: %}
1293: -- DEFAULT FALSE
1294: OPTIONAL
1295: }
1296: %{
1297: DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareResultData"));
1298: %}
1299:
1300: CompareResult [[P struct ds_compare_result *]]
1301: %{
1302: struct alg_id alg;
1303: %}
1304: ::=
1305: %{
1306: DLOG(log_dsap, LLOG_TRACE, ("At decode CompareResult"));
1307: %}
1308: CHOICE
1309: {
1310: CompareResultData [[p parm]] ,
1311: SEQUENCE
1312: {
1313: CompareResultData [[p parm]] ,
1314: AlgorithmIdentifier [[p &alg]],
1315: BIT STRING
1316: }
1317: }
1318: %{
1319: DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareResult"));
1320: %}
1321:
1322: AbandonArgument [[P struct ds_abandon_arg *]]
1323: %{
1324: %}
1325: ::=
1326: %{
1327: DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonArgument"));
1328: parm->aba_invokeid = 0;
1329: %}
1330: SEQUENCE
1331: {
1332: invokeID
1333: [0] InvokeID [[p &(parm->aba_invokeid)]]
1334: %{
1335: %}
1336: }
1337: %{
1338: DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonArgument"));
1339: %}
1340:
1341: AbandonResult ::= NULL
1342:
1343: ListArgumentData [[P struct ds_list_arg *]]
1344: %{
1345: struct extension **extp;
1346: struct common_args * ca;
1347: %}
1348: ::=
1349: %{
1350: DLOG(log_dsap, LLOG_TRACE, ("About to decode ListArgumentData"));
1351: parm->lsa_object = NULLDN;
1352: ca = &(parm->lsa_common);
1353: svc_def(&(ca->ca_servicecontrol));
1354: ca->ca_requestor = NULLDN;
1355: ca->ca_progress.op_resolution_phase = 0;
1356: ca->ca_progress.op_nextrdntoberesolved = 0;
1357: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1358: ca->ca_extensions = NULLEXT;
1359: ca->ca_security = (struct security_parms *) 0;
1360: ca->ca_sig = (struct signature *) 0;
1361: extp = &(ca->ca_extensions);
1362: %}
1363: SET
1364: {
1365: object
1366: [0] Name [[p &(parm->lsa_object)]]
1367: %{
1368: %} ,
1369: [30] ServiceControls [[p &(parm->lsa_common.ca_servicecontrol)]]
1370: %{
1371: %}
1372: -- DEFAULT {} ,
1373: OPTIONAL ,
1374: [29] SecurityParameters [[p &(ca->ca_security)]]
1375: -- DEFAULT {} ,
1376: OPTIONAL ,
1377: requestor
1378: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1379: %{
1380: %}
1381: OPTIONAL ,
1382: [27] OperationProgress [[p &(ca->ca_progress)]]
1383: %{
1384: %}
1385: OPTIONAL ,
1386: aliasedRDNs
1387: [26] INTEGER [[i ca->ca_aliased_rdns]]
1388: OPTIONAL ,
1389: extensions
1390: [25] SET OF
1391: %{
1392: (*extp) = ext_alloc();
1393: %}
1394: Extension [[p (*extp)]]
1395: %{
1396: extp = &((*extp)->ext_next);
1397: %}
1398: %{
1399: (*extp) = NULLEXT;
1400: %}
1401: OPTIONAL
1402: }
1403: %{
1404: DLOG(log_dsap, LLOG_TRACE, ("Done decode ListArgumentData"));
1405: %}
1406:
1407: ListArgument [[P struct ds_list_arg *]]
1408: %{
1409: struct signature sig;
1410: %}
1411: ::=
1412: %{
1413: DLOG(log_dsap, LLOG_TRACE, ("At decode ListArgument"));
1414: %}
1415: CHOICE
1416: {
1417: ListArgumentData [[p parm]] ,
1418: SEQUENCE
1419: {
1420: ListArgumentData [[p parm]] ,
1421: AlgorithmIdentifier [[p &(sig.alg)]],
1422: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
1423: }
1424: %{
1425: parm->lsa_common.ca_sig = (struct signature *)
1426: calloc(1, sizeof(sig));
1427: bcopy((char*)&sig, (char*)parm->lsa_common.ca_sig, sizeof(sig));
1428: %}
1429: }
1430: %{
1431: DLOG(log_dsap, LLOG_TRACE, ("Done decode ListArgument"));
1432: %}
1433:
1434: ListResultData [[P struct ds_list_result *]]
1435: %{
1436: POQ poq_next_s;
1437: POQ * poq_next = &(poq_next_s);
1438: struct subordinate **sub_next;
1439: struct subordinate **subp;
1440: struct continuation_ref **crp;
1441: struct ds_list_result temp_list;
1442: %}
1443: ::=
1444: %{
1445: DLOG(log_dsap, LLOG_TRACE, ("About to decode ListResultData"));
1446: parm->lsr_object = NULLDN;
1447: parm->lsr_subordinates = NULLSUBORD;
1448: parm->lsr_limitproblem = LSR_NOLIMITPROBLEM;
1449: parm->lsr_cr = NULLCONTINUATIONREF;
1450: parm->lsr_common.cr_requestor = NULLDN;
1451: parm->lsr_common.cr_aliasdereferenced = FALSE;
1452: sub_next = &(parm->lsr_subordinates);
1453: %}
1454: CHOICE
1455: {
1456: listInfo
1457: SET
1458: {
1459: DistinguishedName [[p &(parm->lsr_object)]]
1460: %{
1461: %}
1462: OPTIONAL ,
1463: subordinates
1464: [1] SET OF
1465: %{
1466: (*sub_next) = (struct subordinate *) smalloc(sizeof(struct subordinate));
1467: (*sub_next)->sub_rdn = NULLRDN;
1468: (*sub_next)->sub_aliasentry = FALSE;
1469: (*sub_next)->sub_copy = E_DATA_MASTER;
1470: %}
1471: SEQUENCE
1472: {
1473: RelativeDistinguishedName [[p &((*sub_next)->sub_rdn)]]
1474: %{
1475: %} ,
1476: aliasEntry
1477: [0] BOOLEAN [[b (*sub_next)->sub_aliasentry]]
1478: %{
1479: %}
1480: -- DEFAULT FALSE ,
1481: OPTIONAL ,
1482: fromEntry
1483: [1] BOOLEAN [[b (*sub_next)->sub_copy]]
1484: %{
1485: %}
1486: -- DEFAULT TRUE
1487: OPTIONAL
1488: }
1489: %{
1490: sub_next = &((*sub_next)->sub_next);
1491: %}
1492: %{
1493: (*sub_next) = NULLSUBORD;
1494: %} ,
1495: partialOutcomeQualifier
1496: [2] PartialOutcomeQualifier [[p poq_next]]
1497: %{
1498: parm->lsr_limitproblem = poq_next->poq_limitproblem;
1499: parm->lsr_cr = poq_next->poq_cref;
1500: %}
1501: OPTIONAL ,
1502: [30] SecurityParameters [[p ((struct security_parms **) 0)]]
1503: OPTIONAL ,
1504: performer
1505: [29] DistinguishedName [[p &(parm->lsr_common.cr_requestor)]]
1506: %{
1507: %}
1508: OPTIONAL ,
1509: aliasDereferenced
1510: [28] BOOLEAN [[b parm->lsr_common.cr_aliasdereferenced]]
1511: %{
1512: %}
1513: -- DEFAULT FALSE
1514: OPTIONAL
1515: }
1516: %{
1517: %} ,
1518: uncorrelatedListInfo
1519: [0] SET OF
1520: %{
1521: %}
1522: ListResult [[p &(temp_list)]]
1523: %{
1524: LLOG(log_dsap, LLOG_EXCEPTIONS, ("Uncorrelated ListInfo!"));
1525: if(parm->lsr_object == NULLDN)
1526: {
1527: parm->lsr_object = dn_cpy(temp_list.lsr_object);
1528: parm->lsr_common.cr_requestor = dn_cpy(temp_list.lsr_common.cr_requestor);
1529: parm->lsr_common.cr_aliasdereferenced = temp_list.lsr_common.cr_aliasdereferenced;
1530: }
1531: dn_free(temp_list.lsr_object);
1532: dn_free(temp_list.lsr_common.cr_requestor);
1533:
1534: if(parm->lsr_limitproblem == LSR_NOLIMITPROBLEM)
1535: {
1536: parm->lsr_limitproblem = temp_list.lsr_limitproblem;
1537: }
1538:
1539: if(temp_list.lsr_cr != NULLCONTINUATIONREF)
1540: {
1541: for(crp = &(parm->lsr_cr); (*crp) != NULLCONTINUATIONREF; crp = &((*crp)->cr_next));
1542: (*crp) = temp_list.lsr_cr;
1543: temp_list.lsr_cr = NULLCONTINUATIONREF;
1544: }
1545:
1546: if(temp_list.lsr_subordinates != NULLSUBORD)
1547: {
1548: for(subp = &(parm->lsr_subordinates); (*subp) != NULLSUBORD; subp = &((*subp)->sub_next));
1549: (*subp) = temp_list.lsr_subordinates;
1550: temp_list.lsr_subordinates = NULLSUBORD;
1551: }
1552: %}
1553: %{
1554: %}
1555: }
1556: %{
1557: DLOG(log_dsap, LLOG_TRACE, ("Done decode ListResultData"));
1558: %}
1559:
1560: ListResult [[P struct ds_list_result *]]
1561: %{
1562: struct alg_id alg;
1563: %}
1564: ::=
1565: %{
1566: DLOG(log_dsap, LLOG_TRACE, ("At decode ListResult"));
1567: %}
1568: CHOICE
1569: {
1570: ListResultData [[p parm]] ,
1571: SEQUENCE
1572: {
1573: ListResultData [[p parm]] ,
1574: AlgorithmIdentifier [[p &alg]],
1575: BIT STRING
1576: }
1577: }
1578: %{
1579: DLOG(log_dsap, LLOG_TRACE, ("Done decode ListResult"));
1580: %}
1581:
1582: SearchArgumentData [[P struct ds_search_arg *]]
1583: %{
1584: struct extension **extp;
1585: struct common_args * ca;
1586: %}
1587: ::=
1588: %{
1589: DLOG(log_dsap, LLOG_TRACE, ("About to decode SearchArgumentData"));
1590: parm->sra_baseobject = NULLDN;
1591: parm->sra_subset = SRA_BASEOBJECT;
1592: parm->sra_filter = NULLFILTER;
1593: parm->sra_searchaliases = TRUE;
1594: eis_def(&(parm->sra_eis));
1595: ca = &(parm->sra_common);
1596: svc_def(&(ca->ca_servicecontrol));
1597: ca->ca_requestor = NULLDN;
1598: ca->ca_progress.op_resolution_phase = 0;
1599: ca->ca_progress.op_nextrdntoberesolved = 0;
1600: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1601: ca->ca_extensions = NULLEXT;
1602: ca->ca_security = (struct security_parms *) 0;
1603: ca->ca_sig = (struct signature *) 0;
1604: extp = &(ca->ca_extensions);
1605: %}
1606: SET
1607: {
1608: baseObject
1609: [0] Name [[p &(parm->sra_baseobject)]]
1610: %{
1611: %} ,
1612: subset
1613: [1] INTEGER [[i parm->sra_subset]]
1614: {
1615: baseObject(0) ,
1616: oneLevel(1) ,
1617: wholeSubtree(2)
1618: }
1619: %{
1620: %}
1621: -- DEFAULT baseObject ,
1622: OPTIONAL ,
1623: filter
1624: %{
1625: parm->sra_filter = filter_alloc();
1626: %}
1627: [2] Filter [[p parm->sra_filter]]
1628: %{
1629: %}
1630: -- DEFAULT and {} ,
1631: OPTIONAL ,
1632: searchAliases
1633: [3] BOOLEAN [[b parm->sra_searchaliases]]
1634: -- DEFAULT TRUE ,
1635: OPTIONAL ,
1636: selection
1637: [4] EntryInformationSelection [[p &(parm->sra_eis)]]
1638: %{
1639: %}
1640: -- DEFAULT {} ,
1641: OPTIONAL ,
1642: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
1643: %{
1644: %}
1645: -- DEFAULT {} ,
1646: OPTIONAL ,
1647: [29] SecurityParameters [[p &(ca->ca_security)]]
1648: -- DEFAULT {} ,
1649: OPTIONAL ,
1650: requestor
1651: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1652: %{
1653: %}
1654: OPTIONAL ,
1655: [27] OperationProgress [[p &(ca->ca_progress)]]
1656: %{
1657: %}
1658: OPTIONAL ,
1659: aliasedRDNs
1660: [26] INTEGER [[i ca->ca_aliased_rdns]]
1661: OPTIONAL ,
1662: extensions
1663: [25] SET OF
1664: %{
1665: (*extp) = ext_alloc();
1666: %}
1667: Extension [[p (*extp)]]
1668: %{
1669: extp = &((*extp)->ext_next);
1670: %}
1671: %{
1672: (*extp) = NULLEXT;
1673: %}
1674: OPTIONAL
1675: }
1676: %{
1677: if(parm->sra_filter == NULLFILTER)
1678: {
1679: parm->sra_filter = filter_alloc();
1680: flt_def(&(parm->sra_filter));
1681: }
1682: DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchArgumentData"));
1683: %}
1684:
1685: SearchArgument [[P struct ds_search_arg *]]
1686: %{
1687: struct signature sig;
1688: %}
1689: ::=
1690: %{
1691: DLOG(log_dsap, LLOG_TRACE, ("At decode SearchArgument"));
1692: %}
1693: CHOICE
1694: {
1695: SearchArgumentData [[p parm]] ,
1696: SEQUENCE
1697: {
1698: SearchArgumentData [[p parm]] ,
1699: AlgorithmIdentifier [[p &(sig.alg)]],
1700: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
1701: }
1702: %{
1703: parm->sra_common.ca_sig = (struct signature *)
1704: calloc(1, sizeof(sig));
1705: bcopy((char*)&sig, (char*)parm->sra_common.ca_sig, sizeof(sig));
1706: %}
1707: }
1708: %{
1709: DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchArgument"));
1710: %}
1711:
1712: SearchResultData [[P struct ds_search_result *]]
1713: %{
1714: struct ds_search_result **srrp;
1715: EntryInfo **ent_next;
1716: POQ poq_next_s;
1717: POQ * poq_next = &(poq_next_s);
1718: %}
1719: ::=
1720: %{
1721: DLOG(log_dsap, LLOG_TRACE, ("About to decode SearchResultData"));
1722: %}
1723: CHOICE
1724: {
1725: searchInfo
1726: %{
1727: parm->srr_correlated = TRUE;
1728: parm->srr_un.srr_unit = (struct ds_search_unit *) malloc(sizeof(struct ds_search_unit));
1729: parm->CSR_object = NULLDN;
1730: parm->CSR_entries = NULLENTRYINFO;
1731: parm->CSR_limitproblem = LSR_NOLIMITPROBLEM;
1732: parm->CSR_cr = NULLCONTINUATIONREF;
1733: parm->CSR_common.cr_requestor = NULLDN;
1734: parm->CSR_common.cr_aliasdereferenced = FALSE;
1735: ent_next = &(parm->CSR_entries);
1736: %}
1737: SET
1738: {
1739: DistinguishedName [[p &(parm->CSR_object)]]
1740: %{
1741: %}
1742: OPTIONAL ,
1743: entries
1744: [0] SET OF
1745: %{
1746: (*ent_next) = entryinfo_alloc();
1747: %}
1748: EntryInformation [[p (*ent_next)]]
1749: %{
1750: ent_next = &((*ent_next)->ent_next);
1751: %}
1752: %{
1753: (*ent_next) = NULLENTRYINFO;
1754: %} ,
1755: partialOutcomeQualifier
1756: [2] PartialOutcomeQualifier [[p poq_next]]
1757: %{
1758: parm->CSR_limitproblem = poq_next->poq_limitproblem;
1759: parm->CSR_cr = poq_next->poq_cref;
1760: %}
1761: OPTIONAL ,
1762: [30] SecurityParameters [[p ((struct security_parms **) 0)]]
1763: OPTIONAL ,
1764: performer
1765: [29] DistinguishedName [[p &(parm->CSR_common.cr_requestor)]]
1766: %{
1767: %}
1768: OPTIONAL ,
1769: aliasDereferenced
1770: [28] BOOLEAN [[b parm->CSR_common.cr_aliasdereferenced]]
1771: %{
1772: %}
1773: -- DEFAULT FALSE
1774: OPTIONAL
1775: }
1776: %{
1777: %} ,
1778: uncorrelatedSearchInfo
1779: %{
1780: parm->srr_correlated = FALSE;
1781: srrp = &(parm->srr_un.srr_parts);
1782: %}
1783: [0] SET OF
1784: %{
1785: (*srrp) = (struct ds_search_result *) malloc(sizeof(struct ds_search_result));
1786: %}
1787: SearchResult [[p (*srrp)]]
1788: %{
1789: srrp = &((*srrp)->srr_next);
1790: %}
1791: %{
1792: (*srrp)->srr_next = NULLSRR;
1793: %}
1794: }
1795: %{
1796: DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchResultData"));
1797: %}
1798:
1799: SearchResult [[P struct ds_search_result *]]
1800: %{
1801: struct alg_id alg;
1802: %}
1803: ::=
1804: %{
1805: DLOG(log_dsap, LLOG_TRACE, ("At decode SearchResult"));
1806: %}
1807: CHOICE
1808: {
1809: SearchResultData [[p parm]] ,
1810: SEQUENCE
1811: {
1812: SearchResultData [[p parm]] ,
1813: AlgorithmIdentifier [[p &alg]],
1814: BIT STRING
1815: }
1816: }
1817: %{
1818: DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchResult"));
1819: %}
1820:
1821: AddEntryArgumentData [[P struct ds_addentry_arg *]]
1822: %{
1823: struct extension **extp;
1824: struct common_args * ca;
1825: Attr_Sequence attr_tmp;
1826: %}
1827: ::=
1828: %{
1829: DLOG(log_dsap, LLOG_TRACE, ("About to decode AddEntryArgumentData"));
1830: parm->ada_object = NULLDN;
1831: parm->ada_entry = NULLATTR;
1832: ca = &(parm->ada_common);
1833: svc_def(&(ca->ca_servicecontrol));
1834: ca->ca_requestor = NULLDN;
1835: ca->ca_progress.op_resolution_phase = 0;
1836: ca->ca_progress.op_nextrdntoberesolved = 0;
1837: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1838: ca->ca_extensions = NULLEXT;
1839: extp = &(ca->ca_extensions);
1840: ca->ca_security = (struct security_parms *) 0;
1841: ca->ca_sig = (struct signature *) 0;
1842: %}
1843: SET
1844: {
1845: object
1846: [0] DistinguishedName [[p &(parm->ada_object)]]
1847: %{
1848: %} ,
1849: entry
1850: [1] SET OF
1851: %{
1852: attr_tmp = as_comp_alloc();
1853: attr_tmp->attr_value = NULLAV;
1854: attr_tmp->attr_acl = NULLACL_INFO;
1855: attr_tmp->attr_link = NULLATTR;
1856: %}
1857: Attribute [[p attr_tmp]]
1858: %{
1859: parm->ada_entry = as_merge(parm->ada_entry, attr_tmp);
1860: %} ,
1861: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
1862: %{
1863: %}
1864: -- DEFAULT {} ,
1865: OPTIONAL ,
1866: [29] SecurityParameters [[p &(ca->ca_security)]]
1867: -- DEFAULT {} ,
1868: OPTIONAL ,
1869: requestor
1870: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1871: %{
1872: %}
1873: OPTIONAL ,
1874: [27] OperationProgress [[p &(ca->ca_progress)]]
1875: %{
1876: %}
1877: OPTIONAL ,
1878: aliasedRDNs
1879: [26] INTEGER [[i ca->ca_aliased_rdns]]
1880: OPTIONAL ,
1881: extensions
1882: [25] SET OF
1883: %{
1884: (*extp) = ext_alloc();
1885: %}
1886: Extension [[p (*extp)]]
1887: %{
1888: extp = &((*extp)->ext_next);
1889: %}
1890: %{
1891: (*extp) = NULLEXT;
1892: %}
1893: OPTIONAL
1894: }
1895: %{
1896: DLOG(log_dsap, LLOG_TRACE, ("Done decode AddEntryArgumentData"));
1897: %}
1898:
1899: AddEntryArgument [[P struct ds_addentry_arg *]]
1900: %{
1901: struct signature sig;
1902: %}
1903: ::=
1904: %{
1905: DLOG(log_dsap, LLOG_TRACE, ("At decode AddEntryArgument"));
1906: %}
1907: CHOICE
1908: {
1909: AddEntryArgumentData [[p parm]] ,
1910: SEQUENCE
1911: {
1912: AddEntryArgumentData [[p parm]] ,
1913: AlgorithmIdentifier [[p &(sig.alg)]],
1914: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
1915: }
1916: %{
1917: parm->ada_common.ca_sig = (struct signature *)
1918: calloc(1, sizeof(sig));
1919: bcopy((char*)&sig, (char*)parm->ada_common.ca_sig, sizeof(sig));
1920: %}
1921: }
1922: %{
1923: DLOG(log_dsap, LLOG_TRACE, ("Done decode AddEntryArgument"));
1924: %}
1925:
1926: AddEntryResult ::= NULL
1927:
1928: RemoveEntryArgumentData [[P struct ds_removeentry_arg *]]
1929: %{
1930: struct extension **extp;
1931: struct common_args * ca;
1932: %}
1933: ::=
1934: %{
1935: DLOG(log_dsap, LLOG_TRACE, ("About to decode RemoveEntryArgumentData"));
1936: ca = &(parm->rma_common);
1937: svc_def(&(ca->ca_servicecontrol));
1938: ca->ca_requestor = NULLDN;
1939: ca->ca_progress.op_resolution_phase = 0;
1940: ca->ca_progress.op_nextrdntoberesolved = 0;
1941: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
1942: ca->ca_extensions = NULLEXT;
1943: ca->ca_security = (struct security_parms *) 0;
1944: ca->ca_sig = (struct signature *) 0;
1945: extp = &(ca->ca_extensions);
1946: %}
1947: SET
1948: {
1949: object
1950: [0] DistinguishedName [[p &(parm->rma_object)]]
1951: %{
1952: %} ,
1953: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
1954: %{
1955: %}
1956: -- DEFAULT {} ,
1957: OPTIONAL ,
1958: [29] SecurityParameters [[p &(ca->ca_security)]]
1959: -- DEFAULT {} ,
1960: OPTIONAL ,
1961: requestor
1962: [28] DistinguishedName [[p &(ca->ca_requestor)]]
1963: %{
1964: %}
1965: OPTIONAL ,
1966: [27] OperationProgress [[p &(ca->ca_progress)]]
1967: %{
1968: %}
1969: OPTIONAL ,
1970: aliasedRDNs
1971: [26] INTEGER [[i ca->ca_aliased_rdns]]
1972: OPTIONAL ,
1973: extensions
1974: [25] SET OF
1975: %{
1976: (*extp) = ext_alloc();
1977: %}
1978: Extension [[p (*extp)]]
1979: %{
1980: extp = &((*extp)->ext_next);
1981: %}
1982: %{
1983: (*extp) = NULLEXT;
1984: %}
1985: OPTIONAL
1986: }
1987: %{
1988: DLOG(log_dsap, LLOG_TRACE, ("Done decode RemoveEntryArgumentData"));
1989: %}
1990:
1991: RemoveEntryArgument [[P struct ds_removeentry_arg *]]
1992: %{
1993: struct signature sig;
1994: %}
1995: ::=
1996: %{
1997: DLOG(log_dsap, LLOG_TRACE, ("At decode RemoveEntryArgument"));
1998: %}
1999: CHOICE
2000: {
2001: RemoveEntryArgumentData [[p parm]] ,
2002: SEQUENCE
2003: {
2004: RemoveEntryArgumentData [[p parm]] ,
2005: AlgorithmIdentifier [[p &(sig.alg)]],
2006: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
2007: }
2008: %{
2009: parm->rma_common.ca_sig = (struct signature *)
2010: calloc(1, sizeof(sig));
2011: bcopy((char*)&sig, (char*)parm->rma_common.ca_sig, sizeof(sig));
2012: %}
2013: }
2014: %{
2015: DLOG(log_dsap, LLOG_TRACE, ("Done decode RemoveEntryArgument"));
2016: %}
2017:
2018: RemoveEntryResult ::= NULL
2019:
2020: ModifyEntryArgumentData [[P struct ds_modifyentry_arg *]]
2021: %{
2022: struct extension **extp;
2023: struct common_args * ca;
2024: struct entrymod **em_next;
2025: %}
2026: ::=
2027: %{
2028: DLOG(log_dsap, LLOG_TRACE, ("About to decode ModifyEntryArgumentData"));
2029: parm->mea_object = NULLDN;
2030: parm->mea_changes = NULLMOD;
2031: em_next = &(parm->mea_changes);
2032: ca = &(parm->mea_common);
2033: svc_def(&(ca->ca_servicecontrol));
2034: ca->ca_requestor = NULLDN;
2035: ca->ca_progress.op_resolution_phase = 0;
2036: ca->ca_progress.op_nextrdntoberesolved = 0;
2037: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
2038: ca->ca_extensions = NULLEXT;
2039: ca->ca_security = (struct security_parms *) 0;
2040: ca->ca_sig = (struct signature *) 0;
2041: extp = &(ca->ca_extensions);
2042: %}
2043: SET
2044: {
2045: object
2046: [0] DistinguishedName [[p &(parm->mea_object)]]
2047: %{
2048: %} ,
2049: changes
2050: [1] SEQUENCE OF
2051: %{
2052: (*em_next) = em_alloc();
2053: %}
2054: EntryModification [[p (*em_next)]]
2055: %{
2056: em_next = &((*em_next)->em_next);
2057: %}
2058: %{
2059: (*em_next) = NULLMOD;
2060: %} ,
2061: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
2062: %{
2063: %}
2064: -- DEFAULT {} ,
2065: OPTIONAL ,
2066: [29] SecurityParameters [[p &(ca->ca_security)]]
2067: -- DEFAULT {} ,
2068: OPTIONAL ,
2069: requestor
2070: [28] DistinguishedName [[p &(ca->ca_requestor)]]
2071: %{
2072: %}
2073: OPTIONAL ,
2074: [27] OperationProgress [[p &(ca->ca_progress)]]
2075: %{
2076: %}
2077: OPTIONAL ,
2078: aliasedRDNs
2079: [26] INTEGER [[i ca->ca_aliased_rdns]]
2080: OPTIONAL ,
2081: extensions
2082: [25] SET OF
2083: %{
2084: (*extp) = ext_alloc();
2085: %}
2086: Extension [[p (*extp)]]
2087: %{
2088: extp = &((*extp)->ext_next);
2089: %}
2090: %{
2091: (*extp) = NULLEXT;
2092: %}
2093: OPTIONAL
2094: }
2095: %{
2096: DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyEntryArgumentData"));
2097: %}
2098:
2099: ModifyEntryArgument [[P struct ds_modifyentry_arg *]]
2100: %{
2101: struct signature sig;
2102: %}
2103: ::=
2104: %{
2105: DLOG(log_dsap, LLOG_TRACE, ("At decode ModifyEntryArgument"));
2106: %}
2107: CHOICE
2108: {
2109: ModifyEntryArgumentData [[p parm]] ,
2110: SEQUENCE
2111: {
2112: ModifyEntryArgumentData [[p parm]] ,
2113: AlgorithmIdentifier [[p &(sig.alg)]],
2114: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
2115: }
2116: %{
2117: parm->mea_common.ca_sig = (struct signature *)
2118: calloc(1, sizeof(struct signature));
2119: bcopy((char*)&sig, (char*)parm->mea_common.ca_sig, sizeof(sig));
2120: %}
2121: }
2122: %{
2123: DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyEntryArgument"));
2124: %}
2125:
2126: ModifyEntryResult ::= NULL
2127:
2128: ModifyRDNArgumentData [[P struct ds_modifyrdn_arg *]]
2129: %{
2130: struct extension **extp;
2131: struct common_args * ca;
2132: %}
2133: ::=
2134: %{
2135: DLOG(log_dsap, LLOG_TRACE, ("About to decode ModifyRDNArgumentData"));
2136: parm->mra_object = NULLDN;
2137: parm->mra_newrdn = NULLRDN;
2138: parm->deleterdn = FALSE;
2139: ca = &(parm->mra_common);
2140: svc_def(&(ca->ca_servicecontrol));
2141: ca->ca_requestor = NULLDN;
2142: ca->ca_progress.op_resolution_phase = 0;
2143: ca->ca_progress.op_nextrdntoberesolved = 0;
2144: ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED;
2145: ca->ca_security = (struct security_parms *) 0;
2146: ca->ca_sig = (struct signature *) 0;
2147: ca->ca_extensions = NULLEXT;
2148: extp = &(ca->ca_extensions);
2149: %}
2150: SET
2151: {
2152: object
2153: [0] DistinguishedName [[p &(parm->mra_object)]]
2154: %{
2155: %} ,
2156: newRDN
2157: [1] RelativeDistinguishedName [[p &(parm->mra_newrdn)]]
2158: %{
2159: %} ,
2160: deleteRDN
2161: [2] BOOLEAN [[b parm->deleterdn]]
2162: %{
2163: %}
2164: -- DEFAULT FALSE ,
2165: OPTIONAL ,
2166: [30] ServiceControls [[p &(ca->ca_servicecontrol)]]
2167: %{
2168: %}
2169: -- DEFAULT {} ,
2170: OPTIONAL ,
2171: [29] SecurityParameters [[p &(ca->ca_security)]]
2172: -- DEFAULT {} ,
2173: OPTIONAL ,
2174: requestor
2175: [28] DistinguishedName [[p &(ca->ca_requestor)]]
2176: %{
2177: %}
2178: OPTIONAL ,
2179: [27] OperationProgress [[p &(ca->ca_progress)]]
2180: %{
2181: %}
2182: OPTIONAL ,
2183: aliasedRDNs
2184: [26] INTEGER [[i ca->ca_aliased_rdns]]
2185: OPTIONAL ,
2186: extensions
2187: [25] SET OF
2188: %{
2189: (*extp) = ext_alloc();
2190: %}
2191: Extension [[p (*extp)]]
2192: %{
2193: extp = &((*extp)->ext_next);
2194: %}
2195: %{
2196: (*extp) = NULLEXT;
2197: %}
2198: OPTIONAL
2199: }
2200: %{
2201: DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyRDNArgumentData"));
2202: %}
2203:
2204: ModifyRDNArgument [[P struct ds_modifyrdn_arg *]]
2205: %{
2206: struct signature sig;
2207: %}
2208: ::=
2209: %{
2210: DLOG(log_dsap, LLOG_TRACE, ("At decode ModifyRDNArgument"));
2211: %}
2212: CHOICE
2213: {
2214: ModifyRDNArgumentData [[p parm]] ,
2215: SEQUENCE
2216: {
2217: ModifyRDNArgumentData [[p parm]] ,
2218: AlgorithmIdentifier [[p &(sig.alg)]],
2219: BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]]
2220: }
2221: %{
2222: parm->mra_common.ca_sig = (struct signature *)
2223: calloc(1, sizeof(sig));
2224: bcopy((char *)&sig, (char *)parm->mra_common.ca_sig, sizeof(sig));
2225: %}
2226: }
2227: %{
2228: DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyRDNArgument"));
2229: %}
2230:
2231: ModifyRDNResult ::= NULL
2232:
2233: DirectoryBindError [[P struct ds_bind_error *]]
2234: %{
2235: %}
2236: ::=
2237: %{
2238: DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindError"));
2239: parm->dbe_version = DBA_VERSION_V1988;
2240: %}
2241: SET
2242: {
2243: versions
2244: [0] Versions [[p &(parm->dbe_version)]]
2245: %{
2246: %}
2247: -- DEFAULT v1988 ,
2248: OPTIONAL ,
2249: CHOICE
2250: {
2251: serviceError
2252: [1] ServiceProblem [[p &(parm->dbe_value)]]
2253: %{
2254: parm->dbe_type = DBE_TYPE_SERVICE;
2255: %} ,
2256: securityError
2257: [2] SecurityProblem [[p &(parm->dbe_value)]]
2258: %{
2259: parm->dbe_type = DBE_TYPE_SECURITY;
2260: %}
2261: }
2262: %{
2263: %}
2264: }
2265: %{
2266: DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindError"));
2267: %}
2268:
2269: AbandonFailedParm [[P struct DSE_abandon_fail *]]
2270: %{
2271: %}
2272: ::=
2273: %{
2274: DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonFailedParm"));
2275: parm->DSE_ab_problem = 0;
2276: parm->DSE_ab_invokeid = 0;
2277: %}
2278: SET
2279: %{
2280: %}
2281: {
2282: problem
2283: [0] AbandonProblem [[p &(parm->DSE_ab_problem)]]
2284: %{
2285: %} ,
2286: operation
2287: [1] InvokeID [[p &(parm->DSE_ab_invokeid)]]
2288: %{
2289: %}
2290: }
2291: %{
2292: DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonFailedParm"));
2293: %}
2294:
2295: AttributeErrorParm [[P struct DSE_attribute *]]
2296: %{
2297: struct DSE_at_problem atp_next;
2298: struct DSE_at_problem *atp;
2299: int not_first_problem = FALSE;
2300: AttributeValue av;
2301: AttributeType at;
2302: %}
2303: ::=
2304: %{
2305: DLOG(log_dsap, LLOG_TRACE, ("About to decode AttributeErrorParm"));
2306: av = AttrV_alloc();
2307: parm->DSE_at_name = NULLDN;
2308: parm->DSE_at_plist.DSE_at_what = 0;
2309: parm->DSE_at_plist.DSE_at_type = NULLAttrT;
2310: parm->DSE_at_plist.DSE_at_value = NULLAttrV;
2311: parm->DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM;
2312: atp = &(parm->DSE_at_plist);
2313: %}
2314: SET
2315: %{
2316: %}
2317: {
2318: object
2319: [0] Name [[p &(parm->DSE_at_name)]]
2320: %{
2321: %} ,
2322: problems
2323: [1] SET OF
2324: %{
2325: %}
2326: SEQUENCE
2327: %{
2328: atp_next.DSE_at_value = NULLAttrV;
2329: atp_next.DSE_at_type = NULLAttrT;
2330: %}
2331: {
2332: problem
2333: [0] AttributeProblem [[p &(atp_next.DSE_at_what)]]
2334: %{
2335: %} ,
2336: type
2337: [1] AttributeType [[p &atp_next.DSE_at_type ]]
2338: %{
2339: %} ,
2340: value
2341: [2] AttributeValue [[p av]]
2342: %{
2343: AttrV_decode (atp_next.DSE_at_type,av);
2344: atp_next.DSE_at_value = av;
2345: av = AttrV_alloc ();
2346: %}
2347: OPTIONAL
2348: }
2349: %{
2350: if(not_first_problem)
2351: {
2352: atp->dse_at_next = (struct DSE_at_problem *) smalloc(sizeof(struct DSE_at_problem));
2353: atp = atp->dse_at_next;
2354: }
2355: atp->DSE_at_what = atp_next.DSE_at_what;
2356: atp->DSE_at_type = atp_next.DSE_at_type;
2357: atp->DSE_at_value = atp_next.DSE_at_value;
2358: not_first_problem = TRUE;
2359: %}
2360: %{
2361: atp->dse_at_next = DSE_AT_NOPROBLEM;
2362: %}
2363: }
2364: %{
2365: free ((char*) av);
2366: free ((char*) at);
2367: DLOG(log_dsap, LLOG_TRACE, ("Done decode AttributeErrorParm"));
2368: %}
2369:
2370: NameErrorParm [[P struct DSE_name *]]
2371: %{
2372: %}
2373: ::=
2374: %{
2375: DLOG(log_dsap, LLOG_TRACE, ("About to decode NameErrorParm"));
2376: parm->DSE_na_problem = 0;
2377: parm->DSE_na_matched = NULLDN;
2378: %}
2379: SET
2380: %{
2381: %}
2382: {
2383: problem
2384: [0] NameProblem [[p &(parm->DSE_na_problem)]]
2385: %{
2386: %} ,
2387: matched
2388: [1] Name [[p &(parm->DSE_na_matched)]]
2389: %{
2390: %}
2391: }
2392: %{
2393: DLOG(log_dsap, LLOG_TRACE, ("Done decode NameErrorParm"));
2394: %}
2395:
2396: ReferralParm [[P struct DSE_referral *]]
2397: %{
2398: %}
2399: ::=
2400: %{
2401: DLOG(log_dsap, LLOG_TRACE, ("About to decode ReferralParm"));
2402: parm->DSE_ref_prefix = NULLDN;
2403: parm->DSE_ref_candidates = (ContinuationRef) smalloc(sizeof(continuation_ref));
2404: %}
2405: SET
2406: %{
2407: %}
2408: {
2409: candidate
2410: [0] ContinuationReference [[p parm->DSE_ref_candidates]]
2411: %{
2412: %}
2413: }
2414: %{
2415: DLOG(log_dsap, LLOG_TRACE, ("Done decode ReferralParm"));
2416: %}
2417:
2418: SecurityErrorParm [[P struct DSE_security *]]
2419: %{
2420: %}
2421: ::=
2422: %{
2423: DLOG(log_dsap, LLOG_TRACE, ("About to decode SecurityErrorParm"));
2424: parm->DSE_sc_problem = 0;
2425: %}
2426: SET
2427: %{
2428: %}
2429: {
2430: problem
2431: [0] SecurityProblem [[p &(parm->DSE_sc_problem)]]
2432: %{
2433: %}
2434: }
2435: %{
2436: DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityErrorParm"));
2437: %}
2438:
2439: ServiceErrorParm [[P struct DSE_service *]]
2440: %{
2441: %}
2442: ::=
2443: %{
2444: DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceErrorParm"));
2445: parm->DSE_sv_problem = 0;
2446: %}
2447: SET
2448: %{
2449: %}
2450: {
2451: problem
2452: [0] ServiceProblem [[p &(parm->DSE_sv_problem)]]
2453: %{
2454: %}
2455: }
2456: %{
2457: DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceErrorParm"));
2458: %}
2459:
2460: UpdateErrorParm [[P struct DSE_update *]]
2461: %{
2462: %}
2463: ::=
2464: %{
2465: DLOG(log_dsap, LLOG_TRACE, ("About to decode UpdateErrorParm"));
2466: parm->DSE_up_problem = 0;
2467: %}
2468: SET
2469: %{
2470: %}
2471: {
2472: problem
2473: [0] UpdateProblem [[p &(parm->DSE_up_problem)]]
2474: %{
2475: %}
2476: }
2477: %{
2478: DLOG(log_dsap, LLOG_TRACE, ("Done decode UpdateErrorParm"));
2479: %}
2480:
2481: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.