|
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: 25280 (0x62c0) Types: TextFile Names: »do-dec.py«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape └─⟦eba4602b1⟧ »./isode-5.0.tar.Z« └─⟦d3ac74d73⟧ └─⟦this⟧ »isode-5.0/dsap/x500as/do-dec.py«
-- do-dec.py - manually augmented DistributedOperations module -- $Header: /f/osi/dsap/x500as/RCS/do-dec.py,v 6.0 89/03/18 23:29:27 mrose Rel $ -- -- -- $Log: do-dec.py,v $ -- Revision 6.0 89/03/18 23:29:27 mrose -- Release 5.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. -- -- DO { joint-iso-ccitt ds(5) modules(1) distributedOperations(3) } DEFINITIONS ::= %{ #include "quipu/util.h" #include "quipu/entry.h" #include "quipu/common.h" #include "quipu/dsargument.h" extern LLog * log_dsap; void bcopy (); #define getstr(ss,sl,ds,dl,dn,w) \ if (sl > dn) { \ advise (NULLCP, "%s too long", w); \ return NOTOK; \ } \ bcopy (ss, ds, dl = sl); #define decode_DSE_PSAPaddr parse_DSE_PSAPaddr %} PREFIXES encode decode print BEGIN -- EXPORTS -- ContinuationReference , -- OperationProgress , -- DSAReferralParm; IMPORTS DistinguishedName , Name , RelativeDistinguishedName FROM IF { joint-iso-ccitt ds(5) modules(1) informationFramework(1) } AlgorithmIdentifier FROM AF { joint-iso-ccitt ds(5) modules(1) authenticationFramework(7) } ReadArgument , ReadResult , CompareArgument , CompareResult , AbandonArgument , AbandonResult , ListArgument , ListResult , SearchArgument , SearchResult , AddEntryArgument , AddEntryResult , RemoveEntryArgument , RemoveEntryResult , ModifyEntryArgument , ModifyEntryResult , ModifyRDNArgument , ModifyRDNResult , SecurityParameters FROM DAS { joint-iso-ccitt ds(5) modules(1) directoryAbstractService(2) }; DECODER decode ChainedReadArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedReadArgument")); %} CHOICE { ChainedReadArgumentData [[p parm]] , SEQUENCE { ChainedReadArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedReadArgument")); %} ChainedReadArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedReadArgumentData")); parm->dca_dsarg.arg_type = OP_READ; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] ReadArgument [[p &(parm->dca_dsarg.arg_rd)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedReadArgumentData")); %} ChainedReadResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedReadResult")); %} CHOICE { ChainedReadResultData [[p parm]] , SEQUENCE { ChainedReadResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedReadResult")); %} ChainedReadResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedReadResultData")); parm->dcr_dsres.result_type = OP_READ; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] ReadResult [[p &(parm->dcr_dsres.res_rd)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedReadResultData")); %} ChainedCompareArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedCompareArgument")); %} CHOICE { ChainedCompareArgumentData [[p parm]] , SEQUENCE { ChainedCompareArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedCompareArgument")); %} ChainedCompareArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedCompareArgumentData")); parm->dca_dsarg.arg_type = OP_COMPARE; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] CompareArgument [[p &(parm->dca_dsarg.arg_cm)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedCompareArgumentData")); %} ChainedCompareResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedCompareResult")); %} CHOICE { ChainedCompareResultData [[p parm]] , SEQUENCE { ChainedCompareResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedCompareResult")); %} ChainedCompareResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedCompareResultData")); parm->dcr_dsres.result_type = OP_COMPARE; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] CompareResult [[p &(parm->dcr_dsres.res_cm)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedCompareResultData")); %} ChainedAbandonArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAbandonArgument")); parm->dca_dsarg.arg_type = OP_ABANDON; %} AbandonArgument [[p &(parm->dca_dsarg.arg_ab)]] %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAbandonArgument")); %} ChainedAbandonResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAbandonResult")); parm->dcr_dsres.result_type = OP_ABANDON; %} AbandonResult %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAbandonResult")); %} ChainedListArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedListArgument")); %} CHOICE { ChainedListArgumentData [[p parm]] , SEQUENCE { ChainedListArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedListArgument")); %} ChainedListArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedListArgumentData")); parm->dca_dsarg.arg_type = OP_LIST; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] ListArgument [[p &(parm->dca_dsarg.arg_ls)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedListArgumentData")); %} ChainedListResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedListResult")); %} CHOICE { ChainedListResultData [[p parm]] , SEQUENCE { ChainedListResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedListResult")); %} ChainedListResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedListResultData")); parm->dcr_dsres.result_type = OP_LIST; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] ListResult [[p &(parm->dcr_dsres.res_ls)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedListResultData")); %} ChainedSearchArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedSearchArgument")); %} CHOICE { ChainedSearchArgumentData [[p parm]] , SEQUENCE { ChainedSearchArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedSearchArgument")); %} ChainedSearchArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedSearchArgumentData")); parm->dca_dsarg.arg_type = OP_SEARCH; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] SearchArgument [[p &(parm->dca_dsarg.arg_sr)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedSearchArgumentData")); %} ChainedSearchResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedSearchResult")); %} CHOICE { ChainedSearchResultData [[p parm]] , SEQUENCE { ChainedSearchResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedSearchResult")); %} ChainedSearchResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedSearchResultData")); parm->dcr_dsres.result_type = OP_SEARCH; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] SearchResult [[p &(parm->dcr_dsres.res_sr)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedSearchResultData")); %} ChainedAddEntryArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAddEntryArgument")); %} CHOICE { ChainedAddEntryArgumentData [[p parm]] , SEQUENCE { ChainedAddEntryArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAddEntryArgument")); %} ChainedAddEntryArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAddEntryArgumentData")); parm->dca_dsarg.arg_type = OP_ADDENTRY; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] AddEntryArgument [[p &(parm->dca_dsarg.arg_ad)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAddEntryArgumentData")); %} ChainedAddEntryResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAddEntryResult")); %} CHOICE { ChainedAddEntryResultData [[p parm]] , SEQUENCE { ChainedAddEntryResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAddEntryResult")); %} ChainedAddEntryResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedAddEntryArgumentResultData")); parm->dcr_dsres.result_type = OP_ADDENTRY; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] AddEntryResult } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedAddEntryArgumentResultData")); %} ChainedRemoveEntryArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedRemoveEntryArgument")); %} CHOICE { ChainedRemoveEntryArgumentData [[p parm]] , SEQUENCE { ChainedRemoveEntryArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedRemoveEntryArgument")); %} ChainedRemoveEntryArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedRemoveEntryArgumentData")); parm->dca_dsarg.arg_type = OP_REMOVEENTRY; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] RemoveEntryArgument [[p &(parm->dca_dsarg.arg_rm)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedRemoveEntryArgumentData")); %} ChainedRemoveEntryResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedRemoveEntryResult")); %} CHOICE { ChainedRemoveEntryResultData [[p parm]] , SEQUENCE { ChainedRemoveEntryResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedRemoveEntryResult")); %} ChainedRemoveEntryResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedRemoveEntryResultData")); parm->dcr_dsres.result_type = OP_REMOVEENTRY; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] RemoveEntryResult } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedRemoveEntryResultData")); %} ChainedModifyEntryArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyEntryArgument")); %} CHOICE { ChainedModifyEntryArgumentData [[p parm]] , SEQUENCE { ChainedModifyEntryArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyEntryArgument")); %} ChainedModifyEntryArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyEntryArgumentData")); parm->dca_dsarg.arg_type = OP_MODIFYENTRY; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] ModifyEntryArgument [[p &(parm->dca_dsarg.arg_me)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyEntryArgumentData")); %} ChainedModifyEntryResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyEntryResult")); %} CHOICE { ChainedModifyEntryResultData [[p parm]] , SEQUENCE { ChainedModifyEntryResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyEntryResult")); %} ChainedModifyEntryResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyEntryResultData")); parm->dcr_dsres.result_type = OP_MODIFYENTRY; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] ModifyEntryResult } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyEntryResultData")); %} ChainedModifyRDNArgument [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyRDNArgument")); %} CHOICE { ChainedModifyRDNArgumentData [[p parm]] , SEQUENCE { ChainedModifyRDNArgumentData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyRDNArgument")); %} ChainedModifyRDNArgumentData [[P struct ds_op_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyRDNArgumentData")); parm->dca_dsarg.arg_type = OP_MODIFYRDN; %} SET { ChainingArgument [[p &(parm->dca_charg)]] , [0] ModifyRDNArgument [[p &(parm->dca_dsarg.arg_mr)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyRDNArgumentData")); %} ChainedModifyRDNResult [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyRDNResult")); %} CHOICE { ChainedModifyRDNResultData [[p parm]] , SEQUENCE { ChainedModifyRDNResultData [[p parm]] , AlgorithmIdentifier , BIT STRING } } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyRDNResult")); %} ChainedModifyRDNResultData [[P struct ds_op_res *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainedModifyRDNResultData")); parm->dcr_dsres.result_type = OP_MODIFYRDN; %} SET { ChainingResult [[p &(parm->dcr_chres)]] , [0] ModifyRDNResult } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainedModifyRDNResultData")); %} DSAReferralParm [[P struct DSE_referral *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode DSAReferralParm")); parm->DSE_ref_prefix = NULLDN; parm->DSE_ref_candidates = (ContinuationRef) smalloc(sizeof(continuation_ref)); %} SET { [0] ContinuationReference [[p parm->DSE_ref_candidates]] , contextPrefix [1] DistinguishedName [[p &(parm->DSE_ref_prefix)]] OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode DSAReferralParm")); %} ChainingArgument [[P struct chain_arg *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainingArgument")); parm->cha_originator = NULLDN; parm->cha_target = NULLDN; parm->cha_progress.op_resolution_phase = OP_PHASE_NOTSTARTED; parm->cha_progress.op_nextrdntoberesolved = 0; parm->cha_aliasderef = FALSE; parm->cha_aliasedrdns = 0; parm->cha_returnrefs = FALSE; parm->cha_reftype = RT_SUPERIOR; parm->cha_domaininfo = NULLPE; %} SET { originator [0] DistinguishedName [[p &(parm->cha_originator)]] OPTIONAL , targetObject [1] DistinguishedName [[p &(parm->cha_target)]] OPTIONAL , operationProgress [2] OperationProgress [[p &(parm->cha_progress)]] -- DEFAULT {notStarted} , OPTIONAL , traceInformation [3] TraceInformation [[p &(parm->cha_trace)]] , aliasDereferenced [4] BOOLEAN [[b parm->cha_aliasderef]] -- DEFAULT FALSE , OPTIONAL , aliasedRDNs [5] INTEGER [[i parm->cha_aliasedrdns]] OPTIONAL , -- absent unless aliasDereferenced is TRUE returnCrossRefs [6] BOOLEAN [[b parm->cha_returnrefs]] -- DEFAULT FALSE , OPTIONAL , referenceType [7] ReferenceType [[p &(parm->cha_reftype)]] -- DEFAULT superior , OPTIONAL , info [8] DomainInfo [[p &(parm->cha_domaininfo)]] OPTIONAL , timeLimit [9] UTCTime OPTIONAL , [10] SecurityParameters -- DEFAULT {} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainingArgument")); %} ChainingResult [[P struct chain_res *]] %{ struct cross_ref **xrefp; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ChainingResult")); parm->chr_domaininfo = NULLPE; parm->chr_crossrefs = NULLXREF; %} SET { info [0] DomainInfo [[p &(parm->chr_domaininfo)]] OPTIONAL , crossReferences %{ xrefp = &(parm->chr_crossrefs); %} [1] SEQUENCE OF %{ (*xrefp) = (struct cross_ref *) smalloc(sizeof(struct cross_ref)); %} CrossReference [[p (*xrefp)]] %{ xrefp = &((*xrefp)->xref_next); %} %{ (*xrefp) = NULLXREF; %} OPTIONAL , [2] SecurityParameters -- DEFAULT {} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ChainingResult")); %} CrossReference [[P struct cross_ref *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode CrossReference")); parm->xref_dn = NULLDN; parm->xref_ap = NULLACCESSPOINT; %} SET { contextPrefix [0] DistinguishedName [[p &(parm->xref_dn)]] , accessPoint [1] AccessPoint [[p parm->xref_ap]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode CrossReference")); %} ReferenceType [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ReferenceType")); %} ENUMERATED [[i (*parm)]] { superior(1) , subordinate(2) , cross(3) , nonSpecificSubordinate(4) } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ReferenceType")); %} TraceInformation [[P struct trace_info **]] %{ struct trace_info **tip; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode TraceInformation")); (*parm) = NULLTRACEINFO; tip = parm; %} SEQUENCE OF %{ (*tip) = (struct trace_info *) malloc(sizeof(struct trace_info)); %} TraceItem [[p (*tip)]] %{ tip = &((*tip)->ti_next); %} %{ (*tip) = NULLTRACEINFO; DLOG(log_dsap, LLOG_TRACE, ("Done decode TraceInformation")); %} TraceItem [[P struct trace_info *]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode TraceItem")); parm->ti_dsa = NULLDN; parm->ti_target = NULLDN; %} SET { dsa [0] Name [[p &(parm->ti_dsa)]] , targetObject [1] Name [[p &(parm->ti_target)]] OPTIONAL , operationProgress [2] OperationProgress [[p &(parm->ti_progress)]] } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode TraceItem")); %} OperationProgress [[P struct op_progress *]] %{ int phase; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode OperationProgress")); parm->op_resolution_phase = 0; parm->op_nextrdntoberesolved = 0; %} SET { nameResolutionPhase [0] ENUMERATED [[i phase]] { notStarted(1) , proceeding(2) , completed(3) } %{ parm->op_resolution_phase = phase - 1; %} , nextRDNToBeResolved [1] INTEGER [[i parm->op_nextrdntoberesolved]] %{ %} OPTIONAL } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode OperationProgress")); %} DomainInfo [[P PE *]] %{ PE old_pe; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode DomainInfo")); %} ANY [[a old_pe]] %{ (*parm) = pe_cpy(old_pe); DLOG(log_dsap, LLOG_TRACE, ("Done decode DomainInfo")); %} ContinuationReference [[P struct continuation_ref *]] %{ struct access_point *app; int not_first_ap; %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode ContinuationReference")); parm->cr_name = NULLDN; parm->cr_rdn_resolved = CR_RDNRESOLVED_NOTDEFINED; parm->cr_reftype = RT_UNDEFINED; parm->cr_next = NULLCONTINUATIONREF; app = &(parm->cr_accesspoints); app->ap_name = NULLDN; app->ap_address.pa_selectlen = 0; app->ap_address.pa_addr.sa_selectlen = 0; app->ap_address.pa_addr.sa_addr.ta_selectlen = 0; app->ap_address.pa_addr.sa_addr.ta_naddr = 0; app->ap_next = NULLACCESSPOINT; not_first_ap = FALSE; %} SET { targetObject [0] Name [[p &(parm->cr_name)]] %{ %} , aliasedRDNs [1] INTEGER [[i parm->cr_aliasedRDNs]] %{ %} OPTIONAL , operationProgress [2] OperationProgress [[p &(parm->cr_progress)]] %{ %} , rdnsResolved [3] INTEGER [[i parm->cr_rdn_resolved]] %{ %} OPTIONAL , referenceType [4] ReferenceType [[p &(parm->cr_reftype)]] %{ %} OPTIONAL , accessPoints [5] SET OF %{ if(not_first_ap) { app->ap_next = (struct access_point *) smalloc(sizeof(struct access_point)); app = app->ap_next; } not_first_ap = TRUE; %} AccessPoint [[p app]] %{ %} %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode ContinuationReference")); %} AccessPoint [[P struct access_point *]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode AccessPoint")); parm->ap_name = NULLDN; parm->ap_next = NULLACCESSPOINT; %} SET { [0] Name [[p &(parm->ap_name)]] %{ %} , [1] ISODEPresentationAddress [[p &(parm->ap_address)]] %{ %} } %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode AccessPoint")); %} ISODEPresentationAddress [[P struct PSAPaddr * ]] ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode PresentationAddress")); %} DSE.PSAPaddr [[p parm]] %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode PresentationAddress")); %} InvokeID [[P int*]] %{ %} ::= %{ DLOG(log_dsap, LLOG_TRACE, ("About to decode InvokeID")); %} INTEGER [[i (*parm)]] %{ DLOG(log_dsap, LLOG_TRACE, ("Done decode InvokeID")); %} END