-- CHACLOpsP127V1ServerImpl.Mesa
-- Copyright Ó 1991 by Xerox Corporation. All rights reserved.
-- Copyright (C) 1986 by Xerox Corporation. All rights reserved.
-- Generated by Demers.pa at February 11, 1987 8:00:11 pm PST
-- using Sirocco [2.0] of January 31, 1987 1:52:42 am PST
DIRECTORY
CrRPC,
CHNameP2V0,
AuthenticationP14V2,
CHOpsP2V3,
BulkDataP0V1,
CHACLOpsP127V1;
CHACLOpsP127V1ServerImpl: CEDAR PROGRAM
IMPORTS CrRPC, CHACLOpsP127V1 ~ {
OPEN CHACLOpsP127V1;
IsInDomainACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
domain: CHNameP2V0.TwoPartName;
acl: AccessList;
secondaryProperty: CARD32;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
inACL: BOOLEAN;
{
domain.organization ¬ CrRPC.GetRope[s];
domain.domain ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
secondaryProperty ¬ CrRPC.GetCard32[s];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[inACL] ¬ IsInDomainACL[h, domain, acl, secondaryProperty, member, agent];
beginReturn[h];
{
CrRPC.PutBool[s, inACL];
};
};
AddMemberToPropertyACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
acl: AccessList;
newMember: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
newMember.organization ¬ CrRPC.GetRope[s];
newMember.domain ¬ CrRPC.GetRope[s];
newMember.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[distinguishedObject] ¬ AddMemberToPropertyACL[h, name, property, acl, newMember, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
RetrievePropertyACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
acl: AccessList;
membership: CrRPC.BulkDataSink;
agent: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
TRUSTED {
membership ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[distinguishedObject] ¬ RetrievePropertyACL[h, name, property, acl, membership, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
IsInPropertyACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
acl: AccessList;
secondaryProperty: CARD32;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
inACL: BOOLEAN;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
secondaryProperty ¬ CrRPC.GetCard32[s];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[inACL, distinguishedObject] ¬ IsInPropertyACL[h, name, property, acl, secondaryProperty, member, agent];
beginReturn[h];
{
CrRPC.PutBool[s, inACL];
};
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
RetrieveOrganizationACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
organization: ROPE;
acl: AccessList;
membership: CrRPC.BulkDataSink;
agent: CHOpsP2V3.Authenticator;
{
organization ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
TRUSTED {
membership ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[] ¬ RetrieveOrganizationACL[h, organization, acl, membership, agent];
beginReturn[h];
};
DeleteMemberFromOrganizationACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
organization: ROPE;
acl: AccessList;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
{
organization ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[] ¬ DeleteMemberFromOrganizationACL[h, organization, acl, member, agent];
beginReturn[h];
};
AddMemberToDomainACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
domain: CHNameP2V0.TwoPartName;
acl: AccessList;
newMember: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
{
domain.organization ¬ CrRPC.GetRope[s];
domain.domain ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
newMember.organization ¬ CrRPC.GetRope[s];
newMember.domain ¬ CrRPC.GetRope[s];
newMember.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[] ¬ AddMemberToDomainACL[h, domain, acl, newMember, agent];
beginReturn[h];
};
DeleteMemberFromDomainACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
domain: CHNameP2V0.TwoPartName;
acl: AccessList;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
{
domain.organization ¬ CrRPC.GetRope[s];
domain.domain ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[] ¬ DeleteMemberFromDomainACL[h, domain, acl, member, agent];
beginReturn[h];
};
RetrieveDomainACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
domain: CHNameP2V0.TwoPartName;
acl: AccessList;
membership: CrRPC.BulkDataSink;
agent: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
domain.organization ¬ CrRPC.GetRope[s];
domain.domain ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
TRUSTED {
membership ¬ CrRPC.GetBulkDataSink[h, s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[distinguishedObject] ¬ RetrieveDomainACL[h, domain, acl, membership, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
IsInOrganizationACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
organization: ROPE;
acl: AccessList;
secondaryProperty: CARD32;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
inACL: BOOLEAN;
{
organization ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
secondaryProperty ¬ CrRPC.GetCard32[s];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[inACL] ¬ IsInOrganizationACL[h, organization, acl, secondaryProperty, member, agent];
beginReturn[h];
{
CrRPC.PutBool[s, inACL];
};
};
DeleteMemberFromPropertyACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
name: CHNameP2V0.ThreePartName;
property: CARD32;
acl: AccessList;
member: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
distinguishedObject: CHNameP2V0.ThreePartName;
{
name.organization ¬ CrRPC.GetRope[s];
name.domain ¬ CrRPC.GetRope[s];
name.object ¬ CrRPC.GetRope[s];
};
{
property ¬ CrRPC.GetCard32[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
member.organization ¬ CrRPC.GetRope[s];
member.domain ¬ CrRPC.GetRope[s];
member.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[distinguishedObject] ¬ DeleteMemberFromPropertyACL[h, name, property, acl, member, agent];
beginReturn[h];
{
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
};
};
AddMemberToOrganizationACLCaller: PROC [h: CrRPC.Handle, s: CrRPC.STREAM, beginReturn: CrRPC.BeginReturnProc] ~ {
organization: ROPE;
acl: AccessList;
newMember: CHNameP2V0.ThreePartName;
agent: CHOpsP2V3.Authenticator;
{
organization ¬ CrRPC.GetRope[s];
};
{
acl ¬ VAL[CrRPC.GetCard16[s]];
};
{
newMember.organization ¬ CrRPC.GetRope[s];
newMember.domain ¬ CrRPC.GetRope[s];
newMember.object ¬ CrRPC.GetRope[s];
};
{
agent.credentials.type ¬ VAL[CrRPC.GetCard16[s]];
agent.credentials.value ¬ UProc3[h, s];
agent.verifier ¬ UProc3[h, s];
};
[] ¬ AddMemberToOrganizationACL[h, organization, acl, newMember, agent];
beginReturn[h];
};
Server: CrRPC.ServerProc ~ {
-- [h: Handle, s: STREAM, pgm: CARD32, pgmVersion: CARD16, proc: CARD16, beginReturn: BeginReturnProc, beginError: BeginErrorProc, beginReject: BeginRejectProc]
ENABLE {
CHACLOpsP127V1.PropertyError => { -- (3 )
beginError[h, 3 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
GOTO Finished;
};
CHACLOpsP127V1.ArgumentError => { -- (2 )
beginError[h, 2 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutCard16[s, ORD[which]];
GOTO Finished;
};
CHACLOpsP127V1.CallError => { -- (1 )
beginError[h, 1 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
CHACLOpsP127V1.UpdateError => { -- (4 )
beginError[h, 4 ];
CrRPC.PutCard16[s, ORD[problem]];
CrRPC.PutBool[s, found];
CrRPC.PutCard16[s, ORD[which]];
CrRPC.PutRope[s, distinguishedObject.organization];
CrRPC.PutRope[s, distinguishedObject.domain];
CrRPC.PutRope[s, distinguishedObject.object];
GOTO Finished;
};
CHACLOpsP127V1.ListNotFound => { -- (7 )
beginError[h, 7 ];
GOTO Finished;
};
CHACLOpsP127V1.AuthenticationError => { -- (6 )
beginError[h, 6 ];
CrRPC.PutCard16[s, ORD[problem]];
GOTO Finished;
};
CHACLOpsP127V1.WrongServer => { -- (5 )
beginError[h, 5 ];
CrRPC.PutRope[s, hint.organization];
CrRPC.PutRope[s, hint.domain];
CrRPC.PutRope[s, hint.object];
GOTO Finished;
};
};
IF (pgmVersion # 1) THEN {
beginReject[h, CrRPC.noSuchVersion];
CrRPC.PutCard16[s, 1]; --low
CrRPC.PutCard16[s, 1]; --high
RETURN
};
SELECT proc FROM
37 => IsInDomainACLCaller[h, s, beginReturn];
31 => AddMemberToPropertyACLCaller[h, s, beginReturn];
30 => RetrievePropertyACLCaller[h, s, beginReturn];
33 => IsInPropertyACLCaller[h, s, beginReturn];
38 => RetrieveOrganizationACLCaller[h, s, beginReturn];
40 => DeleteMemberFromOrganizationACLCaller[h, s, beginReturn];
35 => AddMemberToDomainACLCaller[h, s, beginReturn];
36 => DeleteMemberFromDomainACLCaller[h, s, beginReturn];
34 => RetrieveDomainACLCaller[h, s, beginReturn];
41 => IsInOrganizationACLCaller[h, s, beginReturn];
32 => DeleteMemberFromPropertyACLCaller[h, s, beginReturn];
39 => AddMemberToOrganizationACLCaller[h, s, beginReturn];
ENDCASE => {
beginReject[h, CrRPC.noSuchProcedure];
};
EXITS
Finished => { NULL };
};
-- Unmarshal / Marshal Procs --
UProc3: PROC [h: CrRPC.Handle, s: CrRPC.STREAM] RETURNS [res: AuthenticationP14V2.SeqWords] ~ {
{
length5: CARDINAL ~ CrRPC.GetCard16[s];
res ¬ NEW[AuthenticationP14V2.SeqWordsObject[length5]];
FOR i4: CARDINAL IN [0..length5) DO
res.body[i4] ¬ CrRPC.GetCard16[s];
ENDLOOP;
};
};
CrRPC.RegisterServerProc[pgm~127, serverProc~Server, pgmVersion~1];
CrRPC.EnsureListener[class~$SPP];
}...