1 01/30/73 ACL primitives
2
3 The following hcs_ entry points are available for reading and setting
4 the ACL's of storage system branches segments and directories:
5
6
7 dcl hcs_$list_acl entrychar*char*ptrptrptr
8 fixed binfixed bin35;
9 call hcs_$list_acldirentryarea_ptralloc_ptracl_ptr
10 acl_countcode;
11
12 dcl hcs_$list_dir_acl entrychar*char*ptrptrptr
13 fixed binfixed bin35;
14 call hcs_$list_dir_acldirentryarea_ptralloc_ptr
15 dir_acl_ptracl_countcode;
16
17 dcl hcs_$add_acl_entries entrychar*char*ptr
18 fixed binfixed bin35;
19 call hcs_$add_acl_entriesdirentryacl_ptracl_count
20 code;
21
22 dcl hcs_$add_dir_acl_entries entrychar*char*ptrfixed bin
23 fixed bin35;
24 call hcs_$add_dir_acl_entriesdirentrydir_acl_ptr
25 acl_countcode;
26
27 dcl hcs_$delete_acl_entries entrychar*char*ptr
28 fixed binfixed bin35;
29 call hcs_$delete_acl_entriesdirentrydelete_acl_ptr
30 acl_countcode;
31
32 dcl hcs_$delete_dir_acl_entries entrychar*char*ptr
33 fixed binfixed bin35;
34 call hcs_$delete_dir_acl_entriesdirentrydelete_acl_ptr
35 acl_count code;
36
37 dcl hcs_$replace_acl entrychar*char*ptr
38 fixed binbit1 alignedfixed bin35;
39 call hcs_$replace_acldirentryacl_ptracl_count
40 no_sysdaemon_swcode;
41
42 dcl hcs_$replace_dir_acl entrychar*char*ptr
43 fixed binbit1 alignedfixed bin35;
44 call hcs_$replace_dir_acldirentrydir_acl_ptr
45 acl_countno_sysdaemon_swcode;
46
47
48 Arguments:
49 The arguments are similar in meaning to the old
50 hcs_$acl_...arguments. Note that separate entries are
51 provided for segments and directories, and that there are
52 three structures: one for segments, one for directories,
53 and one for deleting acls of both segments and directories.
54 hcs_$list_acl and hcs_$list_dir_acl now take another
55 argument, alloc_ptr, which is returned when listing the
56 entire acl; otherwise, only the modes of the entries in the
57 acl_ptr structure will be filled in if found.
58 To delete an entire acl, hcs_$replace_acl with
59 an acl_count = 0 and no_sysdaemon_sw = "1"b can be used
60 for segments.
61
62 dir char168 pathname of the directory Input.
63 entry char32 name of the entry in the dir Input.
64 acl_ptr ptr points to an acl structure Input
65 except in acl_list where if whole acl
66 is wanted it is set to null.
67 dir_acl_ptr ptr as acl_ptr except points to dir_acl
68 structure.
69 acl_count fixed bin no. of acls in structure Input
70 except when listing the entire acl
71 then output.
72 area_ptr ptr points to area where acl list is to
73 be allocated when listing whole acl;
74 otherwise, it must be null.
75 alloc_ptr set to allocated list in area when
76 listing whole acl Output.
77 no_sysdaemon_sw bit1 aligned
78 if "0"b then *.SysDaemon.* rwa sma
79 will be appended to top of replacement
80 list.Lower list entries may overwrite
81 this. If "1"b then above isn't done.
82 code fixed bin35
83 standard error code. If not 0 then
84 function was not performed.
85
86
87 List of structures used:
88
89 dcl 1 aclacl_count basedacl_ptr aligned,
90 2 access_name char32,
91 2 mode bit36, bits 1-4 are rewa
92 rest must be 0.
93 2 pad bit36, must be 0.
94 2 error_code fixed bin35;
95
96 dcl 1 dir_aclacl_count baseddir_acl_ptr aligned,
97 2 access_name char32,
98 2 dir_mode bit36 bit 1-3 are sma
99 rest must be 0.
100 2 error_code fixed bin35;
101
102 dcl 1 del_aclacl_count baseddel_acl_ptr aligned,
103 2 access_name char32,
104 2 error_code fixed bin35;
105
106 access_name is of the form Name.Project.Tag. Each of
107 the components must be present and may be "*".