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