2 Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
18 #ifdef HAVE_SOLARIS_ACLS
25 * Stuff for mapping between ACL implementations
28 /* Solaris 10u8 still hasn't got ACE_INHERITED_ACE */
29 #ifndef ACE_INHERITED_ACE
30 #define ACE_INHERITED_ACE 0x0080
33 struct ace_rights_map {
38 #ifdef HAVE_SOLARIS_ACLS
39 struct ace_rights_map nfsv4_to_darwin_rights[] = {
40 {ACE_READ_DATA, DARWIN_ACE_READ_DATA},
41 {ACE_WRITE_DATA, DARWIN_ACE_WRITE_DATA},
42 {ACE_APPEND_DATA, DARWIN_ACE_APPEND_DATA},
43 {ACE_READ_NAMED_ATTRS, DARWIN_ACE_READ_EXTATTRIBUTES},
44 {ACE_WRITE_NAMED_ATTRS, DARWIN_ACE_WRITE_EXTATTRIBUTES},
45 {ACE_EXECUTE, DARWIN_ACE_EXECUTE},
46 {ACE_DELETE_CHILD, DARWIN_ACE_DELETE_CHILD},
47 {ACE_READ_ATTRIBUTES, DARWIN_ACE_READ_ATTRIBUTES},
48 {ACE_WRITE_ATTRIBUTES, DARWIN_ACE_WRITE_ATTRIBUTES},
49 {ACE_DELETE, DARWIN_ACE_DELETE},
50 {ACE_READ_ACL, DARWIN_ACE_READ_SECURITY},
51 {ACE_WRITE_ACL, DARWIN_ACE_WRITE_SECURITY},
52 {ACE_WRITE_OWNER, DARWIN_ACE_TAKE_OWNERSHIP},
56 struct ace_rights_map darwin_to_nfsv4_rights[] = {
57 {DARWIN_ACE_READ_DATA, ACE_READ_DATA},
58 {DARWIN_ACE_WRITE_DATA, ACE_WRITE_DATA},
59 {DARWIN_ACE_APPEND_DATA, ACE_APPEND_DATA},
60 {DARWIN_ACE_READ_EXTATTRIBUTES, ACE_READ_NAMED_ATTRS},
61 {DARWIN_ACE_WRITE_EXTATTRIBUTES, ACE_WRITE_NAMED_ATTRS},
62 {DARWIN_ACE_EXECUTE, ACE_EXECUTE},
63 {DARWIN_ACE_DELETE_CHILD, ACE_DELETE_CHILD},
64 {DARWIN_ACE_READ_ATTRIBUTES, ACE_READ_ATTRIBUTES},
65 {DARWIN_ACE_WRITE_ATTRIBUTES, ACE_WRITE_ATTRIBUTES},
66 {DARWIN_ACE_DELETE, ACE_DELETE},
67 {DARWIN_ACE_READ_SECURITY, ACE_READ_ACL},
68 {DARWIN_ACE_WRITE_SECURITY, ACE_WRITE_ACL},
69 {DARWIN_ACE_TAKE_OWNERSHIP, ACE_WRITE_OWNER},
73 struct nfsv4_to_darwin_flags_map {
78 struct nfsv4_to_darwin_flags_map nfsv4_to_darwin_flags[] = {
79 {ACE_FILE_INHERIT_ACE, DARWIN_ACE_FLAGS_FILE_INHERIT},
80 {ACE_DIRECTORY_INHERIT_ACE, DARWIN_ACE_FLAGS_DIRECTORY_INHERIT},
81 {ACE_NO_PROPAGATE_INHERIT_ACE, DARWIN_ACE_FLAGS_LIMIT_INHERIT},
82 {ACE_INHERIT_ONLY_ACE, DARWIN_ACE_FLAGS_ONLY_INHERIT},
83 {ACE_INHERITED_ACE, DARWIN_ACE_FLAGS_INHERITED},
87 struct darwin_to_nfsv4_flags_map {
92 struct darwin_to_nfsv4_flags_map darwin_to_nfsv4_flags[] = {
93 {DARWIN_ACE_FLAGS_FILE_INHERIT, ACE_FILE_INHERIT_ACE},
94 {DARWIN_ACE_FLAGS_DIRECTORY_INHERIT, ACE_DIRECTORY_INHERIT_ACE},
95 {DARWIN_ACE_FLAGS_LIMIT_INHERIT, ACE_NO_PROPAGATE_INHERIT_ACE},
96 {DARWIN_ACE_FLAGS_ONLY_INHERIT, ACE_INHERIT_ONLY_ACE},
97 {DARWIN_ACE_FLAGS_INHERITED, ACE_INHERITED_ACE},
100 #endif /* HAVE_SOLARIS_ACLS */
102 #endif /* ACL_MAPPINGS */