1/* 2 Copyright (c) 2008,2009 Frank Lahm <franklahm@gmail.com> 3 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. 8 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. 13 */ 14 15#ifndef ACL_MAPPINGS 16#define ACL_MAPPINGS 17 18#ifdef HAVE_SOLARIS_ACLS 19#include <sys/acl.h> 20#endif 21 22#include "acls.h" 23 24/* 25 * Stuff for mapping between ACL implementations 26 */ 27 28/* Solaris 10u8 still hasn't got ACE_INHERITED_ACE */ 29#ifndef ACE_INHERITED_ACE 30#define ACE_INHERITED_ACE 0x0080 31#endif 32 33struct ace_rights_map { 34 u_int32_t from; 35 u_int32_t to; 36}; 37 38#ifdef HAVE_SOLARIS_ACLS 39struct 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}, 53 {0,0} 54}; 55 56struct 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}, 70 {0,0} 71}; 72 73struct nfsv4_to_darwin_flags_map { 74 u_int16_t from; 75 u_int32_t to; 76}; 77 78struct 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}, 84 {0,0} 85}; 86 87struct darwin_to_nfsv4_flags_map { 88 u_int32_t from; 89 u_int16_t to; 90}; 91 92struct 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}, 98 {0,0} 99}; 100#endif /* HAVE_SOLARIS_ACLS */ 101 102#endif /* ACL_MAPPINGS */ 103