|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 68712 (0x10c68) Types: TextFile Names: »das-dec.py«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/dsap/x500as/das-dec.py«
-- das-dec.py - manually augmented DirectoryAbstractService module -- $Header: /f/osi/dsap/x500as/RCS/das-dec.py,v 7.0 89/11/23 21:50:06 mrose Rel $ -- -- -- $Log: das-dec.py,v $ -- Revision 7.0 89/11/23 21:50:06 mrose -- Release 6.0 -- -- -- NOTICE -- -- Acquisition, use, and distribution of this module and related -- materials are subject to the restrictions of a license agreement. -- Consult the Preface in the User's Manual for the full terms of -- this agreement. -- -- DAS { joint-iso-ccitt ds(5) modules(1) directoryAbstractService(2) } DEFINITIONS ::= %{ #include "quipu/util.h" #include "quipu/entry.h" #include "quipu/common.h" #include "quipu/bind.h" extern LLog * log_dsap; #define decode_UNIV_UTCTime parse_UNIV_UTCTime %} PREFIXES encode decode print BEGIN -- EXPORTS -- DirectoryBindArgument , -- ReadArgument , -- ReadResult , -- AbandonArgument , -- AbandonResult , -- CompareArgument , -- CompareResult , -- ListArgument , -- ListResult , -- SearchArgument , -- SearchResult , -- AddEntryArgument , -- AddEntryResult , -- RemoveEntryArgument , -- RemoveEntryResult , -- ModifyEntryArgument , -- ModifyEntryResult , -- ModifyRDNArgument , -- ModifyRDNResult , -- AbandonFailedParm , -- AttributeErrorParm , -- NameErrorParm , -- ReferralParm , -- SecurityErrorParm , -- ServiceErrorParm , -- UpdateErrorParm; IMPORTS Attribute , AttributeType , AttributeValue , AttributeValueAssertion , DistinguishedName , Name , RelativeDistinguishedName FROM IF { joint-iso-ccitt ds(5) modules(1) informationFramework(1) } OperationProgress , ContinuationReference , InvokeID FROM DO { joint-iso-ccitt ds(5) modules(1) distributedOperations(3) } Certificate , CertificationPath , AlgorithmIdentifier FROM AF { joint-iso-ccitt ds(5) modules(1) authenticationFramework(7) }; DECODER decode SimpleCredentials [[P struct ds_bind_arg *]] %{ char *passwd; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode SimpleCredentials (DAS)")); parm->dba_dn = NULLDN; parm->dba_passwd_len = 0; parm->dba_passwd[0] = '\0'; parm->dba_time1 = NULLCP; parm->dba_time2 = NULLCP; parm->dba_r1.value = NULLCP; parm->dba_r1.n_bits = 0; parm->dba_r2.value = NULLCP; parm->dba_r2.n_bits = 0; parm->dba_auth_type = DBA_AUTH_NONE; %} SEQUENCE { name [0] DistinguishedName [[p &(parm->dba_dn)]] %{ %} , validity [1] SET %{ %} { time1 [0] UTCTime [[s parm -> dba_time1]] %{ %} OPTIONAL , time2 [1] UTCTime [[s parm -> dba_time2]] %{ %} OPTIONAL , random1 [2] BIT STRING [[x parm->dba_r1.value $ parm->dba_r1.n_bits]] OPTIONAL , random2 [3] BIT STRING [[x parm->dba_r2.value $ parm->dba_r2.n_bits]] OPTIONAL } %{ parm->dba_auth_type = DBA_AUTH_PROTECTED; %} OPTIONAL , password [2] OCTET STRING [[o passwd $ parm->dba_passwd_len]] %{ bcopy(passwd, parm->dba_passwd, parm->dba_passwd_len); free(passwd); if (parm->dba_auth_type == DBA_AUTH_NONE) parm->dba_auth_type = DBA_AUTH_SIMPLE; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SimpleCredentials")); %} TokenToSign [[P struct ds_bind_arg *]] %{ struct alg_id alg; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode TokenToSign (DAS)")); %} SEQUENCE { algorithm [0] AlgorithmIdentifier [[p &alg]], name [1] DistinguishedName [[p &(parm->dba_dn)]] %{ %} , time [2] UTCTime [[s parm->dba_time1]], random [3] BIT STRING [[x parm->dba_r1.value $ parm->dba_r1.n_bits ]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode TokenToSign (DAS)")); %} Token [[P struct ds_bind_arg *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode Token (DAS)")); parm->dba_sig = (struct signature *) calloc(1, sizeof(struct signature)); %} SEQUENCE { TokenToSign [[p parm]], AlgorithmIdentifier [[p &(parm->dba_sig->alg)]], BIT STRING [[x parm->dba_sig->encrypted $ parm->dba_sig->n_bits]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode Token (DAS)")); %} StrongCredentials [[P struct ds_bind_arg *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode StrongCredentials (DAS)")); %} SET { certificationPath [0] CertificationPath [[p &(parm->dba_cpath)]] OPTIONAL , bindToken [1] Token [[p parm]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode StrongCredentials (DAS)")); %} Credentials [[P struct ds_bind_arg *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode Credentials (DAS)")); %} CHOICE { simple [0] SimpleCredentials [[p parm]] %{ %} , strong [1] StrongCredentials [[p parm]] %{ parm->dba_auth_type = DBA_AUTH_STRONG; %} , externalProcedure [2] EXTERNAL %{ parm->dba_auth_type = DBA_AUTH_EXTERNAL; %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode Credentials (DAS)")); %} Versions [[P int*]] %{ int ver_len; char *ver_bits; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode Versions")); %} BIT STRING [[x ver_bits $ ver_len]] { v1988(0) } %{ (*parm) = strb2int(ver_bits ,ver_len); /* interworking HACK 'till 1992 !!! */ (*parm) = DBA_VERSION_V1988; free (ver_bits); DLOG(log_dsap, LLOG_TRACE, ("Done decode Versions")); %} SecurityProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode SecurityProblem")); (*parm) = 0; %} INTEGER [[i (*parm)]] { inappropriateAuthentication(1) , invalidCredentials(2) , insufficientAccessRights(3) , invalidSignature(4) , protectionRequired(5) , noInformation(6) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityProblem")); %} ServiceProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceProblem")); (*parm) = 0; %} INTEGER [[i (*parm)]] { busy(1) , unavailable(2) , unwillingToPerform(3) , chainingRequired(4) , unableToProceed(5) , invalidReference(6) , timeLimitExceeded(7) , administrativeLimitExceeded(8) , loopDetected(9) , unavailableCriticalExtension(10) , outOfScope(11) , ditError(12) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceProblem")); %} EntryInformationSelection [[P struct entryinfoselection *]] %{ Attr_Sequence *attr_link; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryInformationSelection")); parm->eis_allattributes = TRUE; parm->eis_select = NULLATTR; parm->eis_infotypes = EIS_ATTRIBUTESANDVALUES; attr_link = &(parm->eis_select); %} SET { attributeTypes CHOICE { allAttributes [0] NULL %{ parm->eis_allattributes = TRUE; %} , select [1] SET OF %{ (*attr_link) = as_comp_alloc(); (*attr_link)->attr_value = NULLAV; (*attr_link)->attr_acl = NULLACL_INFO; %} AttributeType [[p &((*attr_link)->attr_type)]] %{ attr_link = &((*attr_link)->attr_link); %} %{ (*attr_link) = NULLATTR; parm->eis_allattributes = FALSE; %} } %{ %} -- DEFAULT allAttributes NULL , OPTIONAL , infoTypes [2] INTEGER [[i parm->eis_infotypes]] { attributeTypesOnly(0) , attributeTypesAndValues(1) } %{ %} -- DEFAULT attributeTypesAndValues OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryInformationSelection")); %} ServiceControls [[P struct svccontrol *]] %{ char *opt_bits; int opt_len; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceControls")); parm->svc_options = 0; parm->svc_prio = SVC_PRIO_MED; parm->svc_timelimit = SVC_NOTIMELIMIT; parm->svc_sizelimit = SVC_NOSIZELIMIT; parm->svc_scopeofreferral = SVC_REFSCOPE_NONE; %} SET { options [0] BIT STRING [[x opt_bits $ opt_len]] { preferChaining(0) , chainingProhibited(1) , localScope(2) , dontUseCopy(3) , dontDereferenceAliases(4) } %{ parm->svc_options = strb2int(opt_bits ,opt_len); free (opt_bits); %} -- DEFAULT {} , OPTIONAL , priority [1] INTEGER [[i parm->svc_prio]] { low(0) , medium(1) , high(2) } %{ %} -- DEFAULT medium , OPTIONAL , timeLimit [2] INTEGER [[i parm->svc_timelimit]] %{ %} OPTIONAL , sizeLimit [3] INTEGER [[i parm->svc_sizelimit]] %{ %} OPTIONAL , scopeOfReferral [4] INTEGER [[i parm->svc_scopeofreferral]] { dmd(0) , country(1) } OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceControls")); %} ProtectionRequest [[P int *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ProtectionRequest")); %} INTEGER [[i (*parm)]] { none (0) , signed (1) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ProtectionRequest")); %} SecurityParameters [[P struct security_parms **]] %{ struct security_parms *dummy = (struct security_parms *) 0; int prot; struct random_number random; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode SecurityParameters")); if (parm == (struct security_parms **) 0) parm = &dummy; (*parm) = (struct security_parms *) calloc(1, sizeof(struct security_parms)); (*parm)->sp_path = (struct certificate_list *) 0; (*parm)->sp_name = NULLDN; (*parm)->sp_time = NULLCP; (*parm)->sp_random = (struct random_number *) 0; (*parm)->sp_target = (char) 0; %} SET { certificationPath [0] CertificationPath [[p &((*parm)->sp_path)]] OPTIONAL , name [1] DistinguishedName [[p &((*parm)->sp_name)]] OPTIONAL , time [2] UTCTime [[s ((*parm)->sp_time)]] OPTIONAL , random [3] BIT STRING [[x random.value $ random.n_bits]] %{ (*parm)->sp_random = (struct random_number *) calloc(1, sizeof(struct random_number)); bcopy((char *)&random, (char *)&((*parm)->sp_random), sizeof(struct random_number)); %} OPTIONAL , target [4] ProtectionRequest [[p &prot]] %{ (*parm)->sp_target = (char) prot; %} OPTIONAL } %{ if (dummy) cfree((char *) dummy); DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityParameters")); %} Extension [[P struct extension *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode Extension")); LLOG(log_dsap, LLOG_FATAL, ("Some smartass Extension!!!")); parm->ext_critical = FALSE; parm->ext_item = NULLPE; %} SET { identifier [0] INTEGER [[i parm->ext_id]] , critical [1] BOOLEAN [[b parm->ext_critical]] -- DEFAULT FALSE , OPTIONAL , item [2] ANY DEFINED BY identifier [[a parm->ext_item]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode Extension")); %} EntryInformation [[P struct entrystruct *]] %{ Attr_Sequence attr_tmp; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryInformation")); parm->ent_dn = NULLDN; parm->ent_attr = NULLATTR; parm->ent_iscopy = E_DATA_MASTER; parm->ent_next = NULLENTRYINFO; %} SEQUENCE { DistinguishedName [[p &(parm->ent_dn)]] %{ %} , fromEntry BOOLEAN [[b parm->ent_iscopy]] %{ %} -- DEFAULT TRUE , OPTIONAL , SET OF %{ attr_tmp = as_comp_alloc(); attr_tmp->attr_value = NULLAV; attr_tmp->attr_acl = NULLACL_INFO; attr_tmp->attr_link = NULLATTR; %} CHOICE { AttributeType [[p &(attr_tmp->attr_type)]] %{ %} , Attribute [[p attr_tmp]] %{ %} } %{ parm->ent_attr = as_merge(parm->ent_attr, attr_tmp); %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryInformation")); %} LimitProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode LimitProblem")); %} INTEGER [[i (*parm)]] { timeLimitExceeded(0) , sizeLimitExceeded(1) , administrativeLimitExceeded(2) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode LimitProblem")); %} PartialOutcomeQualifier [[P struct part_outcome *]] %{ ContinuationRef *crefp; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode PartialOutcomeQualifier")); parm->poq_limitproblem = LSR_NOLIMITPROBLEM; parm->poq_cref = NULLCONTINUATIONREF; crefp = &(parm->poq_cref); %} SET { limitProblem [0] LimitProblem [[p &(parm->poq_limitproblem)]] %{ %} OPTIONAL , unexplored [1] SET OF %{ (*crefp) = (ContinuationRef) smalloc(sizeof(continuation_ref)); %} ContinuationReference [[p (*crefp)]] %{ crefp = &((*crefp)->cr_next); %} %{ (*crefp) = NULLCONTINUATIONREF; %} OPTIONAL , unavailableCriticalExtensions [2] BOOLEAN [[b parm->poq_no_ext]] -- DEFAULT FALSE OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode PartialOutcomeQualifier")); %} FilterItem [[P struct filter_item *]] %{ AV_Sequence * avs_initial; AV_Sequence * avs_any; AV_Sequence * avs_final; AttributeValue av_next; Filter_Substrings *subs_next; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode FilterItem")); %} CHOICE { equality %{ parm->fi_type = FILTERITEM_EQUALITY; %} [0] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]] %{ %} , substrings %{ parm->fi_type = FILTERITEM_SUBSTRINGS; subs_next = &(parm->fi_un.fi_un_substrings); subs_next->fi_sub_type = AttrT_alloc(); subs_next->fi_sub_initial = NULLAV; subs_next->fi_sub_any = NULLAV; subs_next->fi_sub_final = NULLAV; avs_initial = &(subs_next->fi_sub_initial); avs_any = &(subs_next->fi_sub_any); avs_final = &(subs_next->fi_sub_final); %} [1] SEQUENCE { type AttributeType [[p subs_next->fi_sub_type]] %{ %} , strings SEQUENCE OF %{ av_next = AttrV_alloc(); %} CHOICE { initial [0] AttributeValue [[p av_next]] %{ (*avs_initial) = avs_comp_new(av_next); avs_initial = &((*avs_initial)->avseq_next); (*avs_initial) = NULLAV; %} , any [1] AttributeValue [[p av_next]] %{ (*avs_any) = avs_comp_new(av_next); avs_any = &((*avs_any)->avseq_next); (*avs_any) = NULLAV; %} , final [2] AttributeValue [[p av_next]] %{ (*avs_final) = avs_comp_new(av_next); avs_final = &((*avs_final)->avseq_next); (*avs_final) = NULLAV; %} } %{ %} %{ %} } %{ %} , greaterOrEqual %{ parm->fi_type = FILTERITEM_GREATEROREQUAL; %} [2] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]] %{ %} , lessOrEqual %{ parm->fi_type = FILTERITEM_LESSOREQUAL; %} [3] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]] %{ %} , present %{ parm->fi_type = FILTERITEM_PRESENT; parm->fi_un.fi_un_type = AttrT_alloc(); %} [4] AttributeType [[p parm->fi_un.fi_un_type]] %{ %} , approximateMatch %{ parm->fi_type = FILTERITEM_APPROX; %} [5] AttributeValueAssertion [[p &(parm->fi_un.fi_un_ava)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode FilterItem")); %} Filter [[P struct filter *]] %{ Filter *flt_next; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode Filter")); parm->flt_next = NULLFILTER; flt_next = &(parm->flt_un.flt_un_filter); (*flt_next) = NULLFILTER; %} CHOICE { item %{ parm->flt_type = FILTER_ITEM; %} [0] FilterItem [[p &(parm->flt_un.flt_un_item)]] %{ %} , and %{ parm->flt_type = FILTER_AND; %} [1] SET OF %{ (*flt_next) = filter_alloc(); %} Filter [[p (*flt_next)]] %{ flt_next = &((*flt_next)->flt_next); %} %{ (*flt_next) = NULLFILTER; %} , or %{ parm->flt_type = FILTER_OR; %} [2] SET OF %{ (*flt_next) = filter_alloc(); %} Filter [[p (*flt_next)]] %{ flt_next = &((*flt_next)->flt_next); %} %{ (*flt_next) = NULLFILTER; %} , not %{ parm->flt_type = FILTER_NOT; parm->flt_next = NULLFILTER; (*flt_next) = filter_alloc(); %} [3] Filter [[p (*flt_next)]] %{ %} %{ (*flt_next)->flt_next = NULLFILTER; %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode Filter")); %} EntryModification [[P struct entrymod *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode EntryModification")); parm->em_type = 0; parm->em_what = NULLATTR; parm->em_next = NULL; %} CHOICE { addAttribute %{ parm->em_type = EM_ADDATTRIBUTE; parm->em_what = as_comp_alloc(); %} [0] Attribute [[p parm->em_what]] %{ %} , removeAttribute %{ parm->em_type = EM_REMOVEATTRIBUTE; parm->em_what = as_comp_new(NULLAttrT ,NULLAV ,NULLACL_INFO); %} [1] AttributeType [[p &(parm->em_what->attr_type)]] %{ %} , addValues %{ parm->em_type = EM_ADDVALUES; parm->em_what = as_comp_alloc(); %} [2] Attribute [[p parm->em_what]] %{ %} , removeValues %{ parm->em_type = EM_REMOVEVALUES; parm->em_what = as_comp_alloc(); %} [3] Attribute [[p parm->em_what]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode EntryModification")); %} AbandonProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonProblem")); %} INTEGER [[i (*parm)]] { noSuchOperation(1) , tooLate(2) , cannotAbandon(3) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonProblem")); %} AttributeProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AttributeProblem")); %} INTEGER [[i (*parm)]] { noSuchAttributeOrValue(1) , invalidAttributeSyntax(2) , undefinedAttributeType(3) , inappropriateMatching(4) , constraintViolation(5) , attributeOrValueAlreadyExists(6) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AttributeProblem")); %} NameProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode NameProblem")); %} INTEGER [[i (*parm)]] { noSuchObject(1) , aliasProblem(2) , invalidAttributeSyntax(3) , aliasDereferencingProblem(4) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode NameProblem")); %} UpdateProblem [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode UpdateProblem")); %} INTEGER [[i (*parm)]] { namingViolation(1) , objectClassViolation(2) , notAllowedOnNonLeaf(3) , notAllowedOnRDN(4) , entryAlreadyExists(5) , affectsMultipleDSAs(6) , objectClassModificationProhibited(7) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode UpdateProblem")); %} DirectoryBindArgument [[P struct ds_bind_arg *]] %{ struct simple_creds usc_s; struct simple_creds * usc = &(usc_s); %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindArgument")); parm->dba_dn = usc->usc_dn = NULLDN; parm->dba_passwd_len = usc->usc_passwd_len = 0; parm->dba_auth_type = DBA_AUTH_NONE; usc->usc_passwd = NULL; usc->usc_time1 = NULL; usc->usc_time2 = NULL; parm->dba_version = DBA_VERSION_V1988; %} SET { credentials [0] Credentials [[p parm]] %{ %} OPTIONAL , versions [1] Versions [[p &(parm->dba_version)]] %{ %} -- DEFAULT v1988 OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindArgument")); %} DirectoryBindResult [[P struct ds_bind_arg *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindResult")); %} DirectoryBindArgument [[p parm]] %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindResult")); %} ReadArgumentData [[P struct ds_read_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ReadArgumentData")); parm->rda_object = NULLDN; eis_def(&(parm->rda_eis)); ca = &(parm->rda_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { object [0] Name [[p &(parm->rda_object)]] %{ %} , selection [1] EntryInformationSelection [[p &(parm->rda_eis)]] %{ %} -- DEFAULT {} , OPTIONAL , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadArgumentData")); %} ReadArgument [[P struct ds_read_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ReadArgument")); %} CHOICE { ReadArgumentData [[p parm]] , SEQUENCE { ReadArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->rda_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char *)&sig, (char *)parm->rda_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadArgument")); %} ReadResultData [[P struct ds_read_result *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ReadResultData")); parm->rdr_entry.ent_dn = NULLDN; parm->rdr_entry.ent_attr = NULLATTR; parm->rdr_entry.ent_iscopy = 0; parm->rdr_entry.ent_next = NULLENTRYINFO; parm->rdr_common.cr_requestor = NULLDN; parm->rdr_common.cr_aliasdereferenced = FALSE; %} SET { entry [0] EntryInformation [[p &(parm->rdr_entry)]] %{ %} , [30] SecurityParameters [[p ((struct security_parms **) 0)]] OPTIONAL , performer [29] DistinguishedName [[p &(parm->rdr_common.cr_requestor)]] %{ %} OPTIONAL , aliasDereferenced [28] BOOLEAN [[b parm->rdr_common.cr_aliasdereferenced]] %{ %} -- DEFAULT FALSE OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadResultData")); %} ReadResult [[P struct ds_read_result *]] %{ struct alg_id alg; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ReadResult")); %} CHOICE { ReadResultData [[p parm]] , SEQUENCE { ReadResultData [[p parm]] , AlgorithmIdentifier [[p &alg]], BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReadResult")); %} CompareArgumentData [[P struct ds_compare_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode CompareArgumentData")); parm->cma_object = NULLDN; parm->cma_purported.ava_type = NULLAttrT; parm->cma_purported.ava_value = NULLAttrV; ca = &(parm->cma_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { object [0] Name [[p &(parm->cma_object)]] %{ %} , purported [1] AttributeValueAssertion [[p &(parm->cma_purported)]] %{ %} , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareArgumentData")); %} CompareArgument [[P struct ds_compare_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode CompareArgument")); %} CHOICE { CompareArgumentData [[p parm]] , SEQUENCE { CompareArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->cma_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char*)&sig, (char*)parm->cma_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareArgument")); %} CompareResultData [[P struct ds_compare_result *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode CompareResultData")); parm->cmr_object = NULLDN; parm->cmr_matched = 0; parm->cmr_iscopy = E_DATA_MASTER; parm->cmr_common.cr_requestor = NULLDN; parm->cmr_common.cr_aliasdereferenced = FALSE; %} SET { DistinguishedName [[p &(parm->cmr_object)]] %{ %} OPTIONAL , matched [0] BOOLEAN [[b parm->cmr_matched]] %{ %} , fromEntry [1] BOOLEAN [[b parm->cmr_iscopy]] %{ %} -- DEFAULT TRUE , OPTIONAL , [30] SecurityParameters [[p ((struct security_parms **) 0)]] OPTIONAL , performer [29] DistinguishedName [[p &(parm->cmr_common.cr_requestor)]] %{ %} OPTIONAL , aliasDereferenced [28] BOOLEAN [[b parm->cmr_common.cr_aliasdereferenced]] %{ %} -- DEFAULT FALSE OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareResultData")); %} CompareResult [[P struct ds_compare_result *]] %{ struct alg_id alg; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode CompareResult")); %} CHOICE { CompareResultData [[p parm]] , SEQUENCE { CompareResultData [[p parm]] , AlgorithmIdentifier [[p &alg]], BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode CompareResult")); %} AbandonArgument [[P struct ds_abandon_arg *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonArgument")); parm->aba_invokeid = 0; %} SEQUENCE { invokeID [0] InvokeID [[p &(parm->aba_invokeid)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonArgument")); %} AbandonResult ::= NULL ListArgumentData [[P struct ds_list_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ListArgumentData")); parm->lsa_object = NULLDN; ca = &(parm->lsa_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { object [0] Name [[p &(parm->lsa_object)]] %{ %} , [30] ServiceControls [[p &(parm->lsa_common.ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ListArgumentData")); %} ListArgument [[P struct ds_list_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ListArgument")); %} CHOICE { ListArgumentData [[p parm]] , SEQUENCE { ListArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->lsa_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char*)&sig, (char*)parm->lsa_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ListArgument")); %} ListResultData [[P struct ds_list_result *]] %{ POQ poq_next_s; POQ * poq_next = &(poq_next_s); struct subordinate **sub_next; struct subordinate **subp; struct continuation_ref **crp; struct ds_list_result temp_list; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ListResultData")); parm->lsr_object = NULLDN; parm->lsr_subordinates = NULLSUBORD; parm->lsr_limitproblem = LSR_NOLIMITPROBLEM; parm->lsr_cr = NULLCONTINUATIONREF; parm->lsr_common.cr_requestor = NULLDN; parm->lsr_common.cr_aliasdereferenced = FALSE; sub_next = &(parm->lsr_subordinates); %} CHOICE { listInfo SET { DistinguishedName [[p &(parm->lsr_object)]] %{ %} OPTIONAL , subordinates [1] SET OF %{ (*sub_next) = (struct subordinate *) smalloc(sizeof(struct subordinate)); (*sub_next)->sub_rdn = NULLRDN; (*sub_next)->sub_aliasentry = FALSE; (*sub_next)->sub_copy = E_DATA_MASTER; %} SEQUENCE { RelativeDistinguishedName [[p &((*sub_next)->sub_rdn)]] %{ %} , aliasEntry [0] BOOLEAN [[b (*sub_next)->sub_aliasentry]] %{ %} -- DEFAULT FALSE , OPTIONAL , fromEntry [1] BOOLEAN [[b (*sub_next)->sub_copy]] %{ %} -- DEFAULT TRUE OPTIONAL } %{ sub_next = &((*sub_next)->sub_next); %} %{ (*sub_next) = NULLSUBORD; %} , partialOutcomeQualifier [2] PartialOutcomeQualifier [[p poq_next]] %{ parm->lsr_limitproblem = poq_next->poq_limitproblem; parm->lsr_cr = poq_next->poq_cref; %} OPTIONAL , [30] SecurityParameters [[p ((struct security_parms **) 0)]] OPTIONAL , performer [29] DistinguishedName [[p &(parm->lsr_common.cr_requestor)]] %{ %} OPTIONAL , aliasDereferenced [28] BOOLEAN [[b parm->lsr_common.cr_aliasdereferenced]] %{ %} -- DEFAULT FALSE OPTIONAL } %{ %} , uncorrelatedListInfo [0] SET OF %{ %} ListResult [[p &(temp_list)]] %{ LLOG(log_dsap, LLOG_EXCEPTIONS, ("Uncorrelated ListInfo!")); if(parm->lsr_object == NULLDN) { parm->lsr_object = dn_cpy(temp_list.lsr_object); parm->lsr_common.cr_requestor = dn_cpy(temp_list.lsr_common.cr_requestor); parm->lsr_common.cr_aliasdereferenced = temp_list.lsr_common.cr_aliasdereferenced; } dn_free(temp_list.lsr_object); dn_free(temp_list.lsr_common.cr_requestor); if(parm->lsr_limitproblem == LSR_NOLIMITPROBLEM) { parm->lsr_limitproblem = temp_list.lsr_limitproblem; } if(temp_list.lsr_cr != NULLCONTINUATIONREF) { for(crp = &(parm->lsr_cr); (*crp) != NULLCONTINUATIONREF; crp = &((*crp)->cr_next)); (*crp) = temp_list.lsr_cr; temp_list.lsr_cr = NULLCONTINUATIONREF; } if(temp_list.lsr_subordinates != NULLSUBORD) { for(subp = &(parm->lsr_subordinates); (*subp) != NULLSUBORD; subp = &((*subp)->sub_next)); (*subp) = temp_list.lsr_subordinates; temp_list.lsr_subordinates = NULLSUBORD; } %} %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ListResultData")); %} ListResult [[P struct ds_list_result *]] %{ struct alg_id alg; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ListResult")); %} CHOICE { ListResultData [[p parm]] , SEQUENCE { ListResultData [[p parm]] , AlgorithmIdentifier [[p &alg]], BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ListResult")); %} SearchArgumentData [[P struct ds_search_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode SearchArgumentData")); parm->sra_baseobject = NULLDN; parm->sra_subset = SRA_BASEOBJECT; parm->sra_filter = NULLFILTER; parm->sra_searchaliases = TRUE; eis_def(&(parm->sra_eis)); ca = &(parm->sra_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { baseObject [0] Name [[p &(parm->sra_baseobject)]] %{ %} , subset [1] INTEGER [[i parm->sra_subset]] { baseObject(0) , oneLevel(1) , wholeSubtree(2) } %{ %} -- DEFAULT baseObject , OPTIONAL , filter %{ parm->sra_filter = filter_alloc(); %} [2] Filter [[p parm->sra_filter]] %{ %} -- DEFAULT and {} , OPTIONAL , searchAliases [3] BOOLEAN [[b parm->sra_searchaliases]] -- DEFAULT TRUE , OPTIONAL , selection [4] EntryInformationSelection [[p &(parm->sra_eis)]] %{ %} -- DEFAULT {} , OPTIONAL , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ if(parm->sra_filter == NULLFILTER) { parm->sra_filter = filter_alloc(); flt_def(&(parm->sra_filter)); } DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchArgumentData")); %} SearchArgument [[P struct ds_search_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode SearchArgument")); %} CHOICE { SearchArgumentData [[p parm]] , SEQUENCE { SearchArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->sra_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char*)&sig, (char*)parm->sra_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchArgument")); %} SearchResultData [[P struct ds_search_result *]] %{ struct ds_search_result **srrp; EntryInfo **ent_next; POQ poq_next_s; POQ * poq_next = &(poq_next_s); %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode SearchResultData")); %} CHOICE { searchInfo %{ parm->srr_correlated = TRUE; parm->srr_un.srr_unit = (struct ds_search_unit *) malloc(sizeof(struct ds_search_unit)); parm->CSR_object = NULLDN; parm->CSR_entries = NULLENTRYINFO; parm->CSR_limitproblem = LSR_NOLIMITPROBLEM; parm->CSR_cr = NULLCONTINUATIONREF; parm->CSR_common.cr_requestor = NULLDN; parm->CSR_common.cr_aliasdereferenced = FALSE; ent_next = &(parm->CSR_entries); %} SET { DistinguishedName [[p &(parm->CSR_object)]] %{ %} OPTIONAL , entries [0] SET OF %{ (*ent_next) = entryinfo_alloc(); %} EntryInformation [[p (*ent_next)]] %{ ent_next = &((*ent_next)->ent_next); %} %{ (*ent_next) = NULLENTRYINFO; %} , partialOutcomeQualifier [2] PartialOutcomeQualifier [[p poq_next]] %{ parm->CSR_limitproblem = poq_next->poq_limitproblem; parm->CSR_cr = poq_next->poq_cref; %} OPTIONAL , [30] SecurityParameters [[p ((struct security_parms **) 0)]] OPTIONAL , performer [29] DistinguishedName [[p &(parm->CSR_common.cr_requestor)]] %{ %} OPTIONAL , aliasDereferenced [28] BOOLEAN [[b parm->CSR_common.cr_aliasdereferenced]] %{ %} -- DEFAULT FALSE OPTIONAL } %{ %} , uncorrelatedSearchInfo %{ parm->srr_correlated = FALSE; srrp = &(parm->srr_un.srr_parts); %} [0] SET OF %{ (*srrp) = (struct ds_search_result *) malloc(sizeof(struct ds_search_result)); %} SearchResult [[p (*srrp)]] %{ srrp = &((*srrp)->srr_next); %} %{ (*srrp)->srr_next = NULLSRR; %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchResultData")); %} SearchResult [[P struct ds_search_result *]] %{ struct alg_id alg; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode SearchResult")); %} CHOICE { SearchResultData [[p parm]] , SEQUENCE { SearchResultData [[p parm]] , AlgorithmIdentifier [[p &alg]], BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SearchResult")); %} AddEntryArgumentData [[P struct ds_addentry_arg *]] %{ struct extension **extp; struct common_args * ca; Attr_Sequence attr_tmp; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AddEntryArgumentData")); parm->ada_object = NULLDN; parm->ada_entry = NULLATTR; ca = &(parm->ada_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; extp = &(ca->ca_extensions); ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; %} SET { object [0] DistinguishedName [[p &(parm->ada_object)]] %{ %} , entry [1] SET OF %{ attr_tmp = as_comp_alloc(); attr_tmp->attr_value = NULLAV; attr_tmp->attr_acl = NULLACL_INFO; attr_tmp->attr_link = NULLATTR; %} Attribute [[p attr_tmp]] %{ parm->ada_entry = as_merge(parm->ada_entry, attr_tmp); %} , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AddEntryArgumentData")); %} AddEntryArgument [[P struct ds_addentry_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode AddEntryArgument")); %} CHOICE { AddEntryArgumentData [[p parm]] , SEQUENCE { AddEntryArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->ada_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char*)&sig, (char*)parm->ada_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AddEntryArgument")); %} AddEntryResult ::= NULL RemoveEntryArgumentData [[P struct ds_removeentry_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode RemoveEntryArgumentData")); ca = &(parm->rma_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { object [0] DistinguishedName [[p &(parm->rma_object)]] %{ %} , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode RemoveEntryArgumentData")); %} RemoveEntryArgument [[P struct ds_removeentry_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode RemoveEntryArgument")); %} CHOICE { RemoveEntryArgumentData [[p parm]] , SEQUENCE { RemoveEntryArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->rma_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char*)&sig, (char*)parm->rma_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode RemoveEntryArgument")); %} RemoveEntryResult ::= NULL ModifyEntryArgumentData [[P struct ds_modifyentry_arg *]] %{ struct extension **extp; struct common_args * ca; struct entrymod **em_next; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ModifyEntryArgumentData")); parm->mea_object = NULLDN; parm->mea_changes = NULLMOD; em_next = &(parm->mea_changes); ca = &(parm->mea_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_extensions = NULLEXT; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; extp = &(ca->ca_extensions); %} SET { object [0] DistinguishedName [[p &(parm->mea_object)]] %{ %} , changes [1] SEQUENCE OF %{ (*em_next) = em_alloc(); %} EntryModification [[p (*em_next)]] %{ em_next = &((*em_next)->em_next); %} %{ (*em_next) = NULLMOD; %} , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyEntryArgumentData")); %} ModifyEntryArgument [[P struct ds_modifyentry_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ModifyEntryArgument")); %} CHOICE { ModifyEntryArgumentData [[p parm]] , SEQUENCE { ModifyEntryArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->mea_common.ca_sig = (struct signature *) calloc(1, sizeof(struct signature)); bcopy((char*)&sig, (char*)parm->mea_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyEntryArgument")); %} ModifyEntryResult ::= NULL ModifyRDNArgumentData [[P struct ds_modifyrdn_arg *]] %{ struct extension **extp; struct common_args * ca; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ModifyRDNArgumentData")); parm->mra_object = NULLDN; parm->mra_newrdn = NULLRDN; parm->deleterdn = FALSE; ca = &(parm->mra_common); svc_def(&(ca->ca_servicecontrol)); ca->ca_requestor = NULLDN; ca->ca_progress.op_resolution_phase = 0; ca->ca_progress.op_nextrdntoberesolved = 0; ca->ca_aliased_rdns = CA_NO_ALIASDEREFERENCED; ca->ca_security = (struct security_parms *) 0; ca->ca_sig = (struct signature *) 0; ca->ca_extensions = NULLEXT; extp = &(ca->ca_extensions); %} SET { object [0] DistinguishedName [[p &(parm->mra_object)]] %{ %} , newRDN [1] RelativeDistinguishedName [[p &(parm->mra_newrdn)]] %{ %} , deleteRDN [2] BOOLEAN [[b parm->deleterdn]] %{ %} -- DEFAULT FALSE , OPTIONAL , [30] ServiceControls [[p &(ca->ca_servicecontrol)]] %{ %} -- DEFAULT {} , OPTIONAL , [29] SecurityParameters [[p &(ca->ca_security)]] -- DEFAULT {} , OPTIONAL , requestor [28] DistinguishedName [[p &(ca->ca_requestor)]] %{ %} OPTIONAL , [27] OperationProgress [[p &(ca->ca_progress)]] %{ %} OPTIONAL , aliasedRDNs [26] INTEGER [[i ca->ca_aliased_rdns]] OPTIONAL , extensions [25] SET OF %{ (*extp) = ext_alloc(); %} Extension [[p (*extp)]] %{ extp = &((*extp)->ext_next); %} %{ (*extp) = NULLEXT; %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyRDNArgumentData")); %} ModifyRDNArgument [[P struct ds_modifyrdn_arg *]] %{ struct signature sig; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("At decode ModifyRDNArgument")); %} CHOICE { ModifyRDNArgumentData [[p parm]] , SEQUENCE { ModifyRDNArgumentData [[p parm]] , AlgorithmIdentifier [[p &(sig.alg)]], BIT STRING [[x (sig.encrypted) $ (sig.n_bits)]] } %{ parm->mra_common.ca_sig = (struct signature *) calloc(1, sizeof(sig)); bcopy((char *)&sig, (char *)parm->mra_common.ca_sig, sizeof(sig)); %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ModifyRDNArgument")); %} ModifyRDNResult ::= NULL DirectoryBindError [[P struct ds_bind_error *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode DirectoryBindError")); parm->dbe_version = DBA_VERSION_V1988; %} SET { versions [0] Versions [[p &(parm->dbe_version)]] %{ %} -- DEFAULT v1988 , OPTIONAL , CHOICE { serviceError [1] ServiceProblem [[p &(parm->dbe_value)]] %{ parm->dbe_type = DBE_TYPE_SERVICE; %} , securityError [2] SecurityProblem [[p &(parm->dbe_value)]] %{ parm->dbe_type = DBE_TYPE_SECURITY; %} } %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode DirectoryBindError")); %} AbandonFailedParm [[P struct DSE_abandon_fail *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AbandonFailedParm")); parm->DSE_ab_problem = 0; parm->DSE_ab_invokeid = 0; %} SET %{ %} { problem [0] AbandonProblem [[p &(parm->DSE_ab_problem)]] %{ %} , operation [1] InvokeID [[p &(parm->DSE_ab_invokeid)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AbandonFailedParm")); %} AttributeErrorParm [[P struct DSE_attribute *]] %{ struct DSE_at_problem atp_next; struct DSE_at_problem *atp; int not_first_problem = FALSE; AttributeValue av; AttributeType at; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AttributeErrorParm")); av = AttrV_alloc(); at = AttrT_alloc(); parm->DSE_at_name = NULLDN; parm->DSE_at_plist.DSE_at_what = 0; parm->DSE_at_plist.DSE_at_type = NULLAttrT; parm->DSE_at_plist.DSE_at_value = NULLAttrV; parm->DSE_at_plist.dse_at_next = DSE_AT_NOPROBLEM; atp = &(parm->DSE_at_plist); %} SET %{ %} { object [0] Name [[p &(parm->DSE_at_name)]] %{ %} , problems [1] SET OF %{ %} SEQUENCE %{ atp_next.DSE_at_value = NULLAttrV; atp_next.DSE_at_type = NULLAttrT; %} { problem [0] AttributeProblem [[p &(atp_next.DSE_at_what)]] %{ %} , type [1] AttributeType [[p at]] %{ atp_next.DSE_at_type = at; at = AttrT_alloc (); %} , value [2] AttributeValue [[p av]] %{ atp_next.DSE_at_value = av; av = AttrV_alloc (); %} OPTIONAL } %{ if(not_first_problem) { atp->dse_at_next = (struct DSE_at_problem *) smalloc(sizeof(struct DSE_at_problem)); atp = atp->dse_at_next; } atp->DSE_at_what = atp_next.DSE_at_what; atp->DSE_at_type = atp_next.DSE_at_type; atp->DSE_at_value = atp_next.DSE_at_value; not_first_problem = TRUE; %} %{ atp->dse_at_next = DSE_AT_NOPROBLEM; %} } %{ free ((char*) av); free ((char*) at); DLOG(log_dsap, LLOG_TRACE, ("Done decode AttributeErrorParm")); %} NameErrorParm [[P struct DSE_name *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode NameErrorParm")); parm->DSE_na_problem = 0; parm->DSE_na_matched = NULLDN; %} SET %{ %} { problem [0] NameProblem [[p &(parm->DSE_na_problem)]] %{ %} , matched [1] Name [[p &(parm->DSE_na_matched)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode NameErrorParm")); %} ReferralParm [[P struct DSE_referral *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ReferralParm")); parm->DSE_ref_prefix = NULLDN; parm->DSE_ref_candidates = (ContinuationRef) smalloc(sizeof(continuation_ref)); %} SET %{ %} { candidate [0] ContinuationReference [[p parm->DSE_ref_candidates]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReferralParm")); %} SecurityErrorParm [[P struct DSE_security *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode SecurityErrorParm")); parm->DSE_sc_problem = 0; %} SET %{ %} { problem [0] SecurityProblem [[p &(parm->DSE_sc_problem)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode SecurityErrorParm")); %} ServiceErrorParm [[P struct DSE_service *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ServiceErrorParm")); parm->DSE_sv_problem = 0; %} SET %{ %} { problem [0] ServiceProblem [[p &(parm->DSE_sv_problem)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ServiceErrorParm")); %} UpdateErrorParm [[P struct DSE_update *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode UpdateErrorParm")); parm->DSE_up_problem = 0; %} SET %{ %} { problem [0] UpdateProblem [[p &(parm->DSE_up_problem)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode UpdateErrorParm")); %} END