Annotation of 43BSDReno/contrib/isode-beta/dsap/x500as/das-dec.py, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.